Aws-lambda-working-with-amazon-api-gateway
Amazon API Gatewayでの作業
AWS Lambda関数は、 HTTPS URLで呼び出すことができます。 GET、POST、PUTで実行できます。 HTTPS URLが呼び出されると、AWS Lambda関数もトリガーでき、 get/post を使用してHTTPSに渡されたデータをAWS Lambda内で使用可能にして、DynamoDBに挿入したり、メールを送信したりできます。
この章では、AWS lambdaおよびAPI Gatewayでの作業に関係するさまざまなプロセスについて詳しく説明します。
関係するプロセス
以下は、AWS lambdaおよびAPI Gatewayの操作に関係するプロセスです-
- 許可用のIAMロールを作成する
- AWSラムダ関数を作成する
- APIゲートウェイを作成する
- ラムダ関数をAPIゲートウェイにリンクする
- APIゲートウェイにデータを渡す
APIゲートウェイとAWS Lambdaの動作を説明する基本図をここに示します-
これらのプロセスについては、関連するスクリーンショットとともに、この章で詳しく説明します。
許可用のIAMロールを作成する
以下に示すように、Amazonサービスから、Lambda関数で使用されるロールを作成するためのIAMを選択します。
IAMに移動し、以下に示すように左側のセクションから*ロール*を選択します-
Lambda関数の[ロールの作成]をクリックします。
Lambdaを選択し、下部にある[許可]をクリックします。 API GatewayとLambdaに必要な権限を選択します。
検索でAPIゲートウェイを検索すると、関連するすべての権限がリストされます。 ここでは、以下に示すように、APIゲートウェイへのフルアクセスを選択しました-
ここで、APIゲートウェイを検索すると、関連するすべての権限がリストされます。 ここでは、以下に示すように、APIゲートウェイへのフルアクセスを選択しました-
ポリシーについても同じプロセスを繰り返す必要があります。
必要なポリシーの選択が完了したら、次のステップのために*レビュー*をクリックします。 以下に示すように、選択に応じて役割の名前を入力します-
ロールに添付されたポリシーを表示します。 [ロールの作成]をクリックすると、ロールの作成が完了し、ラムダ関数を続行できます。
AWS Lambda関数を作成する
AWSサービスに移動し、ラムダサービスをクリックして、APIゲートウェイに接続するための関数を作成します。
Lambda関数のUI画面を以下に示します。 [関数の作成]ボタンをクリックして、Lambda関数の作成を続行します。
関数の名前を入力し、上で作成した既存のロールを選択します。
*lambdawithapigateway* という名前の関数が正常に作成されたことを示すメッセージが点滅します。
ここでは、 nodejs ランタイムを使用してコードを記述します。 helloworld メッセージを含むAWSコードは以下のとおりです-
AWS Lambdaコードは index.js ファイルにあります。 ハンドラーと呼ばれる関数には、パラメーター、つまり events、context および callback があります。
コールバック関数には基本的にエラーと成功メッセージがあります。 ここではエラーに関連するコードがないため、nullが渡され、成功メッセージは* HelloWorld from lambda。*であることに注意してください。
最後に、追加した変更を保存し、Lambda関数をAPIゲートウェイに追加します。
APIゲートウェイを作成する
以下に示すように、AWSアカウントにログインし、API Gatewayを開きます-
[APIゲートウェイ]をクリックすると、新しいAPIゲートウェイを作成できる画面に移動します。
*Create API* をクリックし、以下に示すように詳細を追加します-
画面の右側にある[ Create API ]ボタンをクリックします。 これにより、新しく作成されたAPIが画面の左側に表示されます。
[アクション]ドロップダウンをクリックして、APIの新しいリソースを作成します。
次に、以下に示すように新しいリソースを作成します-
以下に示すように、*リソース名*を入力します。 最後に作成されたURLに入力されたリソースの名前が表示されます。 *リソースの作成*をクリックすると、次のように画面に表示されます-
以下に示すように、作成されたリソースに GET/POST メソッドを追加します。 *アクション*ドロップダウンからメソッドを選択します。
*GET* メソッドをクリックして、APIにメソッドを追加します。
次のステップは、Lambda関数と統合する統合です。 次に、以下に示すようにLambda関数を追加します-
Lambda関数をAPI Gatewayにリンクする
前に作成したラムダ関数を選択します。
変更を保存すると、以下に示すように許可を求めるダイアログボックスが表示されます-
許可のために[OK]をクリックします。 これは、APIゲートウェイHTTPリクエストとLambda関数間の実行の詳細です-
次に、APIゲートウェイの変更をデプロイします。 この目的のために、以下に示すように、 Actions ドロップダウンから Deploy API を選択する必要があります-
*Deploy API* を選択します。 展開状態を尋ねます。 [展開ステージ]ドロップダウンから[新しいステージ]を選択し、ステージ名を[生産]として追加します。
- デプロイ*ボタンをクリックすると、以下に示すようにURLにリダイレクトされます-
左側から GET メソッドを選択して、URLを取得します。 新しいタブでURLを開き、Lambda関数からのメッセージを確認します。
これは、AWS LambdaとAWS API Gatewayを使用した基本的な例です。 上記の例では、Lambda関数でメッセージをハードコーディングしました。
次に、API Gatewayからメッセージの詳細を取得します。 APIへのAJAX呼び出しなど、HTTPS呼び出しを別のドメインから呼び出す必要がある場合、作成されたAPIゲートウェイのCORSを有効にする必要があります。
API用に作成されたreSourceを選択し、[アクション]ドロップダウンをクリックします-
今、 Enable CORS は次の画面を開きます-
CORSを有効にする方法はほとんどありません。 Access-Control-Allow-Origin は*としてマークされています。これは、任意のドメインのAPIゲートウェイからコンテンツを取得できることを意味します。
APIを使用するドメイン名を指定することもできます。 *[CORSを有効にして既存のCORSヘッダーを置き換える]ボタンをクリックすると、以下に示す確認メッセージが表示されます-
[はい、既存の値を置き換えます]ボタンをクリックして有効にします。* CORSを有効にする画面は次のようになります-
API Gatewayにデータを渡す
以下に示すように、API Gateway displayhelloworld で作成されたAPIを開きます-
下に示すようにデータを送信するには、*統合要求*をクリックします-
*Body Mapping Templates* を選択し、この例の *Content-Type* を *application/json* として追加します。 追加されたコンテンツタイプをクリックして、次のように詳細を追加します-
次に、以下に示すようにテンプレートをJSON形式で追加します-
API Gatewayからデータを取得し、AWS Lambdaと共有するためのパラメーターとしてメッセージを受け取ったことを確認します。 詳細を取得する構文は上記のとおりです。
次に、APIをデプロイして、API Gateway URLで変更を利用できるようにします。 このため、Lambda関数を変更して、API Gateway URLに基づいてデータを表示する必要があります。 Lambda関数のコードは以下のgivnです。 イベントからメッセージを取得し、コールバックに渡すことに注意してください。
exports.handler = (event, context, callback) => {
let message = event.message;
callback(null, message);
};
次に、変更をLambdaに保存し、URLを押して変更を確認します。 以下のスクリーンショットを確認してください-
以下に示すようにURLをクリックしてください-
https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway
ここで、クエリ文字列としてメッセージをGET URLに渡していることに注意してください。 次に、以下に示すように出力を観察できます-
URLからメッセージに送信された詳細を読み取り、ブラウザに表示します。