【AWS Lambda】自作関数をクラウド上で作成・実行する方法|Python・Ruby・Java・Node.js等対応

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • Python・Ruby・Node.js等で作成した自作関数をAWS上で自動実行できるようにしたい。
  • AWS Lambdaの利用方法が知りたい。
目次

AWS Lambdaとは

AWS Lambdaとは、自身で作成した関数をリクエスト(イベント発生)の都度、自動で実行できるようにするサーバーレスコンピューティングサービスです。

Lambdaは、特定のイベントをトリガーとして、ランタイムがセットアップされたコンテナ内で関数を実行します。以下、具体的な特徴を見ていきましょう!

  • サーバーのプロビジョニングや管理をすることなく、アプリケーションやバックエンドサービスのコードが実行可能。
  • 関数をLambdaに保存すると、その関数がリクエストやイベントをトリガーとして自動実行できる。
  • Java、Go、PowerShell、Node.js、C#、Python、Rubyをネイティブとしてサポートしている。その他の言語は Runtime APIを別途用いることで対応可能。
  • 定期的なダウンタイムはなく、可用性が高い。
  • 最長15分まで関数の実行が可能。

本記事はAWS公式情報(https://aws.amazon.com/)を引用したノウハウを配信しています。

AWS Lambdaの利用料金

Lambdaはリクエストとコードを実行するために要した処理実行時間(期間)でコストが発生します。

アーキテクチャ期間(GB-秒)あたりリクエスト(100万件あたり)
x86 料金0.0000166667USD0.20USD
Arm 料金0.0000133334USD0.20USD
AWS公式HP(https://aws.amazon.com/jp/lambda/pricing/)引用

期間は関数に割り当てるメモリ量により変動します。詳しくは上記のAWS公式HPの料金表をご覧下さい。

Lambda関数の作成・実行手順

本記事では下記の手順に従い、Lambda関数を作成・実行します。

  1. AWSマネジメントコンソールにログインし、AWS Lambdaのコンソールを開く
  2. AWS Lambdaコンソール右上の「関数の作成」をクリック
  3. 関数作成に必要な情報を入力し「関数の作成」をクリック
  4. デフォルトで作成された関数の動作テスト
  5. オリジナルの関数を作成
  6. オリジナルの関数の動作テスト
  7. 「トリガーを追加」を選択し、関数を実行するイベントを定義

【実践】Lambda関数の作成

AWSマネジメントコンソールにログインし、AWS Lambdaのコンソールを開く

AWSマネジメントコンソールにログインし、「AWS Lambda」と検索し、Lambdaコンソールを開きます。

AWS Lambdaコンソール右上の「関数の作成」をクリック

Lambdaコンソール左部の「関数」をクリックすると、関数一覧が表示されます。

画面右上の「関数の作成」ボタンがクリックしましょう。

関数作成に必要な情報を入力し「関数の作成」をクリック

この画面では関数作成に必要な情報を入力していきます。以下、入力事項を1つずつ見ていきましょう。

関数の作成オプション

デフォルトで作成されるLambda関数の形式を選択します。今回は「1から作成」を選択し、後述の関数を作成していくこととします。

スクロールできます
1から作成Hello worldを出力するシンプルな関数をデフォルトとして作成
設計図を使用AWSに用意された一般的ユースケース用のサンプルコードとデフォルトの設定値をもとLambdaアプリケーションを構築
コンテナイメージ関数にデプロイするコンテナイメージ選択
Serverless Application Repository参照AWS Serverless Application RepositoryからLambdaアプリケーションでデプロイ

基本情報の入力

スクロールできます
関数名関数名を入力
ランタイム関数の記述に使用する言語選択
アーキテクチャ関数コードに必要な命令セットアーキテクチャ選択
アクセス権限実行ロールにポリシーを追加すると、DynamoDBやS3などのダウンストリームリソースへのアクセスが可能
詳細設定コード書面の有効化やネットワークを有効化設定

上記基本情報入力後、画面右下の「関数の作成」をクリックしましょう。

デフォルトで作成された関数の動作テスト

10秒程待機すると、作成された関数が画面に表示されます。

デフォルトで作成されたLambda関数の確認

画面中央左部の「コード」タグを選択すると、コードソースが確認できます。

前述の「関数の作成オプション」で指定した関数(lambda_function)がデフォルトで作成されています。

以下この関数の動作テストを行なってみましょう。

デフォルトで作成されたLambda関数の動作テスト

「テスト」タグを選択し、右部の「テスト」ボタンをクリックします。

関数実行時にエラーが出なければ、画面上に「成功」と表示されます。

また、ログをクリックすると関数実行による出力結果等が確認できます。

オリジナルの関数を作成

画面中央左部の「コード」タグを再び選択して、オリジナルの関数を作成していきます。

例えば上図の例では、デフォルトで作成されたlambda_function.pyと同じディレクトリにexecute.pyという自作スクリプトを新たに用意しました。

加えてlambdas_function.pyを開き、execute.pyに記述したオリジナル関数をインポート・実行できるよう修正しています。

関数作成後は右上に表示されるDeploy(デプロイ)をクリックしましょう。

オリジナルの関数の動作テスト

関数の作成およびデプロイが完了したら、再び動作テストを行ないエラーがでないか確認しましょう。

【実践】Lambda関数の実行

前述までで関数の作成が完了しました。後述では関数の実行形式について解説していきます。

「トリガーを追加」を選択し、関数を実行するイベントを定義

関数を自動実行するためのトリガーを設定します。

関数の概要部分にある「トリガーの追加」をクリックしましょう。

トリガーの設定画面に遷移すると、検索欄から関数実行のトリガーを指定できます。

指定したトリガーに対して設定値を入力することで、関数が自動実行できるようになります。

【参考】Lambdaの代表的なトリガー

LambdaはAWSのサービスから同期的・非同期的に呼び出して関数実行ができます。

Lambda関数を同期的に呼び出すサービス

同期的にLamdaを呼び出す場合、関数は直接実行されます。以下AWSで代表的なLamdaの呼出元サービスを記載します。

  • Amazon Alexa
  • Amazon API Gateway
  • Amazon Cognito
  • Amazon CloudFront
  • Amazon Lex
  • Amazon Kinesis Data Firehouse
  • AWS Step Functions
  • Elastic Load Balancing

Lambda関数を非同期的に呼び出すサービス

非同期で呼び出す場合、呼出元にはリクエストの実行結果は渡されず、リクエストの実行に際して正常動作したかのステータスのみ返却されます。以下非同期的な呼出元サービスを以下に示します。

  • Amazon Simple Storage Service(S3)
  • Amazon Simple Notification Service
  • Amazon Simple Email Service
  • AWS CloudFormation
  • AWS CodeCommit
  • AWS Config
  • AWS IoT Events
  • Amazon CloudWatch Log
  • Amazon EventBridge

以下、トリガーとしてよく用いられるサービスを抜粋して紹介します。

Amazon EventBridge|関数のスケジュール設定・定期実行が可能

Amazon EventBridgeはイベントを使って多様なアプリケーションを接続できるようにするサーバーレスなイベントパスサービスです。

EventBridgeを通じて、AWS上でのアクション(ステータス変更などシステムの状態が変わること)やAWS内外のサービス同士を接続し、イベント駆動型アプリケーションを容易に実装することができます。

イベント実行条件や一定のスケジュール設定のもと関数の定期実行したい場合、Lambdaと合わせてEventBridgeが用いられます。

Amazon API Gateway|関数のスケジュール設定・定期実行が可能

Amazon API Gatewayは、REST、HTTPおよびWebSocket API の作成、公開、保守および保護するためのサービスです。

API Gatewayはクライアントとバックエンド間のゲートウェイとして機能します。

API GatewayをLambdaと合わせて用いることで、クライアントはAPIリクエスト経由で関数実行できるようになります。

最後に

この記事が気に入ったら
フォローしてね!

目次