Création et attachement d’une politique de ressources API Gateway à une API
Pour permettre à un utilisateur d’accéder à votre API en appelant le service d’exécution des API, vous devez créer une politique de ressources API Gateway et l’attacher à l’API. Lorsque vous attachez une politique votre API, celle-ci applique les autorisations de la politique aux méthodes de l’API. En cas de mise à jour de la politique de ressources, vous devrez déployer l’API.
Prérequis
Pour mettre à jour une politique de ressources API Gateway, vous devez disposer des autorisations apigateway:UpdateRestApiPolicy et apigateway:PATCH.
Pour une API optimisée pour la périphérie ou régionale, vous pouvez attacher votre politique de ressources à votre API lors de sa création ou après son déploiement. Pour une API privée, vous ne pouvez pas déployer votre API sans politique de ressources. Pour plus d’informations, consultez API REST privées dans API Gateway.
Attachement d’une politique de ressources à une API API Gateway
La procédure suivante vous montre comment attacher une politique de ressources à une API API Gateway.
- AWS Management Console
-
Pour attacher une politique de ressources à une API API Gateway
Connectez-vous à la console API Gateway à l’adresse : https://console.aws.amazon.com/apigateway.
Choisissez une API REST.
-
Dans le panneau de navigation principal, choisissez Stratégie de ressources.
-
Choisissez Create Policy (Créer une stratégie).
-
(Facultatif) Choisissez Sélectionnez un modèle pour générer un exemple de politique.
Dans les exemples de politiques, les espaces réservés sont délimitées par des doubles accolades ("{{placeholder}}"). Remplacez chacun des espaces réservés (y compris les accolades) par les informations nécessaires.
Si vous n’utilisez pas l’un des exemples de modèle, entrez votre politique de ressources.
-
Sélectionnez Enregistrer les modifications.
Si l’API a déjà été déployée dans la console API Gateway, vous devez la redéployer pour que la politique de ressources prenne effet.
- AWS CLI
-
Pour utiliser l’AWS CLI afin de créer une API et lui attacher une politique de ressources, utilisez la commande create-rest-api suivante :
aws apigateway create-rest-api \
--name "api-name" \
--policy "{\"jsonEscapedPolicyDocument\"}"
Pour utiliser l’AWS CLI afin d’attacher une politique de ressources à une API existante, utilisez la commande update-rest-api suivante :
aws apigateway update-rest-api \
--rest-api-id api-id \
--patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
Vous pouvez également attacher votre politique de ressources en tant que fichier policy.json distinct et l’inclure dans votre commande create-rest-api. La commande create-rest-api suivante crée une API avec une politique de ressources :
aws apigateway create-rest-api \
--name "api-name" \
--policy file://policy.json
policy.json est une politique de ressources API Gateway, comme Exemple : refuser le trafic API en fonction de l’adresse IP source ou de la plage.
- AWS CloudFormation
-
Vous pouvez utiliser AWS CloudFormation pour créer une API avec une politique de ressources. L’exemple suivant crée une API REST avec l’exemple de politique de ressources Exemple : refuser le trafic API en fonction de l’adresse IP source ou de la plage.
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
Résolution des problèmes liés à votre politique de ressources
Les conseils suivants peuvent vous aider à résoudre les problèmes liés à votre politique de ressources.
Mon API renvoie {"Message":"L’utilisateur: anonyme n’est pas autorisé à exécuter : execute-api:Invoke sur la ressource : arn:aws:execute-api:us-east-1:********/****/****/"}
Dans votre politique de ressources, si vous définissez le principal comme principal AWS, par exemple :
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111111111111:role/developer",
"arn:aws:iam::111111111111:role/Admin"
]
},
"Action": "execute-api:Invoke",
"Resource": [
"execute-api:/stage/GET/pets"
]
}
]
}
Vous devez utiliser l’autorisation AWS_IAM pour chaque méthode de votre API, sinon votre API renvoie le message d’erreur précédent. Pour plus d’instructions sur l’activation de l’autorisation AWS_IAM pour une méthode, consultez Méthodes pour les API REST dans API Gateway.
Ma politique de ressources n’est pas mise à jour
Si vous mettez à jour la politique de ressources une fois l’API créée, vous devez déployer l’API pour propager les changements une fois le rattachement de la politique mise à jour effectué. La simple mise à jour ou le simple enregistrement de la politique ne modifie pas le comportement d’exécution de l’API. Pour plus d’informations sur le déploiement de votre API, consultez Déploiement d’une API REST dans API Gateway.
Ma politique de ressources renvoie l’erreur suivante : document de politique non valide. Vérifiez la syntaxe de la politique et assurez-vous que les principaux sont valides.
Pour corriger cette erreur, nous vous recommandons de vérifier d’abord la syntaxe de la politique. Pour plus d’informations, consultez Présentation du langage de la politique d’accès pour Amazon API Gateway. Nous vous recommandons également de vérifier que tous les principaux spécifiés sont valides et n’ont pas été supprimés.
En outre, si votre API se trouve dans une région d’acceptation, vérifiez que la région est activée pour tous les comptes de la politique de ressources.