メニュー
Amazon API Gateway
開発者ガイド

AWS 統合で API Gateway API をビルドする

API Gateway コンソールを使用して Lambda プロキシ統合で API Gateway API をビルドするLambda 統合で API Gateway API を構築する のトピックではいずれも、API Gateway API を作成して、統合された Lambda 関数を公開する方法について説明します。また、API Gateway API を作成して、Amazon SNS や Amazon S3、Amazon Kinesis、AWS Lambda などの AWS サービスを公開することができます。このステップは、AWS 統合で行うことができます。Lambda 統合または Lambda プロキシ統合は、特殊なケースです。ここで、Lambda 関数の呼び出しは、API Gateway API から公開されます。

すべての AWS サービスで、これらの機能を公開するための専用 API がサポートされています。ただし、アプリケーションプロトコルやプログラミングインターフェイスは、サービスによって異なる場合があります。AWS を統合した API Gateway API には、クライアントがさまざまな AWS サービスにアクセスできるように、一貫したアプリケーションプロトコルが使用されているという利点があります。

このウォークスルーでは、Amazon SNS を公開するための API を作成します。API を他の AWS サービスと統合するその他の例については、「サンプルおよびチュートリアル」を参照してください。

Lambda プロキシ統合とは異なり、他の AWS サービスに対応するプロキシ統合はありません。そのため、API メソッドは単一の AWS アクションと統合されます。柔軟性を高めるために、プロキシ統合と同様、Lambda プロキシ統合をセットアップできます。Lambda 関数は、他の AWS アクションのリクエストを解析して処理します。

エンドポイントがタイムアウトになると、API Gateway は再試行しません。API 発信者は、エンドポイントのタイムアウトを処理するよう再試行ロジックを実行する必要があります。

このウォークスルーでは、「Lambda 統合で API Gateway API を構築する」の手順とコンセプトに基づいて構築します。このウォークスルーを完了していない場合は、先に完了してから、このチュートリアルに進むことをお勧めします。

前提条件

このウォークスルーを開始する前に、次を行う必要があります。

  1. API GatewayAPI を構築する準備を整える」の各ステップを実行します。

  2. IAM でポリシーとロールを作成するためのアクセス権限が IAM ユーザーに付与されていることを確認します。IAM のポリシーとロールは、このウォークスルーで作成する必要があります。

  3. MyDemoAPI という名前の新しい API を作成します。詳細については、「API Gateway コンソールを使用して HTTP カスタム統合で API をビルドする 」を参照してください。

  4. test という名前のステージに少なくとも 1 回 API をデプロイします。詳細については、『Lambda 統合で API Gateway API を構築する』の「API のデプロイ」を参照してください。

  5. Lambda 統合で API Gateway API を構築する」の残りの設定手順を完了します。

  6. Amazon Simple Notification Service (Amazon SNS) で少なくとも 1 つのトピックを作成します。デプロイした API を使用して、Amazon SNS で AWS アカウントに関連付けられているトピックのリストを取得します。Amazon SNS でトピックを作成する方法については、「トピックの作成」を参照してください (ステップ 5 で説明しているトピック ARN をコピーする必要はありません)。

ステップ 1: リソースを作成する

このステップでは、AWS サービスプロキシと AWS サービスのやり取りを可能にするリソースを作成します。

リソースを作成するには

  1. https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。

  2. [MyDemoAPI] が表示されている場合は、[Resources] を選択します。

  3. [Resources] ペインで、1 つのスラッシュ (/) で表されるリソースのルートを選択し、[Create Resource] を選択します。

  4. [Resource Name] に「MyDemoAWSProxy」と入力し、[Create Resource] を選択します。

ステップ 2: GET メソッドを作成する

このステップでは、AWS サービスプロキシと AWS サービスのやり取りを可能にする GET メソッドを作成します。

GET メソッドを作成するには

  1. [Resources] ペインで、[/mydemoawsproxy] を選択してから [Create Method] を選択します。

  2. [HTTP method] で、[GET] を選択し、選択内容を保存します。

ステップ 3: AWS サービスプロキシの実行ロールを作成する

このステップでは、AWS サービスプロキシと AWS サービスとのやり取りで使用される IAM ロールを作成します。この IAM ロールを AWS サービスプロキシの実行ロールと呼びます。このロールがないと、API Gateway は AWS サービスとやり取りすることはできません。以降の手順で、先ほど作成した GET メソッドの設定でこのロールを指定します。

