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

API を手順を追って構築する

このセクションでは、リソースの作成、リソースでのメソッドの公開、目的の API 動作を達成するためのメソッドの設定、および API のテストとデプロイのステップを説明します。

  1. [Create new API] から [New API] を選択し、[API Name] に名前を入力します。次に、[Description] にオプションで説明を追加し、[Create API] を選択します。

     API を手動で作成する

    結果として、空の API が作成されます。[リソース] ツリーには、メソッドのないルートリソース (/) が表示されます。この演習では、PetStore デモウェブサイト (http://petstore-demo-endpoint.execute-api.come) の HTTP 統合を使用して API を作成します。わかりやすくするため、ルートの子として /pets リソースを作成し、クライアントが PetStore ウェブサイトから利用できる Pets 項目のリストを取得するために、このリソースで GET メソッドを公開します。

  2. /pets リソースを作成するには、ルートを選択し、[Actions]、[Create Resource] の順に選択します。

     リソースを作成する

    [Resource Name] に「Pets」と入力し、[Resource Path] の値はそのままにして、[Create Resource] を選択します。

     リソース Part B を作成する
  3. /pets リソースで GET メソッドを公開するには、[Actions] を選択し、[Create Method] を選択します。

     リソースでメソッドを作成する

    /pets リソースノードでリストから [GET] を選択し、チェックマークアイコンを選択してメソッドの作成を終了します。

     リソースでメソッドを作成する

    注記

    API メソッドの他のオプションには、以下があります。

    • [POST]: 主に子リソースの作成に使用されます。

    • PUT。既存のリソースを更新するために主に使用します (推奨はされませんが、子リソースの作成にも使用できます)。

    • DELETE: リソースの削除に使用されます。

    • [PATCH]; リソースの更新に使用されます。

    • [HEAD]: テストシナリオで主に使用します。GET と同じですが、リソースの表現を返しません。

    • OPTIONS。対象サービスに使用できる通信オプションに関する情報を取得するために呼び出し元が使用できます。

    作成されるメソッドは、まだバックエンドと統合されていません。次のステップでこれを設定します。

  4. メソッドの [Setup] ペインで、[Integration type] の [HTTP] を選択し、[HTTP method] ドロップダウンリストの [GET] を選択します。次に、[Endpoint URL] の値として「http://petstore-demo-endpoint.execute-api.com/petstore/pets」と入力し、他のすべての設定をデフォルトのままにして、[Save] を選択します。

    注記

    統合リクエストの [HTTP method] で、バックエンドによってサポートされているメソッドを選択する必要があります。HTTP または Mock integration の場合、メソッドリクエストと統合リクエストが同じ HTTP 動詞を使用すると意味があります。他の統合タイプの場合、メソッドリクエストでは、おそらく統合リクエストとは異なる HTTP 動詞を使用します。たとえば、Lambda 関数を呼び出すには、統合リクエストでは POST を使用して関数を呼び出す必要がありますが、Lambda 関数のロジックに応じて、メソッドリクエストでは任意の HTTP 動詞を使用できます。

      GET on Pets を PetStore サイトと統合する

    メソッドの設定が終了すると、[Method Execution] ペインが表示され、さらにメソッドリクエストを設定し、クエリ文字列またはカスタムヘッダーパラメーターを追加できます。また、統合リクエストを更新し、メソッドリクエストから入力データをマッピングして、バックエンドで必要な形式にすることもできます。

    PetStore ウェブサイトでは、特定のページのペットのタイプ ("Dog" や "Cat" など) ごとに、Pet 項目のリストを取得できます。type および page クエリ文字列パラメーターを使用して、このような入力を受け取ります。そのため、メソッドリクエストにクエリ文字列パラメーターを追加して、統合リクエストの対応するクエリ文字列にマッピングする必要があります。

  5. GET メソッドの [Method Execution] ペインで [Method Request] を選択し、[Authorization] の [AWS_IAM] を選択します。次に、[URL Query String Parameters] セクションを展開し、[Add query string] を選択して、type および page という名前の 2 つのクエリ文字列パラメーターを作成します。チェックマークアイコンを選択して、新しく追加されたクエリ文字列パラメーターを保存します。

      GET on Pets メソッドリクエストにクエリ文字列を追加する

    これで、クライアントはリクエストを送信するときに、ペットのタイプとページ番号をクエリ文字列パラメーターとして指定できます。これらの入力パラメータは、バックエンドの PetStore ウェブサイトに入力値を転送するために、統合クエリ文字列パラメータにマッピングする必要があります。メソッドでは AWS_IAM を使用するため、メソッドを呼び出すにはリクエストに署名する必要があります。

  6. メソッドの [Integration Request] ページから、[URL Query String Parameters] セクションを展開します。デフォルトでは、メソッドリクエストのクエリ文字列パラメーターは、同様の名前の統合リクエストのクエリ文字列パラメーターにマッピングされます。このデフォルトマッピングは、デモ API で動作します。これはそのままにしておきます。対応する統合リクエストパラメーターに別のリクエストパラメーターをマッピングするには、[Mapped from] 列に示すように、パラメーターの鉛筆アイコンを選択し、マッピング式を編集します。別の統合リクエストパラメーターにメソッドリクエストパラメーターをマッピングするには、最初に削除アイコンを選択して既存の統合リクエストパラメーターを削除し、[Add query string] を選択して新しい名前と目的のメソッドリクエストのパラメーターマッピング式を選択します。

     GET on Pets のクエリ文字列を、メソッドリクエストから統合リクエストにマッピングします

    シンプルなデモ API の作成が完了しました。これで API をテストできます。

  7. API Gateway コンソールを使用して API をテストするには、GET /pets メソッドの [Method Execution] ペインから [Test] を選択します。[Method Test] ペインで、[type] および [page] クエリ文字列にそれぞれ「Dog」および「2」と入力し、[Test] を選択します。

     GET on Pets メソッドのテスト呼び出し

    結果が次のように表示されます (テスト結果を表示するには、下へスクロールダウンしなければならない場合があります)。

      GET on Pets メソッドのテスト呼び出しの結果

    これでテストが成功したので、API をデプロイし、公開することができます。

  8. API をデプロイするには、API を選択し、[Actions] ドロップダウンメニューから [Deploy API] を選択します。

     API のデプロイ

    [Deploy API] ダイアログで、ステージ (または、API の最初のデプロイの場合は [[New Stage]]) を選択し、名前 (例: "test"、"prod"、"dev" など) を [Stage name] 入力フィールドに入力します。オプションで、[Stage description] または [Deployment description] (またはその両方) に説明を入力し、[Deploy] を選択します。

     API のデプロイ (パート 2)

    デプロイ後は、API のエンドポイントの呼び出し URL (Invoke URL) を取得できます。

    GET メソッドが匿名アクセスをサポートする場合(メソッドの許可タイプが NONE に設定されている場合など)、デフォルトのブラウザでメソッドを呼び出すには [URL の呼び出し] リンクをダブルクリックしてください。必要なら、URL の呼び出しにクエリ文字列パラメーターを付けることもできます。AWS_IAM 許可タイプについては、「アクセスキー ID とシークレットアクセスキー」で説明している通り、IAM アカウントの AWS ユーザーに対応するキーでサインインする必要があります。これを行うには、「署名バージョン 4」(SigV4) プロトコルをサポートするクライアントを使用してください。このようなクライアントとしては、AWS SDK または「Postman」Chrome ブラウザ拡張を使うアプリケーションなどがあります。POST、PUT、PATCH メソッドを呼び出すには、ペイロードを処理するクライアントの使用も必須です。

    Postman でこの API メソッドを呼び出すには、ステージ固有のメソッド呼び出し URL (前のイメージを参照) にクエリ文字列パラメータを追加して完全なメソッドリクエスト URL を作成します。

    Copy
    https://api-id.execute-api.region.amazonaws.com/test/pets?type=Dog&page=2

    ブラウザのアドレスバーにこの URL を指定します。HTTP 動詞として [GET] を選択します。[AWS 署名] を [タイプ] オプションで [認証} タブから選択し、リクエストを送信する前に以下の必須プロパティを指定します。

    • [アクセスキー] には、AWS IAM からプロビジョニングされた発信者の AWS アクセスキーを入力します。

    • [シークレットキー] には、最初にアクセスキーが作成されたときに AWS IAM からプロビジョニングされた発信者の AWS シークレットキーを入力します。

    • [AWS リージョン] には、呼び出し URL で指定された API ホスティング AWS リージョンを入力します。

    • [サービス名] には、 API Gateway 実行サービスについてexecute-api と入力します。

    SDK を使用してクライアントを作成する場合は、SDK で公開されたメソッドを呼び出して、リクエストに署名できます。実装の詳細については、該当する AWS SDK を参照してください。

    注記

    API が変更された場合、再度リクエスト URL を呼び出す前に、API を再デプロイして、新機能または更新された機能を使用できるようにする必要があります。