Aws-lambda-additional-example
AWS Lambda –追加の例
これまで、AWS LambdaとAWSサービスの連携を見てきました。 その知識に基づいて、単純なユーザー登録フォームを作成し、AWS LambdaへのAPIゲートウェイを使用してデータを投稿しましょう。 AWS Lambdaは、イベントまたはAPIゲートウェイトリガーからデータを取得し、それらの詳細をDynamoDBテーブルに追加します。
例
私たちは例を考えて、それに対して次の機能を実行しましょう-
- DynamoDBテーブルを作成する
- ユーザー登録用のフォームを作成する
- AWS SNSサービスを使用してメッセージを電話に送信するAWS LambdaとAPIゲートウェイを作成する
- フォームデータをPOSTしてDynamoDbテーブルに挿入するAWS LambdaとAPIゲートウェイを作成する
- Dynamodbテーブルからデータを読み取るためのAWS LambdaとAPIゲートウェイを作成する
- ユーザー登録フォームの最終作業
DynamoDBテーブルを作成する
入力したデータはDynamodDBテーブルに保存されます。 APIゲートウェイを使用して入力されたデータをAWS Lambdaと共有し、AWS Lambdaは詳細をDynamoDBに追加します。
次の詳細を使用して、AWSコンソールでDynamodDBテーブルを作成できます。 最初に、AWSサービスに移動し、 DynamoDB をクリックします。 Table をクリックして、以下に示すようにテーブルを作成します-
ARNを使用して、AWS Lambdaで使用するDynamoDBのポリシーを作成できます。
IAMに移動し、ポリシー*を選択します。 *Create policy をクリックし、以下に示すようにDynamodDBとしてサービスを選択します-
上記の[*すべてのDynamoDB *アクション]をクリックします。 リソースを選択し、以下に示すようにテーブルのARNを入力します-
次に、以下に示すように*追加*をクリックします。
画面の最後にある Review policy ボタンをクリックすると、次のウィンドウが表示されます-
ポリシーの名前を入力し、ページの最後にある[*ポリシーの作成]ボタンをクリックします。 ここで、Lambdaで使用するロールを作成する必要があります。 DynamoDB、APIGateway、およびLambdaのアクセス許可が必要です。
AWSサービスに移動し、IAMを選択します。 左側から[役割]を選択し、必要な役割を追加します。
役割名を入力し、[役割の作成]をクリックします。 作成されるロールは *roleforlambdaexample です。
ユーザー登録用のフォームを作成する
入力して、dynamodbテーブルからデータを読み取るためのユーザー登録フォームの表示を次に示します。
AWS LambdaとAPI Gatewayを作成して、SNSサービスを使用して電話にOTPメッセージを送信します
ユーザー登録フォームが表示されている場合は、 validate phone ボタンがあります。 ユーザーは、電話番号を入力し、[電話番号の検証]ボタンをクリックして電話番号を検証することを想定しています。
この目的のために-
ユーザーがこのボタンをクリックすると、電話の詳細を含むAPIゲートウェイのpostメソッドが呼び出され、AWS Lambdaが内部的にトリガーされます。
次に、AWS Lambdaは、AWS SNSサービスを使用して入力された電話番号にOTPを送信します。
ユーザーはOTPを受け取り、このOTP番号を入力する必要があります。
OTPを入力するためのテキストボックスは、電話番号を入力し、[電話の検証]ボタンをクリックすると表示されます。
ユーザーがユーザー登録フォームを送信できるようにするには、AWS Lambdaから受け取ったOTPとユーザーが入力したOTPが一致する必要があります。
電話検証の動作を説明する簡単なブロック図はここに示されています-
作成されたAWS Lambda関数は次のとおりです-
対応するAWS Lambdaコードは以下のとおりです-
SNSサービスを使用してOTPコードを送信していることに注意してください。 このコードは、ユーザーがユーザー登録フォームに入力した携帯電話番号を検証するために使用されます。 上記の電話検証用に作成されたAPIゲートウェイは次のとおりです-
指定されたLambda関数は phonevalidationexample です。 ここで携帯電話の詳細を取得して、AWS Lambda内で使用します。 次に、AWS LambdaはOTPコードを指定された携帯電話番号に送信します。
AWS LambdaとAPI Gatewayを作成してフォームデータをPOSTし、DynamoDBテーブルに挿入する
ユーザー登録フォームの場合、すべてのフィールドは必須です。 フォームに入力されたデータがAPI Gateway URLにポストされるAJAX呼び出しが行われます。
送信ボタンの動作を説明する簡単なブロック図がここに示されています-
フォームに入力すると、送信ボタンは、AWS LambdaをトリガーするAPIゲートウェイを呼び出します。 AWS LambdaはイベントまたはAPI Gatewayからフォームの詳細を取得し、データはDynamodDBテーブルに挿入されます。
API GatewayとAWS Lambdaの作成について理解しましょう。
まず、AWSサービスに移動し、Lambdaをクリックします。 作成されたラムダ関数はここに示されているとおりです-
ここで、APIゲートウェイを作成するには、AWSサービスに移動し、 API Gateway を選択します。 以下に示す Create API ボタンをクリックします。
- API名*を入力し、 Create API ボタンをクリックしてAPIを追加します。
これで、 registeruser と呼ばれるAPIが作成されます。 APIを選択し、*アクション*ドロップダウンをクリックして*リソース*を作成します。
[リソースの作成]をクリックします。 次に、 POST メソッドを追加しましょう。 このためには、左側で作成されたリソースをクリックし、*アクション*ドロップダウンから*メソッドの作成*を選択します。 これは、以下に示すようにドロップダウンを表示します-
POSTメソッドを選択し、上記で作成したLambda関数を追加します。
[保存]ボタンをクリックして、メソッドを追加します。 フォームの詳細をLambda関数 lambdaexample に送信するには、以下に示すように Integration Request を追加する必要があります-
フォームの詳細を投稿するには、*統合リクエスト*をクリックする必要があります。 詳細が下に表示されます。
次に、[マッピングテンプレートの追加]をクリックして、コンテンツタイプを入力します。 ここでは、コンテンツタイプとして application/json を追加しました。 それをクリックして、ここで以下に示すようにフィールドをjson形式で入力する必要があります-
今、*保存*ボタンをクリックして、以下に示すようにAPIをデプロイします-
以下は、lファイル内で使用するPOST用に作成されたAPIです。 作成されたリソースのCORSを有効にする必要があることに注意してください。 APIゲートウェイURLを使用してajax呼び出しを行うため、CORSを有効にする必要があります。
CORSを有効にするメソッドを選択します。 [* CORSを有効にして既存のCORSヘッダーを置き換える*]をクリックします。
次のように確認画面が表示されます-
[はい、既存の値を置き換えます] *をクリックして、CORSを有効にします。
POST API GatewayのAWS Lambdaコードは次のとおりです-
AWS Lambdaハンドラーのイベントパラメーターには、POST統合リクエストで以前に追加されたすべての詳細が含まれます。 コードからわかるように、イベントの詳細がDynamodDBテーブルに追加されます。
次に、以下に示すようにAWS-SDKからサービスの詳細を取得する必要があります-
DynamodDBテーブルからデータを読み取るためのAWS LambdaとAPI Gatewayを作成する
ここで、DynamoDBテーブルからデータを読み取るAWS Lambda関数を作成します。 データをhtmlフォームに送信するAWS Lambda関数に対してAPIGatewayをトリガーします。
作成されたAWS Lambda関数は以下のとおりです-
対応するAWS Lambdaコードは次のとおりです-
ここで、データはDynamoDBテーブルから読み取られ、コールバックに渡されます。 ここで、APIGatewayを作成し、AWS Lambda関数をトリガーとして追加します。
前に作成したAPIにgetメソッドを追加します。
追加されたLambda関数は lambdareaddataexample です。 [保存]をクリックしてメソッドを保存し、APIをデプロイします。
ユーザー登録フォームの最終作業
フォームの最終的な表示は以下のとおりです-
次に、上記のように詳細を入力します。 送信ボタンが無効になっていることに注意してください。 それは示されているようにすべての詳細が入力された場合にのみ有効になります-
ここで、携帯電話番号を入力し、*電話番号の検証*ボタンをクリックします。 *「OTPがモバイルに送信されています。続行するにはOTPを入力してください」*という警告メッセージが表示されます。 モバイル番号に送信されるOTPは次のとおりです-
OTPと残りの詳細を入力し、フォームを送信します。
送信後のDynamoDB registeruser テーブルのデータは次のとおりです-
コードの詳細は以下のとおりです-
- 例1l *
これまで、APIのAJAX呼び出しを実行し、上記のようにデータを作成して投稿しました。
テーブルにデータを追加するためのAJAX呼び出しは次のとおりです-
データを読み取るために、以下のコードが与えられている関数が呼び出されることに注意してください-
あなたが携帯電話番号検証ボタンをクリックすると、次のコードが呼び出され、携帯電話番号を送信します-