サーバーレスアプリケーションの構築

Amazon Aurora Serverless を使用

Amazon Aurora は、MySQL および PostgreSQL と互換性のあるリレーショナルデータベースであり、従来のエンタープライズデータベースのパフォーマンスと可用性に加え、オープンソースデータベースのシンプルさと費用対効果も兼ね備えています。Amazon Aurora Serverless は、Amazon Aurora (MySQL 互換エディションおよび PostgreSQL 互換エディション) のオンデマンド自動スケーリング設定です。データベースの容量はアプリケーションのニーズに基づいて自動的に起動、シャットダウン、スケールアップまたはスケールダウンされます。Aurora Serverless を使用すると、データベースインスタンスを管理せずにクラウド内でデータベースを実行できます。Aurora Serverless は、低頻度、断続的、または予測不能なワークロード向けの、シンプルでコスト効率の良いオプションです。

このチュートリアルでは、Amazon Aurora サーバーレス (PostgreSQL 互換エディション)、Aurora サーバーレス向け Data API、Amazon Lambda、および Amazon Simple Notification Service (SNS) を使用してサーバーレスメッセージ処理アプリケーションを作成する方法を学びます。このチュートリアルでは、Aurora サーバーレスデータベースを作成し、Data API を使用して、Amazon SNS からのメッセージを消費する Amazon Lambda 関数と接続し、Aurora サーバーレスデータベースにメッセージを保存するためのステップバイステップの説明を提供します。

このチュートリアルの内容
時間 10~20 分      
料金 1 USD 未満
ユースケース データベース
製品 Amazon Aurora、Amazon SNS、AWS Lambda
レベル 100
最終更新日 2019 年 9 月 24 日

ステップ 1: Aurora Serverless データベースを作成する

1.1 — ブラウザを開き、[Amazon RDS コンソール] に移動します。すでに AWS アカウントをお持ちの場合は、コンソールにログインします。それ以外の場合は、開始用に新しい AWS アカウントを作成します。

AWS アカウントをお持ちですか? アカウントにログインする

1.2 — 右上から、Aurora DB クラスターを起動するリージョンを選択します。

1.3 — Amazon Aurora ウィンドウで [データベースを作成] をクリックします。

続行する前に、新しいデータベース作成フローに切り替えます。

エンジンオプション

1.4 — データベースエンジンで、[Amazon Aurora] を選択します。

1.5 — [エディション] では、[PostgreSQL 互換の Amazon Aurora] を選択します。

データベース機能

1.6 — [サーバーレス] を選択します。

設定

1.7 — Aurora DB クラスターの識別子 (例: [データベース-1]) を選択します。

認証情報の設定

1.8 — データベースのユーザー名とパスワードを選択します。

容量設定

1.9 — Aurora の最大容量単位で [2] を選択します。

接続

1.10 — データベースを作成する VPC を選択します。

作成したデータベースは別の VPC に移行できないことにご注意ください。

1.11 — [追加の接続構成] をクリックします。

1.12 — サブネットグループのデフォルト値を選択します。

1.13 — VPC セキュリティグループで、[新規作成] を選択します。ポート 3306 での着信 TCP 接続を許可するセキュリティグループがある場合は、代わりにそれを選択できます。

1.14 — [新しい VPC セキュリティグループ名] に [aurora-tutorial] と入力します。

1.15 — EnaData API を有効にします。

追加構成

1.16 — [削除保護] で、[削除保護を有効にする] のチェックを外します。

削除保護を有効にすることをお勧めします。ただし、チュートリアルの最後でデータベースを削除する場合は、オプションのチェックボックスをオフのままにしておくことができます。

確認して作成する

フォームのすべてのフィールドを簡単に確認した後に進むことができます。

1.17 — [データベースを作成] をクリックします。

インスタンスが作成されている間、認証情報の取得方法を説明するバナーが表示されます。このパスワードを表示できるのはこの瞬間だけなので、認証情報をどこかに保存する良い機会です。

クラスター ARN を取得する

1.18 — データベース名をクリックします。

1.19 — [構成] タブでクラスター ARN をコピーして、手元に置いておきます。後で必要になります。

データベースに接続する

1.20 — 左側のパネルを開き、[クエリエディタ] をクリックします。

1.21 — [database-1] を選択し、データベースのユーザー名に [postgres] と入力し、前に作成したデータベースパスワードを入力して、データベース名に [postgres] と入力します。

1.22 — [データベースに接続する] をクリックします。

1.23 — [実行] をクリックしてサンプルクエリを実行できます。

1.24 — 次のクエリを実行してデータベースを作成します。

データベースチュートリアルを作成

