Amazon API Gateway でプライベート API を作成する
概要
Amazon API Gateway でプライベート API を作成した際のメモ。
VPC エンドポイントの作成
サービス -> VPC -> エンドポイントでエンドポイント作成。
サービスカテゴリ「AWS サービス」
サービス名「com.amazonaws.<リージョン名>.execute-api」
VPC、サブネットを選択し、プライベート DNS 名を有効にする。
セキュリティグループは、インバウンドで HTTPS TCP 443 を許可しておく。
API の作成
エンドポイントタイプ「プライベート」
作成したら、アクセスするURLのサブドメインを確認する。APIのリソース(XXXX)のXXXX部分。
リソースポリシー設定
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<リージョン名>:<アカウントID>:*/*" "Condition": { "StringNotEqualsIfExists": { "aws:sourceVpce": "<VPCエンドポイントのID>" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<リージョン名>:<アカウントID>:*/*" } ] }
確認
$ curl https://XXXXXX.execute-api.<リージョン名>.amazonaws.com/Prod/hello Hello,
手元のPCからcurl
$ curl https://XXXXXX.execute-api.<リージョン名>.amazonaws.com/Prod/hello curl: (6) Could not resolve host: XXXXXXXXXXXXXX