AWS Lambda –はじめに
AWS Lambdaは、サーバーなしでコードのコンピューティングを処理するサービスです。サーバーレスコンピューティングと言われています。コードは、S3バケットでのファイルの追加/削除、Amazon DynamoDBtablesの更新、Amazon ApiゲートウェイからのHTTPリクエストなど、AWSサービスのイベントの応答に基づいて実行されます。
AWS Lambdaコードは、NodeJS、Java、C#、Python、Goで記述できます。この章では、AWSコンソールでのAWSLambda関数の作成について詳しく説明します。
AWSコンソール
リンクからAWSコンソールにログインします https://aws.amazon.com/console。ログインすると、AWSサービスが表示されている画面にリダイレクトされます。

例:関数の作成
例を使用して、AWSコンソールの機能を理解しましょう。Lambda(上にマーク)をクリックすると、以下に示すように関数を作成するようにリダイレクトされます-

クリック Create function ボタンをクリックすると、画面に次の詳細が表示されます-

デフォルトでは、オプションは次のとおりです。 Author from scratch。このオプションを使用すると、Lambdaコードを最初から作成できます。それはただ簡単な機能を持っているでしょうhello world メッセージ。
2番目のオプション Blue prints 以下の詳細があります。

AWSLambdaで利用可能な言語でいくつかのawsサービス用にすでに記述されているコードの詳細を提供します。チェックインできるサービスのAWSLambdaコードを作成する必要がある場合blue prints 始めましょう。
3番目のオプション Serverless Application Repository AWSLambdaコードのデプロイに役立つサーバーレスアプリケーションのセットアップがあります。
さらに議論する中で、AWSラムダ関数を使用してAWSラムダ関数を作成する最初のオプションに取り組みます Author from scratch。
Lambda関数を作成する前に、ロール、つまりAWSサービスとawslambdaを操作するための権限が必要になります。後で、ロールをawslambda関数に割り当てる必要があります。
AWSコンソールでのロールの作成
AWSコンソールでロールを作成するには、AWSコンソールサービスに移動し、以下に示すようにIAMをクリックします-

さて、クリックすると IAM、以下のような画面になります−

選択した場合 Roles、画面に次のボタンが表示されます-

次に、をクリックします Create role。作成されたロールを使用する必要があるサービスを選択するように求められます。

AWS Lambdaでこのロールを使用する必要があるため、 Lambda をクリックします Next:Permissions上図のようなボタン。次の画面には、AWSサービスごとに利用できるポリシー名が表示されます。ここからポリシーを選択できます-

たとえば、AWS LambdaがS3およびDynamoDBと連携するためのアクセス許可が必要な場合は、ポリシーを選択する必要があります。検索ボックスにAWSサービスを入力し、チェックボックスをクリックします。複数のポリシーを選択して、後でクリックすることができますNext:Review。
独自のポリシーを作成することも可能です。たとえば、dynamodbテーブルがあり、そのテーブルにのみアクセス許可を与える必要があります。そのような場合は、ポリシーを作成できます。
クリック Create policy上の画面に表示されているボタン。画面に表示される詳細は次のとおりです。

を選択してください Serviceポリシーを作成する対象。後で、アクションのデータが表示されます。resources そして Request conditions。

ここで、サービスを選択する必要があります。選択しましょうAWS Dynamodb 検索から。 Actions 以下の詳細があります-

今、入力します Access levelDynamoDBに提供したい。次に、resources 以下の詳細が表示されます-

次に、テーブルリソースタイプを選択します。次の出力を見ることができます-

テーブルの許可を得るために、あなたはする必要があります Add ARN。ARNは、AWSDynamoDBで作成されたテーブルに固有の詳細です。テーブルがdynamodbで作成されると、詳細が表示されます。
クリックすると Add ARN 以下の詳細が表示されます-

さて、あなたが入ると ARN そしてその Region, Account そして Table名前が入力されます。クリックする必要がありますAddポリシーを追加するボタン。同様に、他のサービスのポリシーを作成できます。

ここでは、2つのポリシーを選択しました AmazonS3FullAccess そして AmazonDynamoDBFullACcess。その役割でS3とDynamoDBへのフルアクセスを許可しました。ただし、必要なバケットとテーブルにのみ許可を与えることをお勧めします。
前に説明した手順に従って、を使用してポリシーを作成できます。 ARN。
ステップ1
クリック Create roleボタンをクリックして役割を作成します。作成されたすべての役割が次のように表示されます-

ステップ2
作成した役割に変更が必要な場合に備えて、必要な役割を選択できることに注意してください。選択した場合Author from scratch option、入力する必要があります Name, Runtime and Role。

ステップ3
次の詳細は、で確認できます。 Runtime ドロップダウン-

ステップ4
選択したランタイムを選択して、示されているように続行できます。