1.25 — [データベースを変更する] をクリックします。

1.26 — データベースを自分で作成したデータベースに変更します。

1.27 — クエリでテーブルを作成します。

CREATE TABLE sample_table(received_at TIMESTAMP, message VARCHAR(255));

クエリエディタでデータベースに接続すると、Lambda 関数で後で使用するシークレットが作成されます。チュートリアルの最後にいくつかのクエリを実行する必要があるため、このタブは開いたままにしておきます。

シークレット ARN をコピーする

新しいタブを開き、AWS Secrets Manager に移動します。次に、以下の手順通りにシークレット ARN を取得します。 

1.28 — 「database-1 の RDS データベース postgres 認証情報」を含むシークレットを見つけます。

1.29 — [シークレット名] をクリックした後、シークレット ARN をコピーして手元に置いておきます。

ステップ 2: AWS Cloud9 環境を作成する

新しいタブを開き、AWS Cloud9 コンソールに移動します。次に、以下の手順通りに新しい環境を作成します。 

2.1 — [環境を作成する] をクリックします。

2.2 — 新しい環境の名前を入力し、[次のステップ] をクリックします。

2.3 — 下にスクロールして、[次のステップ] をクリックします。

2.4 — [環境を作成する] をクリックします。

2.5 — 環境の準備が整ったら、[Lambda 関数を作成する] をクリックします。

2.6 — 関数の名前に [auroratest] と入力します。[次へ] をクリックします。

2.7 — [empty-python] ブループリントを選択し、[次へ] をクリックします。

2.8 — 次の画面で、[次へ]、[次へ]、[完了] の順にクリックします。

これで環境の準備が整い、Lambda 関数のブループリントが表示されます。

コーディングを開始する前に、ステップ 3 で説明されているように、いくつかのアクセス許可を構成する必要があります。この環境を開いたまま、他のタブを使用して次の手順を完了します。

ステップ 3: アクセス許可を設定する

新しいタブを開き、AWS IAM コンソールに移動します。次に、以下の手順通りに Lambda 関数にアクセス許可を割り当てます。

3.1 — [ロール] をクリックして、「cloud9-」で始まるロールを検索します。

3.2 — [ロール名]、[ポリシーをアタッチ] をクリックします。

3.3 — [AmazonRDSDataFullAccess] ポリシーを選択し、[ポリシーをアタッチ] をクリックします。

ポリシーが正常にアタッチされたことを説明する緑色のバナーが画面に表示されます。

ステップ 4: 独自の AWS Lambda 関数を作成する

手順 2 で作成した Cloud9 環境に戻り、以下の通りに実行します。

4.1 — コンソールで次のコマンドを実行して、auroratest ディレクトリに移動します。

$ cd auroratest

4.2 — コンソールで次のコマンドを実行して、boto3 依存関係をインストールします。

$ pip install boto3 -t boto3

4.3 — [lambda_function] ファイルのコードを削除し、代わりにこのサンプルコードをコピーします。

4.4 — cluster_arn と secret_arn の値を、前のステップで取得したクラスター ARN とシークレット ARN の値に置き換えます。

4.5 — [ファイル] > [保存] をクリックし、右側のパネルで [Lambda 関数] を選択します。

4.6 — 上方向の矢印をクリックして、Lambda 関数をデプロイします。

ステップ 5: Amazon SNS トピックを作成する

ambda 関数は、マイクロサービスとサーバーレスアプリケーションにパブリック/サブメッセージングを提供する Amazon Simple Notification Service (SNS) からのメッセージを処理します。

新しいタブで、[SNS ダッシュボード] にアクセスし、次の通りに実行します。

5.1 — [トピック名] に [aurora-lambda-sns-test] と入力し、[次のステップ] をクリックします。

5.2 — すべてデフォルト値のままにして、[トピックを作成] をクリックします。

トピックが正常に作成されたことを示す緑色のバナーが表示されます。

5.3 — SNS ARN をコピーして、手元に置いておきます。

Lambda 関数が、作成されたトピックから読み取るように構成されたら、このタブを使用してメッセージを公開します。

ステップ 6: AWS Lambda 関数を Amazon SNS トピックにサブスクライブする

AWS Lambda マネジメントコンソールに移動し、次の通りに実行します。

6.1 — ステップ 4 で作成した Lambda 関数の名前をクリックします。

6.2 — [トリガーを追加] をクリックします。

6.3 — [SNS] と入力し、ドロップダウンメニューから [SNS] サービスを選択します。

6.4 — [SNS トピック] フィールドに、[SNS ARN] を入力します。

