Aws-lambda-introduction
AWS Lambda –はじめに
AWS Lambdaは、サーバーなしでコードの計算を行うサービスです。 サーバーレスコンピューティングと言われています。 コードは、S3バケットへのファイルの追加/削除、Amazon DynamoDBtablesの更新、Amazon ApiゲートウェイからのHTTPリクエストなど、AWSサービスのイベントの応答に基づいて実行されます。
AWS LambdaコードはNodeJS、Java、C#、Python、Goで記述できます。 この章では、AWSコンソールでのAWS Lambda関数の作成について詳しく説明します。
AWSコンソール
リンクhttps://aws.amazon.com/consoleでAWSコンソールにログインします。 ログインすると、AWSサービスが表示される画面にリダイレクトされます。
例:関数の作成
例の助けを借りて、AWSコンソールの機能を理解しましょう。 Lambda(上記のマーク)をクリックすると、以下に示すように機能を作成するためにリダイレクトされます-
[関数の作成]ボタンをクリックすると、画面に次の詳細が表示されます-
デフォルトでは、オプションは*最初から作成*であることに注意してください。 このオプションを使用すると、Lambdaコードをゼロから作成できます。 hello world メッセージを含む単純な関数があります。
2番目のオプション*ブループリント*には次の詳細があります。
AWS Lambdaで利用可能な言語でawsサービスの一部用にすでに記述されたコードの詳細を提供します。 blue prints でチェックして開始できるサービスのAWS Lambdaコードを記述する必要がある場合。
3番目のオプション*サーバーレスアプリケーションリポジトリ*には、AWS Lambdaコードのデプロイに役立つサーバーレスアプリケーションのセットアップがあります。
さらに説明する際には、 Author from scratch を使用してAWSラムダ関数を作成する最初のオプションに取り組みます。
Lambda関数を作成する前に、ロール、つまりAWSサービスとaws lambdaを使用するためのアクセス許可が必要です。 後で、ロールをawsラムダ関数に割り当てる必要があります。
AWSコンソールでのロール作成
AWSコンソールでロールを作成するには、AWSコンソールサービスに移動し、以下に示すようにIAMをクリックします-
さて、 IAM をクリックすると、以下の画面が表示されます-
- ロール*を選択すると、画面に次のボタンが表示されます-
ここで、[ Create role ]をクリックします。 作成されたロールを使用する必要があるサービスを選択するように求められます。
このロールをAWS Lambdaで使用する必要があるため、 Lambda を選択し、上記のように Next:Permissions ボタンをクリックします。 次の画面には、AWSサービスごとに使用可能なポリシー名が表示されます。 ここからポリシーを選択できます-
たとえば、AWS LambdaがS3およびDynamoDBで動作するアクセス許可が必要な場合、ポリシーを選択する必要があります。 検索ボックスにAWSサービスを入力し、チェックボックスをクリックします。 複数のポリシーを選択し、後で Next:Review をクリックできます。
独自のポリシーを作成することもできます。 たとえば、dynamodbテーブルがあり、そのテーブルにのみ許可を与える必要があります。そのような場合、ポリシーを作成できます。
上記の画面に示すように、 Create policy ボタンをクリックします。 画面に表示される詳細は次のとおりです。
ポリシーを作成する*サービス*を選択します。 後で、アクション、リソース、*リクエスト条件*のデータが表示されます。
ここで、サービスを選択する必要があります。 検索から AWS Dynamodb を選択してみましょう。 *アクション*には次の詳細があります-
ここで、DynamoDBに付与する*アクセスレベル*を入力します。 次に、*リソース*は次の詳細を表示します-
次に、テーブルリソースタイプを選択します。 次の出力を見ることができます-
テーブルの許可を得るには、* ARNを追加する必要があります。 ARNは、AWS DynamoDBで作成されたテーブルに固有の詳細です。 dynamodbでテーブルを作成すると、詳細が表示されます。
*Add ARN* をクリックすると、次の詳細が表示されます-
ここで、 ARN と Region、Account および Table の名前を入力すると、入力されます。 ポリシーを追加するには、[追加]ボタンをクリックする必要があります。 同様に、他のサービスのポリシーを作成できます。
ここでは、2つのポリシー AmazonS3FullAccess および AmazonDynamoDBFullACcess を選択しました。 その役割でS3とDynamoDBへのフルアクセスを許可しました。 ただし、必要なバケットとテーブルにのみ許可を与えることをお勧めします。
前述の手順に従って、 ARN を使用してポリシーを作成できます。
ステップ1
[ロールを作成]ボタンをクリックして、ロールを作成します。 作成されたすべてのロールが表示されるように表示されます-
ステップ2
作成されたロールを変更する必要がある場合は、必要なロールを選択できます。 * Author from scratchオプション*を選択した場合、 Name、Runtime、およびRole を入力する必要があります。
ステップ3
あなたは*ランタイム*ドロップダウンで次の詳細を観察することができます-
ステップ4
選択したランタイムを選択し、図のように続行できます。
- ロール*ドロップダウンには次のオプションがあります-
- *既存のロールを選択します-*これにより、IAMロールで作成されたすべてのロールが表示されます。
- *テンプレートから新しいロールを作成します-*これにより、ロールを作成でき、そのロールに対して選択される権限が表示されます。 よりよく理解するためにスクリーンショットを観察してください。
- *カスタムロールの作成-*これにより、ユーザーは前述のようにポリシーを作成できます。
ステップ5
*runtime、role* を選択して、関数を追加します。 *Create function* ボタンをクリックして、ラムダ関数を作成します。 表示される次の画面は次のとおりです-
AWS Lambda関数の一部
AWS Lambda関数には、*構成*と*監視*の2つの部分があります。 それぞれについて詳しく説明しましょう。
設定
次の機能が構成に含まれています。
トリガーを追加
AWS Lambda関数に追加する必要があるトリガーは次のように表示されます-
トリガーを選択する場合、そのトリガーの構成の詳細を追加する必要があることに注意してください。 S3トリガーの例では、バケット名を選択する必要があります。 Dynamodbトリガーの場合、テーブル名を選択する必要があります。
例
私たちはS3トリガーの構成の詳細の例を見てみましょう-
今、追加されたS3トリガーの構成の詳細を追加します-
ここでは、Lambdaをトリガーする* bucket名、イベントタイプ*、プレフィックスがある場合はフィルターパターンを選択し、トリガーを*追加*する必要があります。
Lambdaにコードを追加する
次に、作成するLambdaコードに焦点を当てる必要があります。 AWSラムダにコードを追加するには、3つのオプションがあります-
- インラインエディターの使用
- .zipファイルを使用する
- Amazon S3からファイルをアップロードする
以下のスクリーンショットに示されています-
それぞれについて詳しく説明します。
インラインエディタを使用する
あなたがあなたのコードを書くことができるインラインコードエディタは次のとおりです-
任意の言語を選択して、コードを記述できます。 ここで再度ランタイムを選択できます。
より良い理解のために、次のスクリーンショットを観察します-
コードは index.js.Handler で作成する必要があります。 詳細は実行時間によって異なります。 nodejs の場合、* index.lambdaハンドラ*である filename.export function です。
- .ZIPファイルをアップロード*
- .ZIPファイルをアップロード*を選択して、最初にコードを記述し、それを圧縮し、zipファイルをアップロードできます。
- Amazon S3からファイルをアップロード*
S3バケットにファイルをアップロードし、* Amazon S3からファイルをアップロード*オプションを選択できます。
*_。ZIP_* および *_S3_* の場合、ランタイムを変更できないことに注意してください。
環境変数
キーと値のペアを受け取り、AWS Lambdaコードと共有します。 AWS Lambdaの環境変数を使用して、データベース接続の詳細、出力を保存するファイルの詳細、ログファイルの詳細などを保存できます。
Tags
これらは、異なるリージョンで使用する場合に機能をより適切に整理するためにAWS Lambdaに追加されたキーと値のペアです。 単純なユースケースの場合、必須ではありません。 作成されたLambda関数が多数ある場合、タグ付けはLambda関数のフィルタリングと管理に役立ちます。
実行役割
Lambda関数の作成の開始時に適切に行われなかった場合、ここでロールを再度変更できます。 ここで新しいロールを更新または作成できます。 Lambda関数の作成の開始時に表示されたものと同じオプションを提供します。
基本設定
ここで、Lambda関数が実行していることの短い説明を入力する必要があります。 Lambda関数に必要なメモリとタイムアウトを選択します。
ネットワーク
これにより、VPCを選択して、VPCからLambda関数にアクセスできるようになります。 デフォルトでは、VPCは選択されていません。
デバッグとエラー処理
デバッグとエラー処理のために、AWSサービスを選択して詳細を送信できます。 使用可能なオプションは、なし、SNS *および *SQS です。
並行性
これにより、この機能に許可される同時実行の特定の制限を割り当てることができます。
監査とコンプライアンス
これには、AWS CloudTrailを使用して管理されるログが含まれます。
完了したら、ここに示すように[保存]ボタンを使用して変更を保存する必要があります-
ここで、*テスト*ボタンをクリックすると、テストイベントが要求されます。 次のようにサンプルテストイベントを渡すことができます-
作成されたテストイベントは次のとおりです-
ここで、テストイベントを保存し、テストボタンをクリックして、AWS Lambda関数の実行を確認します-
*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を選択します-
今、左側からログを選択し、フィルターに関数名を入力します-