Role ドロップダウンには次のオプションがあります-
Choose an existing role − これにより、IAMロールで作成されたすべてのロールが表示されます。
Create new role from template(s) −これにより、役割を作成でき、その役割に対して選択する権限が表示されます。理解を深めるためにスクリーンショットを観察してください。
Create a custom role − これにより、ユーザーは前に説明したようにポリシーを作成できます。
ステップ5
を選択 runtime, role関数を追加します。クリックCreate functionボタンをクリックしてラムダ関数を作成します。次に表示される画面は次のとおりです。

AWSLambda関数の一部
AWSLambda関数には2つの部分があります。Configuration そして Monitoring。それぞれについて詳しく説明しましょう。
構成
以下の機能が構成に含まれています。
Add Triggers
AWSLambda関数に追加するために必要なトリガーは次のように表示されます-

トリガーを選択するときは、そのトリガーの構成の詳細を追加する必要があることに注意してください。S3トリガーの例では、バケット名を選択する必要があります。Dynamodbトリガーの場合、テーブル名を選択する必要があります。
例
S3トリガーの構成の詳細の例を見てみましょう-

ここで、追加されたS3トリガーの構成の詳細を追加します-

ここでは、を選択する必要があります bucket name, event type ラムダをトリガーする場所、プレフィックス、フィルターパターン(存在する場合)および Add 引き金。
Lambdaにコードを追加する
ここで、作成するLambdaコードに焦点を当てる必要があります。aws lambdaにコードを追加するには、3つのオプションがあります-
- インラインエディタの使用
- .zipファイルの使用
- AmazonS3からファイルをアップロードする
以下のスクリーンショットに示されています-

それぞれについて詳しく説明しましょう。
Using the inline editor
コードを記述できるインラインコードエディタは次のとおりです。

選択した言語を選択して、コードを記述できます。ここでランタイムを再度選択できます。
理解を深めるために、次のスクリーンショットをご覧ください-

コードはで書かれている必要があります index.js.Handler。詳細は実行時間によって異なります。ためにnodejs、それは filename.export function これは今です index.lambda handler。
Upload a .ZIP file
最初にコードを記述し、zipして、zipファイルをアップロードすることができます。 Upload a .ZIP file。
Upload a file from Amazon S3
S3バケットにファイルをアップロードして、オプションを選択できます Upload a file from Amazon S3。
のために注意してください .ZIP そして S3 ランタイムを変更することはできません。
環境変数
キーと値のペアを取り込んで、AWSLambdaコードと共有します。AWS Lambdaの環境変数を使用して、データベース接続の詳細、出力を保存するためのファイルの詳細、ログファイルの詳細などを保存できます。

タグ
これらは、AWS Lambdaに追加されたキーと値のペアであり、さまざまなリージョンで使用されたときに機能をより適切に整理します。単純なユースケースの場合、これは必須ではありません。作成されたLambda関数が多数ある場合、タグ付けはLambda関数のフィルタリングと管理に役立ちます。

実行の役割
Lambda関数の作成開始時に適切に行われなかった場合は、ここで役割を再度変更できます。ここで新しい役割を更新または作成できます。Lambda関数の作成開始時に表示されたものと同じオプションを提供します。

基本設定
ここで、Lambda関数が実行していることの簡単な説明を入力する必要があります。Lambda関数に必要なメモリとタイムアウトを選択します。

通信網
これにより、VPCからLambda関数にアクセスできるVPCを選択できます。デフォルトでは、VPCは選択されていません。

デバッグとエラー処理
デバッグとエラー処理については、AWSサービスを選択して詳細を送信できます。利用可能なオプションは次のとおりですNone, SNS そして SQS。

並行性
これにより、この関数で許可される同時実行の特定の制限を割り当てることができます。

監査とコンプライアンス
これには、AWSCloudTrailを使用して管理されるログが含まれます。

完了したら、次に示すように[保存]ボタンを使用して変更を保存する必要があります-

さて、クリックすると Testボタンをクリックすると、テストイベントが要求されます。次のようにサンプルテストイベントに合格できます-
作成されたテストイベントは次のとおりです-

ここで、テストイベントを保存し、テストボタンをクリックして、AWSLambda関数の実行を確認します-

のコード index.js 次のとおりです-
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log(event.key1);
console.log(event.key2);
console.log(event.key3);
callback(null, 'Lambda test');
};
エラーまたは成功があった場合、コールバック関数が呼び出されることに注意してください。成功した場合、あなたは見ることができますLambda test が表示されます。
モニタリング
監視タブを選択して、Lambda関数の実行の詳細を表示します。グラフには、実行時間、発生したエラーなどの詳細が表示されます。

Cloudwatchでログを表示することもできます。これを行うには、AWSサービスに移動し、図のようにcloudwatchを選択します-

次に、左側からログを選択し、フィルターに関数名を入力します-
