Application Load Balancer または Network Load Balancer を使用して API ゲートウェイのプライベート API を呼び出す方法を教えてください。

所要時間3分
0

Amazon API Gateway のプライベート API をロードバランサーの背後にあるターゲットとして設定したいと考えています。次に、AWS アカウントを使用して、Application Load Balancer または Network Load Balancer からプライベート API にアクセスしたいと考えています。

解決策

AWS Direct Connect または Amazon Route 53 を通してプライベート API にアクセスするには、「プライベート API を呼び出す」を参照してください。インターフェイス仮想プライベートクラウド (VPC) エンドポイントを使用して、別の AWS アカウントにある API Gateway プライベート REST API にアクセスすることもできます。

次に示す解決方法では、Amazon Virtual Private Cloud (Amazon VPC) エンドポイントの Elastic Network Interface の IP アドレスを使用します。この IP アドレスを使用し、プライベート API をターゲットとしてロードバランサーに追加します。

**重要:**API Gateway ではプライベート API のカスタムドメイン名はサポートされていません。この問題の解決方法としては、まず、ドメインを呼び出し、ロードバランサーにアタッチします。そして、次の設定を使用してプライベート API を呼び出します。

Amazon VPC エンドポイントを作成する

次の手順を実行します。

  1. Amazon VPC コンソールを開きます。
  2. [エンドポイント] を選択し、[エンドポイントの作成] を選択します。
  3. 次の情報を入力します。
    [サービス] に対して、com.amazonaws.com.your-region.execute-api を選択します。
    [VPC] で、貴社の Amazon VPC を選択します。
    [サブネット] では、異なるアベイラビリティーゾーン (AZ ID) にある 2 つのサブネットを選択します。
    注: execute-api を使用して VPC 内に Amazon VPC エンドポイントが既に設定されている場合は、プライベート DNS をオフにします。
  4. [エンドポイントを作成] を選択します。
  5. エンドポイントを選択し、[サブネット] を選択して、**[IP アドレス]**をコピーします。

詳細については、「API ゲートウェイのプライベート REST API」を参照してください。

プライベート REST API を作成して、Amazon VPC エンドポイントにアクセス許可を付与する

次の手順を実行します。

  1. API Gateway コンソールを開き、[API の作成] を選択します。
  2. [REST API] で、[ビルド] を選択します。
  3. [設定] には、次の情報を入力します。
    [API 名] に、API 名を入力します。
    [エンドポイントタイプ] に、[プライベート] を選択します。
    [エンドポイント ID] には、作成されたエンドポイント ID を入力します。
  4. [API の作成] を選択します。
  5. ナビゲーションペインで、[リソースポリシー] を選択します。
  6. その後、以下のポリシーを入力します:
    {
      "Version": "2012-10-17",  "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*",
          "Condition": {
            "StringNotEquals": {
              "aws:SourceVpce": "vpce-081234d1ad408e"
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*"
        }
      ]
    }
    **注:**vpce-081234d1ad408e を VPC エンドポイント ID に置き換えます。また、arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID を API の Amazon Resource Name (ARN) に置き換えます。
  7. [保存] を選択します。

AWS 証明書マネージャーのパブリック認証を作成またはインポートする

公開証明書をリクエストするか、証明書をインポートします。

Application Load Balancer または Network Load Balancer の作成

Application Load Balancer を作成するか、Network Load Balancer を作成します。

ターゲットグループを作成する

次の手順を実行します。

  1. Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
  2. ナビゲーションペインの [ロードバランシング] で、**[ロードバランサー] ** を選択し、 [ターゲットグループ] を選択します。
  3. [ターゲットグループを作成する] を選択します。
  4. 次の情報を入力します。
    [ターゲットタイプ] に対して [IP アドレス] を選択します。
    [ターゲットグループ名] に名前を入力します。
    Application Load Balancer
    [プロトコル] に、[HTTPS] を選択します。
    [ポート] には、 [443] を選択します。
    [VPC] で、[VPC] を選択します。
    ヘルスチェックパスには「/」を入力し成功コードには ** 200,403 と入力して、VPC エンドポイントが Healthy ** と表示されるようにします。** **
    Network Load Balancer
    [プロトコル] で、[TLS] を選択します。
    [ポート] には、 [443] を選択します。
    [VPC] で、[VPC] を選択します。
  5. [次へ] を選択します。
  6. [IP を指定] に、「Amazon VPC エンドポイントのインターフェイスの作成」セクションでコピーした IP アドレスを入力します。次に、[IPv4 ** ** アドレスを追加] を選択します。
  7. [ターゲットグループを作成する] を選択します。

ロードバランサーを設定する

次の手順を実行します。

  1. EC2 コンソールを開きます。
  2. ナビゲーションペインの [ロードバランサー] を選択し、 [ロードバランサーの作成] を選択します。
    Application Load Balancer
    [スキーム] では、構成に応じて [インターネット向け] または [社内向け] を選択します。
    [プロトコル] に、[HTTP] を選択します。
    [VPC] と**[サブネット]** では、ご使用の VPC とサブネットを選択します。
    Network Load Balancer
    [スキーム] では、構成に応じて [インターネット向け] または [社内向け] を選択します。
    [プロトコル] で、[TLS] を選択します。
    [VPC] と**[サブネット]** では、ご使用の VPC とサブネットを選択します。
    [セキュリティ ポリシー] で、既定のポリシー [ELBSecurityPolicy-TLS (recommended)] を選択します。
    [デフォルト SSL/TLS 証明書] では、[ACM から] を選択します。
    [証明書を選択] を選択し、証明書を選択します。
  3. [ロードバランサーの作成] を選択します。
    注:ロードバランサーのターゲットは、VPC エンドポイントが作成した Elastic Network Interface の IP アドレス内にあります。この Elastic Network Interface を見つけるには、VPC エンドポイントを選択して、[サブネット] タブを開いてください。

Amazon Route 53 パブリックまたはプライベートホストゾーン内へのレコードの作成

パブリックホストゾーンまたはプライベートホストゾーンを作成します。次に、CNAME レコードを作成し、Application Load Balancer または Network Load Balancer に関連付けます。

カスタムドメインの作成

API Gateway コンソールでカスタムドメインを作成します。次に、プライベート Rest API をカスタムドメインにマッピングします。

テスト

パブリックロードバランサーの場合は、ローカルマシンから curl リクエストを実行します。プライベートロードバランサーの場合は、ロードバランサーのサブネットの 1 つで新しい EC2 インスタンスを起動します。次に、以下のような curl リクエストを行います。

curl -v https://{custom-domain-name}/<resource-path>

リクエストが成功すると、200 OK レスポンスコードが返されます。リクエストが失敗すると、403 Forbidden レスポンスコードまたは DNS 解決エラーが返されます。問題が発生したときは、「Application Load Balancer のトラブルシューティング」を参照してください。

関連情報

Direct Connect 接続を介してプライベート API ゲートウェイに接続するにはどうすればよいですか。

API Gateway プライベート API エンドポイントへの接続時に発生した問題をトラブルシューティングするにはどうすればよいですか?

Amazon CloudWatch を使用した REST API の実行のモニタリング

API ゲートウェイで REST API 用の CloudWatch ロギングをセットアップする

コメントはありません

関連するコンテンツ