城岸直希(42)54この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。前回はpersonを管理するためにDynamoDBでテーブルを作成しました。今回は第2回ということでDynamoDBから項目を取得するLambdaを作成していきます。GatewayからLambdaを呼び出す~↓追加しました。Gateway、Lambda、DynamoDBと仲良くなりましょう!!それでは本題に入っていきます。今回構築するアプリケーションの全体構成はこちら。今回は前回作成したDynamoDBからデータを取得するLambda関数を作成していきます。LambdaLambdaとは何なのか。公式ドキュメントよりLambdaの概要を抜粋します。使用すれば、サーバーのプロビジョニングや管理なしでコードを実行できます。課金は実際に使用したコンピューティング時間に対してのみ発生し、コードが実行されていないときには料金も発生しません。使用すれば、実質どのようなタイプのアプリケーションやバックエンドサービスでも管理を必要とせずに実行できます。サービスから自動的にトリガーするよう設定することも、ウェブやモバイルアプリケーションから直接呼び出すよう設定することもできます。このエントリにLambdaの特徴が綺麗にまとまっていたので一部抜粋します。Beltの資料もご覧ください。※資料は最新のものではないため適宜公式ドキュメントを参照してください。JapanLambdaの利用用途は様々です。いくつか制限事項はありますが、割と手軽に利用できるサービスになります。今回作成するアプリケーションでは、DynamoDBからデータを取得する関数として利用します。DynamoDBから情報を取得する際にはDynamoDBのKeyであるperson_idを元にデータを取得します。今回はこの言語の中でも比較的記述しやすい言語であるPythonを使ってコーディングしていきます。1.1.IAMロールの作成まずは、IAMロールを作成します。IAMロールとはすごく簡単にいうとAWSのリソースに対して権限を割り当てるための仕組みです。今回はLambda関数用のIAMロールを作成します。AWSマネジメントコンソールよりIAMを選択します。左ペインのロールを選択し、「ロールの作成」をクリックします。次に当該ロールを付与する対象を選択します。今回はLambdaに対するロールを作成するため、Lambdaを選択し「次のステップ:アクセス権限」をクリックします。Lambdaロールに付与する権限を選択します。今回はログの書き込み権限をもつAWSLambdaBasicExecutionRoleとDynamoDBへのアクセス権限をもつAmazonDynamoDBFullAccessをポリシーとしてアタッチします。※今回は便宜上AmazonDynamoDBFullAccessをアタッチしましたが、実運用する場合は権限を絞ったポリシーをアタッチすることをおすすめします。どのような権限が付与されるのか。詳細が知りたい!!という方は「ポリシーの概要」を確認してみましょう。AWSLambdaBasicExecutionRoleはCloudWatchlogsというサービスに対して書き込み権限があることがわかります。詳しく知りたい方はこちらのエントリをご確認ください。アタッチするポリシーが選択し終えたら、次にロール名を入力します。demo-lambda-roleと入力し、「ロールの作成」をクリックします。これでIAMロールの作成は完了です。1.2.Lambda関数の作成AWSマネジメントコンソールよりLambdaを選択します。画面右上の「関数の作成」をクリックします。関数の名前、ランタイム、ロールを指定します。3.6、ロールに先ほど作成したdemo-lambda-roleを指定します。1.3.Lambda関数のテスト関数が作成されたので、現状で一度テストしてみましょう。画面右上の「テスト」をクリックします。"Key1"、"value1"などがJsonとして表示されています。これはテスト実行時に引数としてLambda関数に渡されるeventとなります。今回は一旦そのままの値とします。イベント名にtestを入力し「作成」をクリックします。この状態で、「テスト」をクリックします。Lambda」がログとして表示されればOKです。1.4.Lambda関数の変更DynamoDBから値を取得するために関数を変更します。変更後は画面右上の「保存」をクリックします。person簡単に処理の概要を説明します。Pythonであるboto3をインポート6〜12行目:person情報を取得する関数14〜16行目:メイン関数PythonからAWSのリソースにアクセスするためにboto3をインポートします。今回はDynamoDBを操作しますが、それ以外のリソースを操作する時にもboto3をインポートします。boto3で実行することができる関数はこちらのドキュメントに記載されています。今回は、boto3.resource('dynamodb')のget_item関数を実行しています。この関数でDynamoDBからperson_idに紐付くデータを取得しています。※メイン関数の部分は後ほど修正しますが、今はこのままにしておきます。1.5.Lambda関数のテスト先ほどと同様にLambda関数をテストします。「テスト」をクリックすると。DynamoDBから値が取得できていることが確認できます。さいごに簡単なアプリケーションを構築するためLambdaを作成しました。Gatewayを作成して行きたいと思います。〜ITエンジニアのお仕事とホンネ〜2月19日に新卒向けの会社説明会〜ITエンジニアのお仕事とホンネ〜を開催します。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。使いたいときの注意点を書きました。EC2)環境において、不要な踏み台サーバをなくすことができる便利なアップデートです。環境をDockerで構築してみました。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介252SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健231こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。