

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création et attachement d’une politique de ressources API Gateway à une API
<a name="apigateway-resource-policies-create-attach"></a>

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.

**Topics**
+ [Conditions préalables](#apigateway-resource-policies-prerequisites)
+ [Attachement d’une politique de ressources à une API API Gateway](#apigateway-resource-policies-create-attach-procedure)
+ [Résolution des problèmes liés à votre politique de ressources](#apigateway-resource-policies-troubleshoot)

## Conditions préalables
<a name="apigateway-resource-policies-prerequisites"></a>

 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 de plus amples informations, veuillez consulter [REST privé APIs dans API Gateway](apigateway-private-apis.md).

## Attachement d’une politique de ressources à une API API Gateway
<a name="apigateway-resource-policies-create-attach-procedure"></a>

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**

1. Connectez-vous à la console API Gateway à l'adresse [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Choisissez une API REST.

1. Dans le panneau de navigation principal, choisissez **Stratégie de ressources**.

1. Choisissez **Create Policy** (Créer une stratégie).

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

1. Si vous n’utilisez pas l’un des exemples de modèle, entrez votre politique de ressources.

1. 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 ]

 AWS CLI Pour créer une nouvelle API et y associer une politique de ressources, utilisez la [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)commande suivante :

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

 AWS CLI Pour associer une politique de ressources à une API existante, utilisez la [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)commande suivante : 

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

Vous pouvez également joindre votre politique de ressources dans un `policy.json` fichier distinct et l'inclure dans votre [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)commande. La [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)commande suivante crée une nouvelle 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](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example).

------
#### [ AWS CloudFormation ]

Vous pouvez l'utiliser 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](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example). 

```
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
<a name="apigateway-resource-policies-troubleshoot"></a>

Les conseils suivants peuvent vous aider à résoudre les problèmes liés à votre politique de ressources.

### Mon API renvoie \$1"Message":"L’utilisateur: anonyme n’est pas autorisé à exécuter : execute-api:Invoke sur la ressource : arn:aws:execute-api:us-east-1:\$1\$1\$1\$1\$1\$1\$1\$1/\$1\$1\$1\$1/\$1\$1\$1\$1/"\$1
<a name="apigateway-resource-policies-troubleshoot-auth"></a>

Dans votre politique de ressources, si vous attribuez au principal un AWS principal, tel que ce qui suit :

------
#### [ 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 REST APIs dans API Gateway](how-to-method-settings.md).

### Ma politique de ressources n’est pas mise à jour
<a name="apigateway-resource-policies-troubleshoot-deploy"></a>

 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](how-to-deploy-api.md). 

### 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.
<a name="apigateway-resource-policies-troubleshoot-invalid-principal"></a>

Pour corriger cette erreur, nous vous recommandons de vérifier d’abord la syntaxe de la politique. Pour de plus amples informations, veuillez consulter [Présentation du langage de la politique d’accès pour Amazon API Gateway](apigateway-control-access-policy-language-overview.md). 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](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#optinregion), vérifiez que la région est activée pour tous les comptes de la politique de ressources. 