Estou recebendo um erro de acesso negado ao invocar uma operação de API da Amazon API Gateway com uma política de recursos.
Resolução
Siga estas etapas de solução de problemas para sua operação pública ou privada da API Gateway API.
Operações de API pública
1. Verifique se a operação da API tem uma política de recursos que permite ou bloqueia a solicitação com base em endereços IP. Se você não tiver o log de acesso configurado, configure o log de acesso para a API Gateway. Os logs de acesso contêm os endereços IP de origem para suas operações de API. Certifique-se de que o endereço IP não esteja na lista de negações. O endereço IP ou o intervalo CIDR devem permitir explicitamente o acesso na política de recursos.
Exemplo de política de recursos que permite somente três endereços IP:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:<region>:<account_number>:<api_id>/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:<region>:<account_number>:<api_id>/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"52.36.146.106",
"34.216.36.206/32",
"205.251.233.179/32"
]
}
}
}
]
}
Exemplo de política de recursos que bloqueia dois endereços IP:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:<region>:<account_number>:<api_id>/*"
]
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:<region>:<account_number>:<api_id>/*"
],
"Condition" : {
"IpAddress": {
"aws:SourceIp": ["52.36.146.106", "34.216.36.206/32" ]
}
}
}
]
}
2. O método HTTP (GET, POST) e o recurso da API Gateway (/, /foo, /foo/bar) para a solicitação da API devem permitir explicitamente o acesso. Verifique o atributo da política de recursos semelhante ao seguinte:
"Resource": [
"arn:aws:execute-api:<region>:<account_number>:<api_id>/<stage>/<http_method>/<resource_path_specifier>/*"
],
3. Verifique se a política de recursos usa outros tipos de métodos de autenticação ou autorizadores. A avaliação da política de recursos pela API Gateway é afetada pelo seu tipo de autenticação. Os exemplos de tipos de autenticação incluem um autorizador do AWS Lambda ou a autenticação do Amazon Cognito. Verifique se a política de recursos está configurada corretamente para o tipo de autenticação definido para sua API.
4. Certifique-se de reimplantar sua solicitação de API para que todas as alterações entrem em vigor. Para reimplantar sua solicitação de API, repita as etapas para implantar uma API REST em um estágio.
5. Se você estiver usando um exemplo de política de recursos da API Gateway, certifique-se de ter configurado todas as variáveis para seu ambiente.
6. Se sua política de recursos só permitir o acesso aos seus endereços IP da Amazon Virtual Private Cloud (Amazon VPC), faça o seguinte:
Permita que o endereço IP do roteador e o endereço IP do gateway NAT (endereço IP público) acessem sua política de recursos.
-or-
Altere o endpoint da API pública para um endpoint da API privada.
Operações de API privadas
1. Se a política de recursos tiver um endpoint da Amazon VPC, verifique a chave de condição na política. Se a política de recursos usar a chave de condição aws:SourceVpce, seu valor deverá ser a ID do endpoint da Amazon VPC, não o ID da VPC. Se a política de recursos usar a chave de condição aws:SourceVpc, seu valor deverá ser o ID da Amazon VPC, não o ID do endpoint da VPC.
Para verificar o tipo de endpoint, abra o console da Amazon VPC, escolha Endpoints e escolha seu endpoint.
2. Certifique-se de reimplantar sua solicitação de API para que todas as alterações entrem em vigor. Para reimplantar sua solicitação de API, repita as etapas para implantar uma API REST em um estágio.
3. Se você estiver usando um exemplo de política de recursos da API Gateway, certifique-se de configurar todas as variáveis para seu ambiente.
4. O método HTTP (GET, POST) e o recurso da API Gateway (/, /foo, /foo/bar) para a solicitação da API devem permitir explicitamente o acesso. Verifique o atributo da política de recursos semelhante ao seguinte:
"Resource": [
"arn:aws:execute-api:<region>:<account_number>:<api_id>/<stage>/<http_method>/<resource_path_specifier>/*"
],
5. Verifique se a política de recursos usa outros tipos de métodos de autenticação ou autorizadores. A avaliação da política de recursos pela API Gateway é afetada pelo seu tipo de autenticação. Os exemplos de tipos de autenticação incluem um autorizador do AWS Lambda ou a autenticação do Amazon Cognito. Verifique se a política de recursos está configurada corretamente para o tipo de autenticação definido para sua API.