API GatewayでプライベートAPIを作成する方法

API GatewayでプライベートAPIを作成する方法

プライベートAPIを作成して、自分のアカウントのEC2からしかアクセスできないプライベートAPIを作成します。

エンドポイントの作成

まずVPCでエンドポイントを作成します。

API GatewayでプライベートAPIを作成する方法

API GatewayでプライベートAPIを作成する方法

セキュリティグループを指定します。インバウンドルールに443ポートを追加します。

「エンドポイントの作成」をクリックして完了です。VPCエンドポイントIDをAPI Gatewayで使います。

REST API(プライベート)の作成

API GatewayでREST API(プライベート)を作成します。

API GatewayでプライベートAPIを作成する方法

エンドポイントタイプを「プライベート」にします。そうするとVPCエンドポイントID入力欄が表示されますので、先ほど作成したVPCエンドポイントIDを入力します。

API GatewayでプライベートAPIを作成する方法

入力したら、「APIの作成」をクリックして完了です。

リソースポリシーの設定

プライベートAPIでは必ずリソースポリシーを設定しなければいけません。

以下のようにVPCエンドポイントIDを指定します。複数ある場合は、配列にしてカンマ区切りで指定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-northeast-1:111222333444:u11122xxx3/*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpce": "vpce-0a1234cdf6bee1234"
                }
            }
        }
    ]
}

仮にVPCエンドポイントを指定しない場合(Condition部分)、他アカウントのEC2から、プライベートAPIにアクセスすることが出来てしまうらしいので注意です。(試したことありません)

エンドポイントのプライベートDNS名が無効の場合

エンドポイントのプライベートDNS名が無効の場合ですが、curlで叩く際にヘッダにHostとURLはパブリックDNSを指定する必要があります。

[ec2-user@ip-10-0-0-100 ~]$ curl -X GET \
-H 'Host:{api-id}.execute-api.ap-northeast-1.amazonaws.com' \
https://{VPCエンドポイントID}.execute-api.ap-northeast-1.vpce.amazonaws.com/v1/Employee/1

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました