У нас есть API в API Gateway, связанный с лямбда-функцией.API имеет три этапа (Dev / Stage / Prod), ключ API (необходим) и план использования (подключен ко всем трем этапам).
Мы пытаемся ограничить трафик для этого API, чтобы Stage/ Prod доступен только с наших серверов из нашего VPC, а Dev доступен только с IP-адреса нашего офиса.Мы попытались использовать Ресурсную Политику ниже, но она не работает.Stage / Prod по-прежнему доступен с IP-адреса нашего офиса.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-west-1:{{accountId}}:{{apiId}}/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:eu-west-1:{{accountId}}:{{apiId}}/Stage",
"arn:aws:execute-api:eu-west-1:{{accountId}}:{{apiId}}/Prod"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpc": "{{vpcId}}"
}
}
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-west-1:{{accountId}}:{{apiId}}/Dev",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "{{ipAddress}}"
}
}
}
]
}
Мы заменили наши реальные значения на рули {{}}.
Что мы делаем не так?Ура!