Amazon DynamoDB Accelerator (DAX) クラスターを AWS Lambda 関数で使用したいと考えています。どうすればよいですか?
解決方法
DAX クラスターを作成したら、 DAX クラスターで起動した VPC ID、サブネット、セキュリティグループを書き留めます。この情報は参照用に保管してください。次に、以下の手順に従って DAX クラスターで Lambda 関数を使用します。
DAX クラスターの VPC にアクセスできる Lambda 関数を作成する
1. Lambda コンソールを開きます。次に、[関数] ページを開きます。
2. [関数の作成] を選択し、関数名を入力します。
3. [基本情報] で [ランタイム] と [アーキテクチャ] を選択します。
4. [詳細設定] を展開します。次に、[VPC を有効にする] の左側にあるチェックボックスをオンにします。
5. VPC ドロップダウンリストで、前述の VPC を選択します。これは DAX クラスターが起動された VPC です。
6. [サブネット] ドロップダウンリストで、前述のサブネットを選択します。あてはまるものをすべて選択してください。
7. [セキュリティグループ] ドロップダウンリストで、前述の VPC セキュリティグループを選択します。コンソールには、そのセキュリティグループのインバウンドルールとアウトバウンドルールが表示されます。
重要: Lambda 関数が DAX クラスターに接続するには、セキュリティグループのインバウンドルールでプロトコルとして TCP が表示される必要があります。また、[ポート] の下に 8111 または 9111 が表示されている必要があります。8111 は暗号化されていないクラスター用であり、9111 は暗号化されたクラスター用です。
8. [関数を作成] を選択します。
DAX クラスターの VPC にアクセスするように既存の Lambda 関数を設定します
1. Lambda コンソールを開きます。次に、[関数] ページを開きます。
2. DAX クラスターで使用する関数を選択します。
3. リボンから [設定] を選択し、次に [VPC] を選択します。[編集] を選択します。
4. 前のセクション「DAX クラスターの VPC にアクセスできる Lambda 関数を作成する」のステップ 4 ~ 6 に従います。
5. [保存] を選択します。
Lambda 関数から DAX クラスターへの接続をテストします
重要: amazondax は Lambda ではデフォルトでは使用できないため、最初にデプロイパッケージを準備する必要があります。amazon-dax-client をインストールするには、Amazon DynamoDB Accelerator (DAX) の「すべてのバージョン」セクションを参照してください。
amazon-dax-client をインストールしたら、「.zip ファイルアーカイブを使用して Python Lambda 関数をデプロイする」の手順に従ってデプロイパッケージを作成します。次の Python コードを使用してパッケージを作成します。
import amazondax
import boto3
def lambda_handler(event, context):
daxclient = amazondax.AmazonDaxClient(endpoint_url='<endpoint-from-your-cluster>')
print("Connected!!")
デプロイパッケージで、 endpoint_url を DAX クラスターにあるものに変更します。これを行うには、以下を実行します。
1. [DynamoDB コンソール] を開きます。
2. ナビゲーションペインの [ DAX] で、[クラスター] を選択します。
3. 以前に作成した DAX クラスターを選択し、[概要] を選択します。
4. [一般情報] で [クラスターエンドポイント] を探します。 そこに記載されている URL をコピーします。
5. Python コード内の を コピーした URL に置き換えます。
6. デプロイパッケージを .zip ファイルとして、または S3 URL を使用してアップロードします。その後、[テスト] を選択します。
7. 接続が正常に構成されると、実行結果に**「接続済み!!」と表示されます。**
関連情報
VPC アクセスの設定 (コンソール)
Lambda の DynamoDB Accelerator (DAX) を使用して、コストを削減しながらパフォーマンスを向上させる
DynamoDB Accelerator (DAX) クライアントによる開発