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

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

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

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

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

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

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

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

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

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

Copy
$ aws lambda create-function \ --region us-west-2 \ --function-name ProcessKinesisRecords \ --zip-file fileb://file-path/ProcessKinesisRecords.zip \ --role execution-role-arn \ --handler handler \ --runtime runtime-value \ --profile adminuser

Java の場合、--handler パラメーター値は example.ProcessKinesisRecords::recordHandler です。Node.js の場合は ProcessKinesisRecords.handler、Python の場合は ProcessKinesisRecords.lambda_handler です。

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

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

注記

AWS Lambda コンソールを使用して Lambda 関数を作成できます。その場合には、AWS CLI コマンド create-function のパラメーターの値をメモしておきます。コンソール UI で同じパラメーター値を指定します。

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

サンプルの Amazon Kinesis イベントデータを使用して手動で関数を呼び出します。コンソールを使用して関数を呼び出すことをお勧めします。コンソールには、実行の要約、コードによって書き込まれたログ、関数が返した結果など、実行の結果を確認しやすい UI が用意されているためです (これは、コンソールが常に同期実行を行う、つまり RequestResponse 呼び出しタイプを使用して Lambda 関数を呼び出すからです)。

Lambda 関数をテストする (コンソール)

  1. 「開始方法」の手順に従って、Lambda 関数を作成して呼び出します (「ステップ 2.2: Lambda 関数を手動で呼び出し、結果、ログ、メトリクスを確認する」を参照)。テスト用のサンプルイベントとして、[Sample event template] で [Kinesis] を選択します。

  2. コンソールで結果を確認します。

Lambda 関数をテストする (AWS CLI)

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

    Copy
    { "Records": [ { "kinesis": { "partitionKey": "partitionKey-3", "kinesisSchemaVersion": "1.0", "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IDEyMy4=", "sequenceNumber": "49545115243490985018280067714973144582180062593244200961" }, "eventSource": "aws:kinesis", "eventID": "shardId-000000000000:49545115243490985018280067714973144582180062593244200961", "invokeIdentityArn": "arn:aws:iam::account-id:role/testLEBRole", "eventVersion": "1.0", "eventName": "aws:kinesis:record", "eventSourceARN": "arn:aws:kinesis:us-west-2:35667example:stream/examplestream", "awsRegion": "us-west-2" } ] }
  2. 次の invoke コマンドを実行します。

    Copy
    $ aws lambda invoke \ --invocation-type Event \ --function-name ProcessKinesisRecords \ --region us-west-2 \ --payload file://file-path/input.txt \ --profile adminuser outputfile.txt

    注記

    このチュートリアルの例では、メッセージは outputfile.txt ファイルに保存されます。同期実行 (呼び出しタイプが RequestResponse) をリクエストした場合、その関数は応答の本文で文字列メッセージを返します。

    Node.js の場合は、次のいずれかです (コード内で指定している)。

    context.succeed("message")

    context.fail("message")

    context.done(null, "message)

    Python または Java の場合は、戻りステートメント内のメッセージです。

    return "message"

次のステップ

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