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

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

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

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

  • Lambda 関数を手動で呼び出し、パラメータとしてサンプル Amazon S3 イベントデータを渡すことで、この関数をテストします。

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

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

  1. コマンドプロンプトで、--profile として adminuser を使用して、以下の Lambda AWS CLI create-function コマンドを実行します。このコマンドは、.zip ファイルのパスと実行ロールの ARN に実際の値を指定して更新する必要があります。ランタイムパラメーターには、デプロイパッケージを作成したときに選択したコードサンプルによって、nodejs4.3python2.7、または java8 のいずれかを選択します。

    Copy
    $ aws lambda create-function \ --region us-west-2 \ --function-name CreateThumbnail \ --zip-file fileb://file-path/CreateThumbnail.zip \ --role role-arn \ --handler CreateThumbnail.handler \ --runtime runtime \ --profile adminuser \ --timeout 10 \ --memory-size 1024

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

    Copy
    --code S3Bucket=bucket-name,S3Key=zip-file-object-key
  2. 関数の ARN を書き留めます。通知設定を Amazon S3 バケットに追加するときは、以下のセクションでこれが必要になります。

  3. (オプション)、前述のコマンドは、関数の設定として 10 秒のタイムアウト値を指定します。アップロードするオブジェクトのサイズに応じて、次の AWS CLI コマンドを使用してタイムアウトの値を増やす必要が生じる場合があります。

    Copy
    $ aws lambda update-function-configuration \ --function-name CreateThumbnail \ --region us-west-2 \ --timeout timeout-in-seconds \ --profile adminuser

注記

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

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

このステップでは、サンプル Amazon S3 イベントデータを使用して、手動で Lambda 関数を呼び出します。AWS マネジメントコンソール または AWS CLI を使用して関数をテストできます。

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

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

  2. サムネイルがターゲットバケットに作成されたことを確認し、以下のように AWS Lambda コンソールで Lambda 関数のアクティビティをモニタリングします。

    • AWS Lambda コンソールでは、関数の [Cloudwatch Metrics at a glance] セクションで、一部の CloudWatch メトリクスのグラフィカル表現が表示されます。

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

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

  1. 以下の Amazon S3 サンプルイベントデータを input.txt ファイルに保存します。JSON を実際の sourcebucket 名と .jpg オブジェクトキーで更新する必要があります。

    Copy
    { "Records":[ { "eventVersion":"2.0", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"1970-01-01T00:00:00.000Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"AIDAJDPLRKLG7UEXAMPLE" }, "requestParameters":{ "sourceIPAddress":"127.0.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"sourcebucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::sourcebucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko" } } } ] }
  2. 次の Lambda CLI invoke コマンドを実行して関数を呼び出します。コマンドは非同期実行をリクエストします。オプションで、invocation-type パラメータ値として RequestResponse を指定することで、このコマンドを同期的に呼び出すこともできます。

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

    注記

    この関数を呼び出すことができるのは、関数を呼び出すために独自の認証情報を使用しているためです。次のセクションでは、ユーザーに代わってこの関数を呼び出すように Amazon S3 を設定します。そのためには、関数を呼び出すための Amazon S3 アクセス権限を付与する Lambda 関数に関連付けられたアクセスポリシーに、アクセス権限を追加する必要があります。

  3. サムネイルがターゲットバケットに作成されたことを確認し、以下のように AWS Lambda コンソールで Lambda 関数のアクティビティをモニタリングします。

    • AWS Lambda コンソールでは、関数の [Cloudwatch Metrics at a glance] セクションで、一部の CloudWatch メトリクスのグラフィカル表現が表示されます。

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

次のステップ

ステップ 3: イベントソースを追加する (イベントを発行するように Amazon S3 を設定する)