6.5 — トリガーを有効にし、[追加] をクリックします。

ステップ 7: テストメッセージを公開する

[SNS ダッシュボード] に戻り、次の手順通りに実行します。

7.1 — [メッセージを公開] をクリックします。

7.2 — [件名] フィールドに任意の値を入力します。

7.3 — [本文] フィールドに任意の値を入力します。

7.4 — 下にスクロールして [メッセージを公開] をクリックします。

メッセージが公開されると、Lambda 関数がメッセージを使用して処理します。次のセクションでは、Aurora データベースへのデータの書き込み方法を確認します。

データベースの変更を確認する

7.5 — [クエリエディタ] を開いたままのタブに移動します。これを閉じた場合は、[RDS ダッシュボード] にアクセスして、1.20 で説明されているようにクエリエディタに接続します。

7.6 — [チュートリアル] データベースに接続します。

7.7 — sample_table からすべてのレコードを選択します。

SELECT * FROM sample_table;

7.8 — [実行] をクリックし、下にスクロールして結果を確認します。

これで、すべてが機能します。SNS 経由で送信するメッセージを変更して実験したり、lambda_handler 関数をお好きなように変更したりできます。

ステップ 8: クリーンアップ

このチュートリアルを完了するには、不要になった Aurora DB クラスターを削除する方法と、Lambda 関数、Cloud9 環境、データベースに接続するためのシークレット、およびその他について学びます。

Lambda 関数を削除する

8.1 — AWS Lambda マネジメントコンソールに移動し、[Lambda 関数] を選択します。

8.2 — [アクション] > [削除] の順にクリックします。

SNS トピックを削除する

8.3 — [SNS ダッシュボード] にアクセスし、左側のパネルの [トピック] をクリックします。

8.4 — ステップ 5 で作成したトピックを選択し、[削除] をクリックします。

8.5 — 確認を求められます。[delete me] と入力し、[削除] をクリックして確認します。

Cloud9 環境を削除する

8.6 — AWS Cloud9 コンソールに移動し、このチュートリアル用に作成した環境を選択します。

8.7 — [削除] をクリックします。

8.8 — 確認を求められたら、[Delete] と入力して [削除] ボタンをクリックします。

Aurora Serverless データベースを削除する

8.9 — Amazon RDS コンソールに移動し、このチュートリアル用に作成したデータベースを選択します。

8.10 — [アクション] > [削除] の順にクリックします。

最終的なスナップショットを作成するかどうかを尋ねられます。通常の場合は良い考えですが、このチュートリアルでは必要ありません。

8.11 — 確認を求められたら、最終スナップショットを作成するかどうかという質問に対して [いいえ] を選択します。次に、[同意します...] にチェックを入れ、[DB クラスターを削除する] をクリックします。

シークレットを削除する

8.12 — AWS Secrets Manager に移動し、「database-1 の RDS データベース管理者の認証情報」を含むシークレットを見つけて、シークレットの名前をクリックします。

8.13 — [アクション] > [シークレットを削除] の順にクリックします。

8.14 — シークレットをすぐに削除することはできません。削除スケジュールの最小待機期間は 7 日です。[7 日] を選択し、[削除をスケジュール] をクリックします。

IAM ロールを削除する

8.15 — AWS IAM コンソールに移動します。[ロール] をクリックして、「cloud9-」で始まるロールを検索します。

8.16 — ロールを選択し、[ロールを削除] をクリックします。

8.17 — 確認を求められたら、[はい、削除します] をクリックします。

おめでとうございます

Aurora サーバーレスデータベースを作成し、Aurora のデータ API を介して AWS Lambda 関数に接続しました。Amazon Simple Notification Service (SNS) を Lambda 関数のトリガーとして構成し、SNS 経由で送信したメッセージが処理され、Aurora サーバーレスデータベースに保存されました。

このチュートリアルは役に立ちましたか?

ありがとうございます
このチュートリアルで良かった点をお聞かせください。
ご期待に添えず申し訳ありません
古い説明、わかりにくい説明、間違った説明はございませんでしたか? このチュートリアルの改善のために、ぜひフィードバックをお寄せください。

Amazon Aurora 機能の詳細

Amazon Aurora ユーザーガイドで Amazon Aurora の機能詳細をご覧ください。

Amazon Aurora のベストプラクティス

Amazon Aurora DB クラスターでデータを使用する、またはAmazon Aurora DB クラスターにデータを移行するためのベストプラクティスとオプションについて説明しています。

サーバーレスの詳細をご覧ください。

サーバーレスアプリケーションの詳細については、AWS Lambda のドキュメントと、Aurora のユーザーガイドを確認してください。