Aws-lambda-working-with-amazon-api-gateway

提供:Dev Guides
移動先:案内検索

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を選択します。

Create Iam

IAMに移動し、以下に示すように左側のセクションから*ロール*を選択します-

ダッシュボードメニュー

Lambda関数の[ロールの作成]をクリックします。

追加リソース

Lambdaを選択し、下部にある[許可]をクリックします。 API GatewayとLambdaに必要な権限を選択します。

タイプを選択

検索でAPIゲートウェイを検索すると、関連するすべての権限がリストされます。 ここでは、以下に示すように、APIゲートウェイへのフルアクセスを選択しました-

接続許可

ここで、APIゲートウェイを検索すると、関連するすべての権限がリストされます。 ここでは、以下に示すように、APIゲートウェイへのフルアクセスを選択しました-

Api Gateway

ポリシーについても同じプロセスを繰り返す必要があります。

ポリシー

必要なポリシーの選択が完了したら、次のステップのために*レビュー*をクリックします。 以下に示すように、選択に応じて役割の名前を入力します-

レビュー

ロールに添付されたポリシーを表示します。 [ロールの作成]をクリックすると、ロールの作成が完了し、ラムダ関数を続行できます。

AWS Lambda関数を作成する

AWSサービスに移動し、ラムダサービスをクリックして、APIゲートウェイに接続するための関数を作成します。

計算

Lambda関数のUI画面を以下に示します。 [関数の作成]ボタンをクリックして、Lambda関数の作成を続行します。

UI画面

関数の名前を入力し、上で作成した既存のロールを選択します。

名前を入力

*lambdawithapigateway* という名前の関数が正常に作成されたことを示すメッセージが点滅します。

Lambda Gateway

ここでは、 nodejs ランタイムを使用してコードを記述します。 helloworld メッセージを含むAWSコードは以下のとおりです-

環境

AWS Lambdaコードは index.js ファイルにあります。 ハンドラーと呼ばれる関数には、パラメーター、つまり events、context および callback があります。

コールバック関数には基本的にエラーと成功メッセージがあります。 ここではエラーに関連するコードがないため、nullが渡され、成功メッセージは* HelloWorld from lambda。*であることに注意してください。

最後に、追加した変更を保存し、Lambda関数をAPIゲートウェイに追加します。

APIゲートウェイを作成する

以下に示すように、AWSアカウントにログインし、API Gatewayを開きます-

コンテンツ配信

[APIゲートウェイ]をクリックすると、新しいAPIゲートウェイを作成できる画面に移動します。

Amazon Gateway

*Create API* をクリックし、以下に示すように詳細を追加します-

新規作成

画面の右側にある[ Create API ]ボタンをクリックします。 これにより、新しく作成されたAPIが画面の左側に表示されます。

新しいApiを作成

[アクション]ドロップダウンをクリックして、APIの新しいリソースを作成します。

アクションドロップダウン

次に、以下に示すように新しいリソースを作成します-

リソースグループ

以下に示すように、*リソース名*を入力します。 最後に作成されたURLに入力されたリソースの名前が表示されます。 *リソースの作成*をクリックすると、次のように画面に表示されます-

子リソース

リソースサービス

以下に示すように、作成されたリソースに GET/POST メソッドを追加します。 *アクション*ドロップダウンからメソッドを選択します。

メソッドの取得

*GET* メソッドをクリックして、APIにメソッドを追加します。

Apiメソッド

次のステップは、Lambda関数と統合する統合です。 次に、以下に示すようにLambda関数を追加します-

Get Setup

Lambda関数をAPI Gatewayにリンクする

前に作成したラムダ関数を選択します。

hello Setup

変更を保存すると、以下に示すように許可を求めるダイアログボックスが表示されます-

許可の追加

許可のために[OK]をクリックします。 これは、APIゲートウェイHTTPリクエストとLambda関数間の実行の詳細です-

メソッド実行

次に、APIゲートウェイの変更をデプロイします。 この目的のために、以下に示すように、 Actions ドロップダウンから Deploy API を選択する必要があります-

Deploy API

*Deploy API* を選択します。 展開状態を尋ねます。 [展開ステージ]ドロップダウンから[新しいステージ]を選択し、ステージ名を[生産]として追加します。

デプロイの選択

  • デプロイ*ボタンをクリックすると、以下に示すようにURLにリダイレクトされます-

クリックデプロイ

左側から GET メソッドを選択して、URLを取得します。 新しいタブでURLを開き、Lambda関数からのメッセージを確認します。

Select Get

これは、AWS LambdaとAWS API Gatewayを使用した基本的な例です。 上記の例では、Lambda関数でメッセージをハードコーディングしました。

次に、API Gatewayからメッセージの詳細を取得します。 APIへのAJAX呼び出しなど、HTTPS呼び出しを別のドメインから呼び出す必要がある場合、作成されたAPIゲートウェイのCORSを有効にする必要があります。

API用に作成されたreSourceを選択し、[アクション]ドロップダウンをクリックします-

Helloメソッド

今、 Enable CORS は次の画面を開きます-

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形式で追加します-

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からメッセージに送信された詳細を読み取り、ブラウザに表示します。