Creación y asociación de una política de recursos de API Gateway a una API - Amazon API Gateway

Creación y asociación de una política de recursos de API Gateway a una API

Para permitir a un usuario acceder a la API llamando al servicio de ejecución de la API, debe crear una política de recursos de API Gateway y asociar la política a la API. Al asociar una política a la API, se aplican los permisos de la política a los métodos de la API. Si actualiza la política de recursos, tendrá que implementar la API.

Requisitos previos

Para actualizar una política de recursos de API Gateway, necesitará el permiso apigateway:UpdateRestApiPolicy y el permiso apigateway:PATCH.

Para una API regional u optimizada para sistemas perimetrales, puede adjuntar la política de recursos a la API a medida que la crea o después de implementarla. Para una API privada, no puede implementar la API sin una política de recursos. Para obtener más información, consulte API de REST privadas en API Gateway.

Asociación de una política de recursos a una API de API Gateway

El siguiente procedimiento muestra cómo asociar una política de recursos a una API de API Gateway.

AWS Management Console
Para asociar una política de recursos a una API de API Gateway
  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. Elija una API de REST.

  3. En el panel de navegación principal, elija Política de recursos.

  4. Elija Crear política.

  5. (Opcional) Elija Seleccionar una plantilla para generar una política de ejemplo.

    En las políticas de ejemplo, los marcadores de posición se indican mediante llaves ("{{placeholder}}"). Sustituya cada uno de los marcadores de posición, incluidas las llaves, por la información necesaria.

  6. Si no utiliza uno de los ejemplos de plantilla, ingrese la política de recursos.

  7. Elija Guardar cambios.

Si la API se ha implementado anteriormente en la consola de API Gateway, tendrá que volver a implementarla para que la política de recursos surta efecto.

AWS CLI

Para usar la AWS CLI para crear una nueva API y asociarla a una política de recursos, llame al comando create-rest-api de la siguiente manera:

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

Para utilizar la AWS CLI para asociar una política de recursos a una API existente, llame al comando update-rest-api, tal y como se indica a continuación:

aws apigateway update-rest-api \ --rest-api-id api-id \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
AWS CloudFormation

Puede utilizar AWS CloudFormation para crear una API con una política de recursos. En el siguiente ejemplo, se crea una API de REST con la política de recursos de ejemplo, Ejemplo: Cómo denegar el tráfico a una API para una dirección o un rango de direcciones IP de origen.

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

Solución de problemas de política de recursos

La siguiente guía de solución de problemas puede ayudar a resolver los problemas relacionados con la política de recursos.

Mi API devuelve {"Mensaje": El usuario: anónimo no está autorizado a realizar: execute-api:Invoke en resource: arn:aws:execute-api:us-east-1:********/****/****/"}

En la política de recursos, si establece la entidad principal en una entidad principal de AWS, por ejemplo:

{ "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:/*" ] }, ... }

Debe usar la autorización de AWS_IAM para todos los métodos de la API o, de lo contrario, la API devolverá el mensaje de error anterior. Para obtener más instrucciones sobre cómo activar la autorización de AWS_IAM para un método, consulte Métodos de API de REST en API Gateway.

Mi política de recursos no se actualiza

Si actualiza la política de recursos después de crear la API, tendrá que implementar la API para propagar los cambios después de asociar la política actualizada. Si únicamente se actualiza o se guarda la política, no se modifica el comportamiento en tiempo de ejecución de la API. Para obtener más información acerca cómo implementar una API, consulte Implementación de las API de REST en API Gateway.

Mi política de recursos devuelve el siguiente error: Documento de política no válido. Compruebe la sintaxis de la política y asegúrese de que las entidades principales sean válidas.

Para solucionar este error, primero le recomendamos que compruebe la sintaxis de la política. Para obtener más información, consulte Información general del lenguaje de políticas de acceso para Amazon API Gateway. También le recomendamos que compruebe que todas las entidades principales especificadas sean válidas y que no se hayan eliminado.

Además, si la API se encuentra en una región de suscripción, compruebe que todas las cuentas de la política de recursos tengan la región habilitada.