メニュー
AWS Lambda
開発者ガイド

ステップ 2.3: Lambda 関数を作成し、手動でテストする

このセクションでは、以下の作業を行います。

  • デプロイパッケージをアップロードして、Lambda 関数を作成します。

  • Lambda 関数を手動で呼び出してテストします。イベントソースを作成する代わりに、サンプルの DynamoDB イベントデータを使用します。

次のセクションでは、DynamoDB ストリームを作成し、エンドツーエンドエクスペリエンスをテストします。

ステップ 2.3.1: Lambda 関数を作成する (デプロイパッケージをアップロードする)

このステップでは、AWS CLI を使用してデプロイパッケージをアップロードします。

コマンドプロンプトで、adminuser プロファイルを使用して、次の Lambda CLI コマンド create-function を実行します。

このコマンドは、.zip ファイルのパスと実行ロールの ARN に実際の値を指定して更新する必要があります。--runtime のパラメータ値には、コードの記述に使用した言語に応じて、python3.6python2.7nodejs6.10nodejs4.3 または java8 のいずれかを指定します。

Copy
$ aws lambda create-function \ --region us-east-1 \ --function-name ProcessDynamoDBStream \ --zip-file fileb://file-path/ProcessDynamoDBStream.zip \ --role role-arn \ --handler ProcessDynamoDBStream.lambda_handler \ --runtime runtime-value \ --profile adminuser

注記

ランタイムとして Java 8 を選択している場合、ハンドラー値は packageName::methodNameある必要があります。

詳細については、「CreateFunction」を参照してください。AWS Lambda は関数を作成し、関数の設定情報を返します。

オプションとして、同じ AWS リージョンの Amazon S3 バケットに .zip ファイルをアップロードし、前述のコマンドでそのバケットとオブジェクト名を指定することもできます。次に示すように、--zip-file パラメーターを --code パラメーターで置き換える必要があります。

Copy
--code S3Bucket=bucket-name,S3Key=zip-file-object-key

ステップ 2.3.2: Lambda 関数をテストする (手動で呼び出す)

このセットアップでは、AWS Lambda の CLI コマンド invoke と次のサンプル DynamoDB イベントを使用して、Lambda 関数を手動で呼び出します。

  1. 以下の JSON をファイルにコピーし、input.txt という名前で保存します。

    Copy
    { "Records":[ { "eventID":"1", "eventName":"INSERT", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "NewImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "SequenceNumber":"111", "SizeBytes":26, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" }, { "eventID":"2", "eventName":"MODIFY", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "NewImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "OldImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "SequenceNumber":"222", "SizeBytes":59, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" }, { "eventID":"3", "eventName":"REMOVE", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "OldImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "SequenceNumber":"333", "SizeBytes":38, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" } ] }
  2. 次の invoke コマンドを実行します。

    Copy
    $ aws lambda invoke \ --invocation-type RequestResponse \ --function-name ProcessDynamoDBStream \ --region us-east-1 \ --payload file://file-path/input.txt \ --profile adminuser \ outputfile.txt

    invoke コマンドでは、呼び出しタイプとして、同期実行をリクエストする RequestResponse を指定します。詳細については、「Invoke」を参照してください。この関数はレスポンス本文で文字列メッセージ (コードの context.succeed() のメッセージ) を返します。

  3. outputfile.txt ファイルで出力を確認します。

    Lambda 関数のアクティビティは、AWS Lambda コンソールでモニタリングできます。

    • AWS Lambda コンソールでは、関数の [Cloudwatch Metrics at a glance] セクションで、一部の CloudWatch メトリクスのグラフィカル表現が表示されます。AWS マネジメントコンソール (https://console.aws.amazon.com/) にサインインします。

    • 各グラフについて、[logs] リンクをクリックすると、CloudWatch ログを直接表示できます。

次のステップ

ステップ 3: イベントソースを追加する (DynamoDB ストリームを作成し、それを Lambda 関数と関連付ける)