Criar e anexar uma política de recursos do API Gateway a uma API
Para permitir que um usuário acesse sua API chamando o serviço de execução de API, você precisa criar uma política de recursos do API Gateway e anexar essa política à API. Ao anexar uma política à API, ela aplica as permissões da política aos métodos na API. Se você atualizar a política de recursos, será necessário implantar a API.
Pré-requisitos
Para atualizar uma política de recursos do API Gateway, você precisará ter as permissões apigateway:UpdateRestApiPolicy
e apigateway:PATCH
.
Para uma API regional ou otimizada para bordas, é possível anexar a política de recursos à API ao criá-la ou depois de implantá-la. Para uma API privada, não é possível implantar a API sem uma política de recursos. Para obter mais informações, consulte APIs REST privadas no API Gateway.
Anexar uma política de recursos a uma API do API Gateway
O procedimento a seguir mostra como anexar uma política de recursos a uma API do API Gateway.
- AWS Management Console
-
Como anexar uma política de recursos a uma API do API Gateway
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.
Escolha uma API REST.
-
No painel de navegação principal, escolha Política de recursos.
-
Escolha Criar política.
-
(Opcional) Escolha Selecionar um modelo para gerar um exemplo de política.
Nas políticas de exemplo, os espaços reservados são colocados entre chaves duplas ("{{placeholder
}}"
). Substitua cada um dos espaços reservados, incluindo as chaves, pelas informações necessárias.
Se você não usar um dos exemplos do modelo, insira a política de recurso.
-
Escolha Salvar alterações.
Se a API tiver sido implantada anteriormente no console do API Gateway, será necessário reimplantá-la para que a política de recursos entre em vigor.
- AWS CLI
-
Para criar uma API por meio da AWS CLI e anexar uma política de recursos a ela, use o comando create-rest-api indicado abaixo:
aws apigateway create-rest-api \
--name "api-name
" \
--policy "{\"jsonEscapedPolicyDocument
\"}"
Para anexar uma política de recursos a uma API existente por meio da AWS CLI, use o comando update-rest-api indicado abaixo:
aws apigateway update-rest-api \
--rest-api-id api-id
\
--patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument
\"}"'
Você também pode anexar sua política de recursos como um arquivo policy.json
separado e incluí-la no comando create-rest-api. O comando create-rest-api indicado abaixo cria uma API com uma politica de recurso:
aws apigateway create-rest-api \
--name "api-name
" \
--policy file://policy.json
policy.json
é uma política de recursos do API Gateway, como Exemplo: negar tráfego da API com base no intervalo ou endereço IP de origem.
- AWS CloudFormation
-
Você pode usar AWS CloudFormation para criar uma API com uma política de recursos. O seguinte exemplo cria uma API REST com o exemplo de política de recursos, Exemplo: negar tráfego da API com base no intervalo ou endereço IP de origem.
AWSTemplateFormatVersion: 2010-09-09
Resources:
Api:
Type: 'AWS::ApiGateway::RestApi'
Properties:
Name: testapi
Policy:
Statement:
- Action: 'execute-api:Invoke'
Effect: Allow
Principal: '*'
Resource: 'execute-api:/*'
- Action: 'execute-api:Invoke'
Effect: Deny
Principal: '*'
Resource: 'execute-api:/*'
Condition:
IpAddress:
'aws:SourceIp': ["192.0.2.0/24", "198.51.100.0/24" ]
Version: 2012-10-17
Resource:
Type: 'AWS::ApiGateway::Resource'
Properties:
RestApiId: !Ref Api
ParentId: !GetAtt Api.RootResourceId
PathPart: 'helloworld'
MethodGet:
Type: 'AWS::ApiGateway::Method'
Properties:
RestApiId: !Ref Api
ResourceId: !Ref Resource
HttpMethod: GET
ApiKeyRequired: false
AuthorizationType: NONE
Integration:
Type: MOCK
RequestTemplates:
application/json: '{"statusCode": 200}'
IntegrationResponses:
- StatusCode: 200
ResponseTemplates:
application/json: '{}'
MethodResponses:
- StatusCode: 200
ResponseModels:
application/json: 'Empty'
ApiDeployment:
Type: 'AWS::ApiGateway::Deployment'
DependsOn:
- MethodGet
Properties:
RestApiId: !Ref Api
StageName: test
Solução de problemas na política de recursos
As diretrizes de solução de problemas a seguir podem ajudar a resolver problemas em sua política de recursos.
Minha API retorna {"Message":"Usuário: anônimo não tem autorização para executar: execute-api:Invoke no recurso: arn:aws:execute-api:us-east-1:********/****/****/"}
Em sua política de recursos, se você definir a entidade principal como uma entidade principal da AWS, como a seguinte:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
""Principal": {
"AWS": [
"arn:aws:iam::account-id:role/developer",
"arn:aws:iam::account-id:role/Admin"
]
},
"Action": "execute-api:Invoke",
"Resource": [
"execute-api:/*"
]
},
...
}
Você deverá usar a autorização AWS_IAM
para todos os métodos em sua API, caso contrário, a API retornará a mensagem de erro anterior. Para obter mais instruções sobre como ativar a autorização AWS_IAM
para um método, consulte Métodos para APIs REST no API Gateway.
Não consigo atualizar minha política de recursos
Se você atualizar a política de recursos depois que a API for criada, será necessário implantar a API para propagar as alterações após a alteração da política. Atualizar ou salvar a política não altera o comportamento do tempo de execução da API. Para mais informações sobre como implantar sua API, consulte Implantar APIs REST no API Gateway.
Minha política de recursos retorna o seguinte erro: Documento de política inválido. Verifique a sintaxe da política e se as entidades principais são válidas.
Para solucionar esse erro, primeiro recomendamos que você verifique a sintaxe da política. Para obter mais informações, consulte Visão geral da linguagem de políticas de acesso para o Amazon API Gateway. Também recomendamos que você verifique se todas as entidades principais especificadas são válidas e não foram excluídas.
Além disso, se a API estiver em uma região opcional, verifique se todas as contas na política de recursos têm a região habilitada.