API Gatewayの「リソースポリシー」を使用するとAPIにアクセス制限を設定することができます。ここでは、特定の送信元IPアドレスだけAPIの利用を許可するように設定して動作確認します。
リソースポリシーを設定
リソースポリシーの設定
API Gatewayの管理画面を開き、対象APIのリソースポリシー
をクリックします。
以下の設定を登録します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:ap-northeast-1:account-id:api-id/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "xxx.xxx.xxx.xxx"
}
}
}
]
}
項目 | 概要 |
---|---|
account-id |
12桁のAWSアカウントIDを指定します。 |
api-id |
API Gateway識別子を指定します。 |
xxx.xxx.xxx.xxx |
許可するIPアドレスを指定します。 |
デプロイ
設定を変更したので再度APIをデプロイします。
動作確認
許可したIPの場合
$ curl https://xxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/message?name=wakuwaku
Hello wakuwaku
正常にAPIを実行できました。
許可したIP以外の場合
$ curl https://xxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/message?name=wakuwaku
{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-northeast-1:********XXXX:xxxxxxxxxxx/dev/GET/message"}
APIを実行できず、上記メッセージが表示されました。