AWS サービスプロキシの実行ロールとそのポリシーを作成するには

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. [Policies] を選択します。

  3. 次のいずれかを行ってください。

    • [Welcome to Managed Policies] ページが表示された場合は、[Get Started] を選択してから、[Create Policy] を選択します。

    • ポリシーのリストが表示された場合は、[Create Policy] を選択します。

  4. [Create Your Own Policy] の横の [Select] を選択します。

  5. [Policy Name] に、ポリシーの名前 (APIGatewayAWSProxyExecPolicy など) を入力します。

  6. [Description] に、「Enables API Gateway to call AWS services」と入力します。

  7. [Policy Document] に、以下のように入力し、[Create Policy] を選択します。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": [ "*" ], "Action": [ "sns:ListTopics" ] } ] }

    このポリシードキュメントでは、呼び出し元に対して AWS アカウントの Amazon SNS トピックのリストの取得を許可します。

  8. [Roles] を選択します。

  9. [Create Role] を選択します。

  10. [Select role type] で、[AWS Service] を選択し、続いて [API Gateway] 選択します。

  11. [Next: Permissions] を選択します。

  12. [Next: Review] を選択します。

  13. [Role Name] ボックスに、実行ロール名 (例: APIGatewayAWSProxyExecRole) を入力後、必要に応じてこのロールの説明を入力し、[Create role] を選択します。

  14. [Roles] リストで、作成したロールを選択します。リストを下にスクロールする必要がある場合があります。

  15. 選択したロールの場合は、[Attach policy] を選択します。

  16. 前に作成したポリシー (APIGatewayAWSProxyExecPolicy) の横にあるチェックボックスをオンにし、[Attach policy] を選択します。

  17. 先ほど作成したロールには、次の信頼関係があり、アタッチされたポリシーによって許可される任意のアクションのロールを API ゲートウェイで引き受けることができます。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    [Role ARN] で、実行ロールの Amazon リソース名 (ARN) をメモします。これは、後で必要になります。ARN は arn:aws:iam::123456789012:role/APIGatewayAWSProxyExecRole のようになります。ここで、123456789012 はお客様の AWS アカウント ID です。

ステップ 4: メソッドの設定を指定してメソッドをテストする

このステップでは、GET メソッドが AWS サービスプロキシ経由で AWS サービスとやり取りできるように、GET メソッドの設定を指定します。その後、メソッドをテストします。

GET メソッドの設定を指定してそのメソッドをテストするには

  1. API Gateway コンソールで、MyDemoAPI という名前の API の [Resources] ペイン、[mydemoawsproxy] の順に移動し、[GET] を選択します。

  2. [Setup] ペインの [Integration type] で、[Show advanced] を選択してから、[AWS Service Proxy] を選択します。

  3. [AWS Region] で、Amazon SNS トピックを取得する AWS リージョンの名前を選択します。

  4. [AWS Service] で、[SNS] を選択します。

  5. [HTTP method] で、[GET] を選択します。

  6. [Action] に、「ListTopics」と入力します。

  7. [Execution Role] に、実行ロールの ARN を入力します。

  8. [Path Override] を空白のままにします。

  9. [Save] を選択します。

  10. [Method Execution] ペインの [Client] ボックスで、[TEST] を選択してから、[Test] を選択します。正常に終了すると、[Response Body] に以下のようなレスポンスが表示されます。

    Copy
    { "ListTopicsResponse": { "ListTopicsResult": { "NextToken": null, "Topics": [ { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1" }, { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2" }, ... { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N" } ] }, "ResponseMetadata": { "RequestId": "abc1de23-45fa-6789-b0c1-d2e345fa6b78" } } }

ステップ 5: API をデプロイする

このステップでは、API をデプロイして、API Gateway コンソール外で呼び出せるようにします。

API をデプロイする

  1. [Resources] ペインで、[Deploy API] を選択します。

  2. [Deployment stage] で、[test] を選択します。

  3. [Deployment description] に、「Calling AWS service proxy walkthrough」と入力します。

  4. [Deploy] を選択します。

ステップ 6: API をテストする

このステップでは、API Gateway コンソールの外から、AWS サービスプロキシを使用して、Amazon SNS サービスとやり取りします。

  1. [Stage Editor] ペインの [Invoke URL] の横で、URL をクリップボードにコピーします。以下のようになります。

    Copy
    https://my-api-id.execute-api.region-id.amazonaws.com/test
  2. ブラウザーの新しいタブのアドレスボックスにその URL を貼り付けます。

  3. 次のように /mydemoawsproxy を追加します。

    Copy
    https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoawsproxy

    URL を参照します。以下のような情報が表示されます。

    Copy
    {"ListTopicsResponse":{"ListTopicsResult":{"NextToken": null,"Topics":[{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"},{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"},...{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N}]},"ResponseMetadata":{"RequestId":"abc1de23-45fa-6789-b0c1-d2e345fa6b78}}}

ステップ 7: クリーンアップ

AWS サービスプロキシの動作に必要な IAM リソースを削除できます。

警告

AWS サービスプロキシが依存している IAM リソースを削除した場合、そのリソースに依存している AWS サービスプロキシと API はすべて機能しなくなります。IAM リソースの削除は元に戻すことができません。その IAM リソースを再び使用する場合は、作成し直す必要があります。

関連付けられた IAM リソースを削除する

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. [Details] エリアで、[Roles] を選択します。

  3. [APIGatewayAWSProxyExecRole]、[Role Actions]、[Delete Role] の順に選択します。プロンプトが表示されたら、[Yes, Delete] を選択します。

  4. [Details] エリアで、[Policies] を選択します。

  5. [APIGatewayAWSProxyExecPolicy]、[Policy Actions]、[Delete] の順に選択します。プロンプトが表示されたら、[Delete] を選択します。

このチュートリアルはこれで終了です。AWS サービスプロキシとしての API 作成の詳細な説明については、「Amazon S3 プロキシとして API を作成する」、「Lambda 関数の API を作成する」、または「Amazon Kinesis プロキシとして API Gateway API を作成する」を参照してください。