Criar e anexar uma política de recursos do API Gateway a uma API - Amazon API Gateway

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 ter 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
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Escolha uma API REST.

  3. No painel de navegação principal, escolha Política de recursos.

  4. Escolha Criar política.

  5. (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.

  6. Se você não usar um dos exemplos do modelo, insira a política de recurso.

  7. 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 usar a AWS CLI a fim de criar uma API e anexar uma política de recursos a ela, chame o comando create-rest-api da seguinte forma:

aws apigateway create-rest-api \ --name "api-name" \ --policy "{\"jsonEscapedPolicyDocument\"}"

Para usar a AWS CLI a fim de anexar uma política de recursos a uma API existente, chame o comando update-rest-api da seguinte forma:

aws apigateway update-rest-api \ --rest-api-id api-id \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
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 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 ter 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.