

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# で DynamoDB イベントを処理する AWS SAM
<a name="serverless-example-ddb"></a>



このサンプルアプリケーションでは、概要とクイックスタートガイドで学習した内容に基づいて構築を行い、別のサンプルアプリケーションをインストールします。このアプリケーションは、DynamoDB テーブルイベントソースによって呼び出される Lambda 関数で構成されます。この Lambda 関数はきわめてシンプルで、イベントソースメッセージ経由で渡されたデータをログに記録します。

この演習は、Lambda 関数が呼び出されたときに関数に渡されるイベントソースメッセージを模倣する方法を説明します。



## [開始する前に]
<a name="gs-ex2-prereq"></a>

[AWS SAM CLI のインストール](install-sam-cli.md) に記載されている必要なセットアップが完了していることを確認してください。

## ステップ 1: アプリケーションを初期化する
<a name="gs-ex2-setup-local-app"></a>

このセクションでは、 AWS SAM テンプレートとアプリケーションコードで構成されるアプリケーションパッケージをダウンロードします。

**アプリケーションを初期化する**

1.  AWS SAM CLI コマンドプロンプトで以下のコマンドを実行します。

   ```
   sam init \
   --location gh:aws-samples/cookiecutter-aws-sam-dynamodb-python \
   --no-input
   ```

   上記のコマンドにある `gh:` は、GitHub URL `https://github.com/` に展開されることに注意してください。

1. コマンドで作成されたディレクトリの内容を確認します (`dynamodb_event_reader/`)。
   + `template.yaml` – Read DynamoDB アプリケーションに必要な Lambda 関数と DynamoDB テーブルの 2 つの AWS リソースを定義します。このテンプレートは、2 つのリソース間のマッピングも定義します。
   + `read_dynamodb_event/` ディレクトリ - DynamoDB アプリケーションコードが含まれています。

## ステップ 2: アプリケーションのローカルでテストする
<a name="gs-ex2-test-locally"></a>

ローカルテストでは、 AWS SAM CLI を使用してサンプル DynamoDB イベントを生成し、Lambda 関数を呼び出します。

```
sam local generate-event dynamodb update | sam local invoke --event - ReadDynamoDBEvent
```

`generate-event` コマンドは、すべてのコンポーネントが AWS クラウドにデプロイされたときに作成されるメッセージなどのテストイベントソースメッセージを作成します。このイベントソースメッセージは、Lambda 関数 ReadDynamoDBEvent にパイプされます。

`app.py` のソースコードに基づいて、期待されるメッセージがコンソールに出力されることを確認します。

## ステップ 3: アプリケーションをパッケージ化する
<a name="gs-ex2-setup-pacakge-app"></a>

アプリケーションをローカルでテストしたら、 AWS SAM CLIを使用してデプロイパッケージを作成します。このパッケージを使用して、アプリケーションを AWS クラウドにデプロイします。

**Lambda デプロイパッケージを作成する**

1. パッケージ化されたコードを保存する場所に S3 バケットを作成します。既存の S3 バケットを使用する場合は、このステップをスキップします。

   ```
   aws s3 mb s3://bucketname
   ```

1. コマンドプロンプトで以下の `package` CLI コマンドを実行して、デプロイパッケージを作成します。

   ```
   sam package \
       --template-file template.yaml \
       --output-template-file packaged.yaml \
       --s3-bucket bucketname
   ```

   次のステップでアプリケーションをデプロイするときは、新しいテンプレートファイルである `packaged.yaml` を指定します。

## ステップ 4: アプリケーションをデプロイする
<a name="gs-ex2-setup-deploy-app"></a>

デプロイパッケージを作成したら、それを使用してアプリケーションを AWS クラウドにデプロイします。その後、アプリケーションをテストします。

**サーバーレスアプリケーションを AWS クラウドにデプロイするには**
+ で AWS SAM CLI、 `deploy` CLI コマンドを使用して、テンプレートで定義したすべてのリソースをデプロイします。

  

  ```
  sam deploy \
      --template-file packaged.yaml \
      --stack-name sam-app \
      --capabilities CAPABILITY_IAM \
      --region us-east-1
  ```

  コマンドで、 `--capabilities`パラメータを使用すると、 AWS CloudFormation は IAM ロールを作成できます。

  CloudFormation は、テンプレートで定義されている AWS リソースを作成します。これらのリソースの名前には、 CloudFormation コンソールからアクセスできます。

**AWS クラウドでサーバーレスアプリケーションをテストするには**

1. DynamoDB コンソールを開きます。

1. 先ほど作成したテーブルにレコードを挿入します。

1. テーブルの [**Metrics**] (メトリクス) タブに移動し、[**View all CloudWatch metrics**] (すべての CloudWatch メトリクスを表示) をクリックします。CloudWatch コンソールで [**Logs**] (ログ) を選択して、ログ出力を表示できるようにします。

## 次の手順
<a name="gs-ex2-setup-deploy-app-next-steps"></a>

詳細については AWS SAM、次のリソースを参照してください。
+ **[Serverless Land](https://serverlessland.com/patterns?framework=AWS+SAM)** – SAM AWS アプリケーション専用のサーバーレスパターン、コード例、学習リソースをまとめたサイト。