

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.

# Noms de domaine personnalisés pour le privé APIs dans API Gateway
<a name="apigateway-private-custom-domains"></a>

Vous pouvez créer un nom de domaine personnalisé pour votre domaine privé APIs. Utilisez un nom de domaine personnalisé privé pour fournir aux appelants d’API une URL plus simple et plus intuitive. Avec un nom de domaine personnalisé privé, vous pouvez réduire la complexité, configurer des mesures de sécurité lors de la prise de contact TLS et contrôler le cycle de vie des certificats de votre nom de domaine à l'aide de AWS Certificate Manager (ACM). Pour de plus amples informations, veuillez consulter [Sécurisation de la clé privée du certificat pour votre nom de domaine personnalisé](#apigateway-private-custom-domains-secure-certificate-private-key).

Les noms de domaine personnalisés pour le secteur privé APIs n'ont pas besoin d'être uniques pour plusieurs comptes. Vous pouvez créer `example.private.com` dans les comptes 111122223333 et 555555555555, à condition que votre certificat ACM couvre le nom de domaine. Pour identifier un nom de domaine personnalisé privé, utilisez l’ARN du nom de domaine en question. Cet identifiant est propre aux noms de domaine personnalisés privés.

Lorsque vous créez un nom de domaine personnalisé privé dans API Gateway, vous êtes un *fournisseur d’API*. Vous pouvez fournir votre nom de domaine personnalisé privé à d'autres personnes à Comptes AWS l'aide d'API Gateway ou AWS Resource Access Manager (AWS RAM).

Lorsque vous invoquez un nom de domaine personnalisé privé, vous êtes un *utilisateur d’API*. Vous pouvez utiliser un nom de domaine personnalisé privé, qu'il s'agisse du vôtre Compte AWS ou d'un autre Compte AWS.

Lorsque vous utilisez un nom de domaine personnalisé privé, vous créez une association d’accès au nom de domaine entre le point de terminaison d’un VPC et un nom de domaine personnalisé privé. Avec une association d’accès au nom de domaine, les utilisateurs d’API peuvent invoquer votre nom de domaine personnalisé privé tout en étant isolés de l’Internet public. Pour de plus amples informations, veuillez consulter [Tâches des fournisseurs d'API et des consommateurs d'API pour les noms de domaine personnalisés pour le secteur privé APIs](apigateway-private-custom-domains-associations.md).

## Sécurisation de la clé privée du certificat pour votre nom de domaine personnalisé
<a name="apigateway-private-custom-domains-secure-certificate-private-key"></a>

Lorsque vous demandez un SSL/TLS certificat à l'aide d'ACM pour créer votre nom de domaine personnalisé pour private APIs, ACM génère une paire de public/private clés. Lorsque vous importez un certificat, vous générez la paire de clés. La clé publique devient partie intégrante du certificat. Pour stocker la clé privée en toute sécurité, ACM crée une autre clé en utilisant AWS KMS, appelée clé KMS, l'alias **aws/acm**. AWS KMS utilise cette clé pour chiffrer la clé privée de votre certificat. Pour plus d’informations, consultez [Protection des données dans AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/data-protection.html) dans le Guide de l’utilisateur *AWS Certificate Manager *.

API Gateway utilise le AWS TLS Connection Manager, un service accessible uniquement pour Services AWS sécuriser et utiliser les clés privées de votre certificat. Lorsque vous utilisez votre certificat ACM pour créer un nom de domaine personnalisé API Gateway, API Gateway associe votre certificat à AWS TLS Connection Manager. Pour ce faire, nous créons une subvention associée AWS KMS à votre clé AWS gérée. Cette autorisation permet au Gestionnaire de connexions TLS de AWS KMS déchiffrer la clé privée de votre certificat. TLS Connection Manager utilise le certificat et la clé privée déchiffrée (texte brut) pour établir une connexion sécurisée (session SSL/TLS) avec les clients des services API Gateway. Lorsque le certificat est dissocié d’un service API Gateway, l’autorisation est supprimée. Pour plus d’informations, consultez [Grants](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) dans le *Guide du développeur AWS Key Management Service *.

Pour de plus amples informations, veuillez consulter [Chiffrement des données au repos dans Amazon API Gateway](data-protection-encryption.md#data-protection-at-rest).

## Considérations relatives aux noms de domaine personnalisés privés
<a name="apigateway-private-custom-domains-considerations"></a>

Les considérations suivantes peuvent avoir un impact sur votre utilisation des noms de domaine personnalisés privés :
+ API Gateway a besoin d’environ 15 minutes pour configurer votre nom de domaine personnalisé privé.
+ Si vous mettez à jour votre certificat ACM, il faut environ 15 minutes à API Gateway pour effectuer la mise à jour. Pendant ce temps, votre nom de domaine est dans l’état `UPDATING` et vous pouvez toujours y accéder.
+ Pour invoquer un nom de domaine personnalisé privé, vous devez créer une association d’accès au nom de domaine personnalisé. Une fois l’association d’accès au nom de domaine créée, il faut compter environ 15 minutes pour qu’elle soit prête.
+ L'ARN du nom de domaine personnalisé privé contient le *account-id* et le*domain-name-id*. Lorsque vous créez un nom de domaine, API Gateway utilise le format ARN d’`arn:partition:apigateway:region::/domainnames/domain-name`. Lorsque vous accédez à un nom de domaine personnalisé privé, vous utilisez le format ARN d’`arn:partition:apigateway:region:account-id:/domainnames/domain-name+domain-name-id`. 

  Vous devrez peut-être modifier vos autorisations IAM pour autoriser l’accès à un nom de domaine privé après l’avoir créé.
+ Vous ne pouvez pas invoquer des noms de domaines personnalisés privés portant le même nom à partir du même point de terminaison de VPC. Par exemple, si vous souhaitez invoquer `arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234` et `arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+xyz000`, associez chaque nom de domaine personnalisé privé à un point de terminaison de VPC différent.
+ Les certificats génériques sont pris en charge, par exemple un certificat pour `*.private.example.com`.
+ Les noms de domaine personnalisés génériques ne sont pas pris en charge.
+ Seuls les certificats RSA avec une longueur de clé de 2 048 bits et les certificats ECDSA avec des longueurs de clé de 256 et 384 bits sont pris en charge.
+ Vous ne pouvez pas définir le type d'adresse IP pour private APIs afin d'autoriser uniquement IPv4 les adresses à invoquer votre API privée. Seule l’option Double pile est prise en charge. Pour de plus amples informations, veuillez consulter [Types d’adresses IP pour les API REST dans API Gateway](api-gateway-ip-address-type.md).
+ Pour envoyer du trafic à l’aide de votre API privée, vous pouvez utiliser tous les types d’adresses IP pris en charge par Amazon VPC. Vous pouvez envoyer du IPv6 trafic et du double stack en configurant les paramètres de votre point de terminaison VPC. Vous ne pouvez pas le modifier à l’aide d’API Gateway. Pour plus d'informations, consultez [Ajouter un IPv6 support pour votre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html).
+ Le mappage de chemins de base à plusieurs niveaux, tel que le mappage de votre API privée à `/developers/feature`, n’est pas pris en charge, mais vous pouvez utiliser une règle de routage pour créer une condition de chemin à plusieurs niveaux. Pour de plus amples informations, veuillez consulter [Envoyez du trafic vers vous APIs via votre nom de domaine personnalisé dans API Gateway](rest-api-routing-mode.md).
+ Vous ne pouvez pas définir de version TLS minimale pour votre nom de domaine personnalisé privé. Tous les noms de domaine personnalisés privés ont la politique de sécurité de `TLS-1-2`.
+ Vous pouvez utiliser une politique de point de terminaison de VPC pour contrôler l’accès à un nom de domaine personnalisé privé. Pour plus d’informations, consultez les exemples 4 et 5 de la section [Utiliser les politiques de point de terminaison VPC pour le mode privé APIs dans API Gateway](apigateway-vpc-endpoint-policies.md).
+ Vous devez créer une politique de ressources distincte pour votre API privée et pour votre nom de domaine personnalisé privé. Pour invoquer un nom de domaine personnalisé privé, un utilisateur d’API doit avoir accès à la politique de ressources du nom de domaine personnalisé privé, à la politique de ressources de l’API privée et à toute politique ou autorisation de point de terminaison de VPC sur l’API privée.

## Considérations relatives à l’utilisation de noms de domaine personnalisés privés avec d’autres ressources API Gateway
<a name="apigateway-private-custom-domains-considerations-for-migration"></a>

Les considérations suivantes peuvent avoir un impact sur la manière dont vous utilisez les noms de domaine personnalisés privés avec d’autres ressources API Gateway :
+ Vous ne pouvez pas envoyer du traffic d’un nom de domaine personnalisé privé vers une API publique.
+ Lorsqu’une API privée est mappée à un nom de domaine personnalisé privé, vous ne pouvez pas modifier le type de point de terminaison de l’API. 
+ Vous ne pouvez pas migrer un nom de domaine personnalisé public vers un nom de domaine personnalisé privé.
+ Si vous utilisez un point de terminaison de VPC pour accéder à un nom de domaine personnalisé public, ne l’utilisez pas pour créer une association d’accès au nom de domaine avec un nom de domaine personnalisé privé.

## Différences entre les noms de domaine personnalisés privés et les noms de domaine personnalisés publics
<a name="apigateway-private-custom-domains-public-differences"></a>

Les différences entre les noms de domaine personnalisés privés et publics sont décrites ci-dessous :
+ Les noms de domaine personnalisés privés n’ont pas besoin d’être propres à un compte.
+ Un nom de domaine privé possède un identifiant de nom de domaine. Cet ID identifie de manière unique un nom de domaine personnalisé privé. Il n’est pas généré pour les noms de domaine personnalisés publics.
+ Lorsque vous utilisez le AWS CLI pour mettre à jour ou supprimer votre nom de domaine personnalisé privé, vous devez fournir l'ID du nom de domaine. Si vous possédez un nom de domaine personnalisé privé `example.com` et un nom de domaine public personnalisé `example.com` et que vous ne fournissez pas l’ID du nom de domaine, API Gateway modifiera ou supprimera votre nom de domaine public personnalisé public.

## Prochaines étapes pour les noms de domaine personnalisés pour les particuliers APIs
<a name="apigateway-private-custom-domains-next-steps"></a>

Pour plus d’informations sur les tâches d’un fournisseur d’API et d’un utilisateur d’API, consultez [Tâches des fournisseurs d'API et des consommateurs d'API pour les noms de domaine personnalisés pour le secteur privé APIs](apigateway-private-custom-domains-associations.md).

Pour obtenir des instructions sur la création d'un nom de domaine personnalisé privé que vous pouvez invoquer vous-même Compte AWS, consultez[Tutoriel : créer et invoquer un nom de domaine personnalisé pour le domaine privé APIs](apigateway-private-custom-domains-tutorial.md).

Pour obtenir des instructions sur la fourniture Compte AWS d'un autre accès à votre nom de domaine personnalisé privé, consultez[Fournisseur d'API : partagez votre nom de domaine personnalisé privé en utilisant AWS RAM](apigateway-private-custom-domains-provider-share.md). Pour obtenir des instructions sur l'association de votre point de terminaison VPC à un nom de domaine personnalisé privé dans un autre Compte AWS, consultez. [Utilisateur d’API : association de votre point de terminaison de VPC à un nom de domaine personnalisé privé partagé avec vous](apigateway-private-custom-domains-consumer-create.md)

# Tâches des fournisseurs d'API et des consommateurs d'API pour les noms de domaine personnalisés pour le secteur privé APIs
<a name="apigateway-private-custom-domains-associations"></a>

Lorsque vous créez un nom de domaine personnalisé privé, vous êtes un *fournisseur d’API*. Lorsque vous invoquez un nom de domaine personnalisé privé, vous êtes un *utilisateur d’API*. Vous pouvez utiliser un nom de domaine personnalisé privé, qu'il s'agisse du vôtre Compte AWS ou d'un autre Compte AWS.

La section suivante explique les tâches requises par le fournisseur d’API et l’utilisateur d’API pour utiliser un nom de domaine personnalisé privé. Si vous souhaitez invoquer vous-même un nom de domaine personnalisé privé Compte AWS, vous êtes à la fois le fournisseur et le consommateur de l'API. Si vous souhaitez invoquer un domaine personnalisé privé dans un autre domaine Compte AWS, en fonction de la relation de confiance entre le fournisseur d'API et le consommateur d'API AWS Organizations, vous AWS RAM pouvez effectuer certaines tâches à votre place.

## Tâches d’un fournisseur d’API
<a name="apigateway-private-custom-domains-associations-provider"></a>

Les fournisseurs d'API créent des noms de domaine privés APIs et les mappent à des noms de domaine personnalisés.

 Les fournisseurs d’API gèrent deux politiques de ressources pour protéger leurs noms de domaine personnalisés privés. La première politique concerne le service `execute-api` et contrôle les points de terminaison de VPC qui peuvent invoquer votre nom de domaine personnalisé privé. Dans la configuration du nom de domaine personnalisé privé, elle est baptisée `policy`.

La deuxième politique concerne le service Amazon API Gateway Management et contrôle quels points de terminaison VPC situés dans d'autres pays Comptes AWS peuvent former une association d'accès au nom de domaine avec votre nom de domaine personnalisé privé. Un point de terminaison de VPC doit former une association d’accès au nom de domaine avec un nom de domaine personnalisé privé pour l’invoquer. Dans la configuration du nom de domaine personnalisé privé, cette politique est baptisée `managementPolicy`. Vous pouvez utiliser notre AWS RAM API Gateway pour mettre à jour cette politique. Si vous ne prévoyez pas d'autoriser les points de terminaison VPC situés dans d'autres pays Comptes AWS à invoquer votre nom de domaine personnalisé, vous ne modifiez pas le. `managementPolicy`

Si vous êtes un fournisseur d’API, vous devez :

1. Créer une API privée.

1. Mettre à jour la politique `policy` de votre API privée pour autoriser votre point de terminaison de VPC à accéder à votre API privée.

1. Créer un nom de domaine personnalisé privé.

1. Mettre à jour la politique `policy` de votre nom de domaine personnalisé privé pour autoriser votre point de terminaison de VPC à accéder à votre nom de domaine personnalisé privé.

1. Créer un mappage du chemin de base ou une règle de routage pour envoyer le trafic de votre API privée vers votre nom de domaine personnalisé privé. Pour de plus amples informations, veuillez consulter [Envoyez du trafic vers vous APIs via votre nom de domaine personnalisé dans API Gateway](rest-api-routing-mode.md).

Si vous souhaitez autoriser les utilisateurs d'API d'autres pays Comptes AWS à accéder à votre nom de domaine personnalisé privé, procédez comme suit :

1. Mettez à jour la politique `managementPolicy` de votre nom de domaine personnalisé privé pour autoriser les utilisateurs d’API d’autres comptes à associer les points de terminaison de leurs VPC à votre nom de domaine personnalisé privé. Pour ce faire, utilisez les méthodes suivantes :  
**AWS RAM**  
Avec AWS RAM, si le fournisseur d'API et le consommateur d'API font partie de la même organisation qui les utilise AWS Organizations, le partage de ressources entre le fournisseur et le consommateur est automatiquement accepté. Dans le cas contraire, vous devez attendre que l’utilisateur d’API accepte le partage de ressources. **Nous vous recommandons de l'utiliser AWS RAM pour partager votre nom de domaine personnalisé privé.**   
**API Gateway**  
Avec API Gateway, seul le AWS CLI est pris en charge. Vous devez mettre à jour votre nom de domaine personnalisé privé à l’aide d’une opération de correctif et fournir votre propre document de politique pour la politique `managementPolicy`.

1. Mettez à jour votre nom `policy` de domaine personnalisé privé et tout nom privé APIs mappé à celui-ci pour accorder l'accès au point de terminaison VPC du client de l'API.

Pour obtenir des instructions sur la façon de fournir votre API à une autre Compte AWS personne, consultez[Fournisseur d'API : partagez votre nom de domaine personnalisé privé en utilisant AWS RAM](apigateway-private-custom-domains-provider-share.md). 

## Tâches d’un utilisateur d’API
<a name="apigateway-private-custom-domains-associations-consumer"></a>

Les utilisateurs d’API associent les points de terminaison de leurs VPC à un nom de domaine ARN pour invoquer un nom de domaine personnalisé privé. Les utilisateurs d’API n’ont pas besoin de créer d’API API Gateway.

Si vous êtes un utilisateur d’API, procédez comme suit :

1. Créez un point de terminaison de VPC avec le DNS privé activé dans Amazon VPC.

1. (Facultatif, s' AWS RAM il est utilisé) Acceptez un partage de ressources de domaine personnalisé privé AWS RAM dans les **12 heures** suivant le partage de ressources. Si vous et le fournisseur d’API appartenez à la même organisation, le partage des ressources est automatiquement accepté.

1. Obtenez l’ARN du nom de domaine personnalisé privé. L’URL du nom de domaine personnalisé privé n’étant pas unique, vous allez utiliser l’ARN du nom de domaine personnalisé privé pour former l’association d’accès au nom de domaine entre votre point de terminaison de VPC et le nom de domaine personnalisé privé. Vous pouvez l'utiliser AWS RAM pour récupérer l'ARN du nom de domaine personnalisé privé.

1. Associez l’ARN du nom de domaine personnalisé privé à votre point de terminaison de VPC dans API Gateway. Cette opération permet de créer une connexion sécurisée entre votre point de terminaison de VPC et le nom de domaine personnalisé privé. Le trafic ne quitte pas le réseau Amazon.

1. Attendez que le fournisseur d'API accorde à votre point de terminaison VPC l'accès au nom de domaine personnalisé privé et à tout domaine privé APIs mappé au nom de domaine personnalisé privé. Si vous êtes à la fois le fournisseur et l’utilisateur d’API, vous autorisez votre point de terminaison de VPC à invoquer l’accès.

1. Créez une zone hébergée privée Route 53 et un enregistrement Route 53 pour résoudre le nom de domaine personnalisé privé dans Route 53.

Pour obtenir des instructions sur la façon de consommer une API dans une autre Compte AWS, consultez[Utilisateur d’API : association de votre point de terminaison de VPC à un nom de domaine personnalisé privé partagé avec vous](apigateway-private-custom-domains-consumer-create.md).

# Tutoriel : créer et invoquer un nom de domaine personnalisé pour le domaine privé APIs
<a name="apigateway-private-custom-domains-tutorial"></a>

Dans ce didacticiel, vous allez créer un nom de domaine personnalisé privé que vous pouvez invoquer dans un VPC de votre propre compte. Pour ce faire, vous êtes le fournisseur d’API et l’utilisateur d’API. Vous avez besoin d’une API privée et d’un point de terminaison de VPC existants pour effectuer ce didacticiel. Si vous utilisez un point de terminaison de VPC pour accéder à un nom de domaine personnalisé public, ne l’utilisez pas pour ce didacticiel ou pour créer une association d’accès à un nom de domaine.

## Étape 1 : créer un nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-provider-create-domain"></a>

Vous allez créer votre nom de domaine personnalisé privé en spécifiant le nom de domaine, le certificat ACM et la politique du service `execute-api` pour contrôler les points de terminaison de VPC qui peuvent l’invoquer.

------
#### [ AWS Management Console ]

**Pour créer un nom de domaine personnalisé privé**

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

1. Dans le panneau de navigation, sélectionnez **Noms de domaine personnalisés**.

1. Choisissez **Ajouter un nom de domaine**.

1. Pour **Nom de domaine**, entrez un nom de domaine. 

   Votre certificat ACM doit couvrir ce nom de domaine, mais il n’est pas nécessaire que celui-ci soit unique.

1. Sélectionnez **Privé**.

1. Sous **Mode de routage**, choisissez **Mappages d’API uniquement**.

1. Pour **Certificat ACM**, sélectionnez un certificat.

1. Choisissez **Ajouter un nom de domaine**.

API Gateway fournit un nom de domaine avec une politique `deny` qui refuse toutes les ressources. Il s’agit de la politique de ressources pour le service `execute-api`. Vous devez mettre à jour cette politique de ressources afin d’accorder l’accès à vos points de terminaison de VPC pour invoquer votre nom de domaine personnalisé privé.

**Pour mettre à jour votre politique de ressources**

1. Choisissez l’onglet **Stratégie de ressources**, puis choisissez **Modifier la stratégie de ressources**.

1. Saisissez la politique de ressources suivante dans l’éditeur de code. Remplacez le point de terminaison VPC par votre propre *vpce-abcd1234efg* ID de point de terminaison VPC.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": [
                   "execute-api:/*"
               ]
           },
           {
               "Effect": "Deny",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": [
                   "execute-api:/*"
               ],
               "Condition" : {
                   "StringNotEquals": {
                       "aws:SourceVpce": "vpce-abcd1234"
                   }
               }
           }
       ]
   }
   ```

1. Sélectionnez **Enregistrer les modifications**.

------
#### [ AWS CLI ]

Lorsque vous créez un nom de domaine personnalisé privé à l'aide du AWS CLI, vous fournissez une politique de ressources pour que le `execute-api` service accorde l'accès aux points de terminaison VPC afin d'invoquer votre nom de domaine personnalisé privé, à l'aide du paramètre. `--policy file://policy.json` Vous pourrez modifier cette politique ultérieurement.

Dans cet exemple, vous allez attacher la politique de ressources suivante en tant que `policy` en chargeant les paramètres d’un fichier. Copiez et enregistrez ce fichier sous `policy.json`. Cette politique autorise uniquement le trafic entrant vers un nom de domaine personnalisé privé à partir du point de terminaison VPC : * `vpce-abcd1234efg`*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-abcd1234"
                }
            }
        }
    ]
}
```

La [create-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-domain-name.html)commande suivante crée un nom de domaine personnalisé privé :

```
aws apigateway create-domain-name \
    --domain-name 'private.example.com' \
    --certificate-arn 'arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef' \
    --security-policy 'TLS_1_2' \
    --endpoint-configuration '{"types":["PRIVATE"]}' \
    --policy file://policy.json
```

La sortie se présente comme suit :

```
{
    "domainName": "private.example.com",
    "domainNameId": "abcd1234",
    "domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
    "certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
    "certificateUploadDate": "2024-09-10T10:31:20-07:00",
    "endpointConfiguration": {
        "types": [
            "PRIVATE"
        ]
    },
    "domainNameStatus": "AVAILABLE",
    "securityPolicy": "TLS_1_2",
    "routingMode" : "API_MAPPING_ONLY",
    "policy": "..."
}
```

------

## Étape 2 : créer un mappage de chemin de base pour mapper votre API privée à votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-base-path-mapping"></a>

Après avoir créé votre nom de domaine personnalisé privé, vous devez le mapper à une API privée. Le mappage de chemin de base rend une API accessible en combinant le nom de domaine personnalisé privé et un chemin de base associé. Nous vous recommandons d'utiliser un seul nom de domaine privé personnalisé comme nom d'hôte de plusieurs domaines privés APIs.

Tous les fournisseurs d’API doivent créer un mappage de chemin de base, même si vous n’avez pas l’intention d’invoquer votre propre API. Vous devez également accorder l'accès aux points de terminaison VPC pour invoquer tout nom de domaine privé APIs que vous mappez à votre nom de domaine personnalisé privé.

------
#### [ AWS Management Console ]

**Pour créer un mappage de chemin de base**

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

1. Dans le panneau de navigation, sélectionnez **Noms de domaine personnalisés**.

1. Choisissez un nom de domaine personnalisé privé.

1. Dans l’onglet **Mappages d’API**, choisissez **Configurer les mappages**.

1. Choisissez **Ajouter un nouveau mappage**.

1. Entrez une **API**, une **Étape** et, éventuellement, un **Chemin d’accès**.

1. Choisissez **Enregistrer**.

------
#### [ AWS CLI ]

La [create-base-path-mapping](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-base-path-mapping.html)commande suivante crée un mappage entre une API privée et un nom de domaine personnalisé privé :

```
aws apigateway create-base-path-mapping \
    --domain-name-id abcd1234 \
    --domain-name 'private.example.com' \
    --rest-api-id a1b2c3 \
    --stage prod \
    --base-path v1
```

Le résultat se présente comme suit :

```
{
    "basePath": "v1",
    "restApiId": "a1b2c3",
    "stage": "prod"
}
```

------

Pour plus de flexibilité quant à la manière dont vous acheminez le trafic vers votre APIs, vous pouvez modifier le mode de routage en `ROUTING_RULE_ONLY` ou `ROUTING_RULE_THEN_API_MAPPING` créer une règle de routage. Pour de plus amples informations, veuillez consulter [Envoyez du trafic vers vous APIs via votre nom de domaine personnalisé dans API Gateway](rest-api-routing-mode.md).

**Note**  
Si vous souhaitez que d'autres Comptes AWS personnes invoquent votre nom de domaine personnalisé privé, suivez les étapes décrites dans[Fournisseur d'API : partagez votre nom de domaine personnalisé privé en utilisant AWS RAM](apigateway-private-custom-domains-provider-share.md).

## Étape 3 : créer une association d’accès au nom de domaine entre votre nom de domaine personnalisé et un point de terminaison de VPC
<a name="apigateway-private-custom-domains-provider-associate-with-vpce"></a>

Ensuite, vous allez créer une association d’accès au nom de domaine entre votre nom de domaine personnalisé et un point de terminaison de VPC. Votre point de terminaison de VPC utilise l’association d’accès au nom de domaine pour invoquer votre nom de domaine personnalisé privé tout en étant isolé de l’Internet public.

------
#### [ AWS Management Console ]

**Pour créer une association d’accès au nom de domaine**

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

1. Dans le panneau de navigation, sélectionnez **Noms de domaine personnalisés**.

1. Choisissez un nom de domaine personnalisé privé.

1. Dans l’onglet **Partage des ressources**, pour **Associations d’accès aux noms de domaine**, choisissez **Créer une association d’accès aux noms de domaine**.

1. Pour **ARN du nom de domaine**, sélectionnez votre nom de domaine.

1. Pour **ID de point de terminaison de VPC**, sélectionnez l’ID de point de terminaison de VPC auquel vous avez donné accès à l’étape 1.

1. Choisissez **Association d’accès aux noms de domaine**.

Vous pouvez également créer votre association d’accès au nom de domaine à l’aide de la page **Associations d’accès aux noms de domaine** de la console.

------
#### [ AWS CLI ]

La commande `create-domain-name-access-association` suivante crée une association d’accès au nom de domaine entre votre nom de domaine personnalisé privé et votre point de terminaison de VPC.

```
aws apigateway create-domain-name-access-association \
    --domain-name-arn arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234 \
    --access-association-source vpce-abcd1234efg \
    --access-association-source-type VPCE \
    --region us-west-2
```

Le résultat se présente comme suit :

```
{
    "domainNameAccessAssociationARN": "arn:aws:apigateway:us-west-2:111122223333:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234efg",
    "accessAssociationSource": "vpce-abcd1234efg",
    "accessAssociationSourceType": "VPCE",
    "domainNameARN" : "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234"
}
```

------

Une fois l’association d’accès au nom de domaine créée, il faut compter environ 15 minutes pour qu’elle soit prête. Pendant que vous patientez, vous pouvez suivre les étapes suivantes.

## Étape 4 : créer une zone hébergée Route 53
<a name="apigateway-private-custom-domains-provider-create-route-53-private-hosted-zone"></a>

Après avoir mis à jour votre politique de ressources et associé votre nom de domaine personnalisé privé à votre point de terminaison de VPC, vous allez créer une zone hébergée privée dans Route 53 pour résoudre votre nom de domaine personnalisé. Une zone hébergée est un conteneur qui contient des informations sur la manière dont vous souhaitez acheminer le trafic pour un domaine au sein d'un ou de plusieurs domaines VPCs sans exposer vos ressources à Internet. Pour plus d'informations, veuillez onsulter [Utilisation des zones hébergées privées](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html).

------
#### [ AWS Management Console ]

Pour l'utiliser AWS Management Console, consultez la section [Création d'une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) dans le *guide du développeur Amazon Route 53*.

Pour **Nom**, utilisez le nom de votre nom de domaine personnalisé privé. Pour **ID de VPC**, utilisez le VPC contenant le point de terminaison de VPC que vous avez utilisé lors des étapes précédentes.

------
#### [ AWS CLI ]

La [create-hosted-zone](https://docs.aws.amazon.com/cli/latest/reference/route53/create-hosted-zone.html)commande suivante crée une zone hébergée privée :

```
aws route53 create-hosted-zone --name private.example.com \
    --caller-reference 2014-04-01-18:47 \
    --hosted-zone-config Comment="command-line version",PrivateZone=true \
    --vpc VPCRegion=us-west-2,VPCId=vpc-abcd1234
```

La sortie contient l’ID de la zone hébergée. Vous allez l’utiliser lors des étapes suivantes.

------

## Étape 5 : créer un enregistrement DNS Route 53
<a name="apigateway-private-custom-domains-provider-create-route-53-record"></a>

Après avoir créé la zone hébergée, vous allez créer un enregistrement pour résoudre votre nom de domaine personnalisé privé. Vous allez utiliser l’ID de la zone hébergée que vous avez créée à l’étape précédente. Dans cet exemple, vous allez créer un type d’enregistrement A. Si vous utilisez IPv6 pour votre point de terminaison VPC, créez un type d'enregistrement AAAA. Si vous utilisez une double pile pour votre point de terminaison de VPC, créez un enregistrement de type AAAA et un type d’enregistrement A.

------
#### [ AWS Management Console ]

Pour l'utiliser AWS Management Console, consultez [Routage du trafic vers une API Amazon API Gateway en utilisant votre nom de domaine](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

Utilisez **Création rapide** et activez **Alias**. Pour le point de terminaison, utilisez le nom DNS du point de terminaison du VPC.

------
#### [ AWS CLI ]

Pour configurer vos enregistrements DNS de manière à ce qu’ils mappent le nom de domaine personnalisé privé au nom d’hôte de l’ID de la zone hébergée, vous allez créer un fichier JSON qui contient la configuration pour créer un enregistrement DNS pour le nom de domaine privé.

L’enregistrement `setup-dns-record.json` suivant montre comment créer un enregistrement DNS `A` pour mapper un nom de domaine personnalisé privé à son nom d’hôte privé. Vous allez fournir le nom `DNSName` de l’ID DNS de votre VPC et l’ID de la zone hébergée que vous avez créée à l’étape précédente.

```
{
  "Changes": [
    {
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "private.example.com",
        "Type": "A",
        "AliasTarget": {
          "DNSName": "vpce-abcd1234.execute-api.us-west-2.vpce.amazonaws.com",
          "HostedZoneId": "Z2OJLYMUO9EFXC",
          "EvaluateTargetHealth": false
        }
      }
    }
  ]
}
```

La [change-resource-record-sets](https://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html)commande suivante crée un enregistrement DNS pour votre nom de domaine personnalisé privé :

```
aws route53 change-resource-record-sets \
    --hosted-zone-id ZABCDEFG1234 \
    --change-batch file://path/to/your/setup-dns-record.json
```

Remplacez `hosted-zone-id` par l’ID de la zone hébergée Route 53 du jeu d’enregistrements DNS de votre compte. La valeur du paramètre `change-batch` pointe vers un fichier JSON.

------

Si vous n’avez pas l’intention d’invoquer votre propre nom de domaine personnalisé privé, vous pouvez supprimer ces ressources, après avoir vérifié que votre nom de domaine personnalisé privé fonctionne.

## Étape 6 : invoquer votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-tutorial-invoke"></a>

Vous pouvez désormais invoquer votre nom de domaine personnalisé privé dans votre propre Compte AWS. Dans votre VPC, utilisez la commande curl suivante pour accéder à votre nom de domaine personnalisé privé.

```
curl https://private.example.com/v1
```

Pour découvrir d’autres façons d’invoquer votre API privée, consultez [Invocation d’une API privée à l’aide d’un nom de domaine personnalisé](apigateway-private-api-test-invoke-url.md#apigateway-private-custom-domains-provider-invoke).

## Étape 7 : nettoyer
<a name="apigateway-private-custom-domains-cleanup"></a>

Pour éviter des coûts inutiles, supprimez l’association entre votre point de terminaison de VPC et votre nom de domaine personnalisé privé, puis supprimez votre nom de domaine personnalisé privé.

------
#### [ AWS Management Console ]

**Pour supprimer l’association d’accès au nom de domaine**

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

1. Dans le panneau de navigation principal, sélectionnez **Associations d’accès aux noms de domaine**.

1. Sélectionnez votre association d’accès au nom de domaine, puis choisissez **Supprimer**.

1. Confirmez votre choix, puis choisissez **Supprimer**.

Après avoir supprimé votre association d’accès au nom de domaine, vous pouvez supprimer votre nom de domaine personnalisé privé.

**Pour supprimer votre nom de domaine personnalisé privé**

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

1. Dans le panneau de navigation, sélectionnez **Noms de domaine personnalisés**.

1. Choisissez votre nom de domaine personnalisé privé.

1. Sélectionnez **Delete (Supprimer)**.

1. Confirmez votre choix, puis choisissez **Supprimer**.

Si nécessaire, vous pouvez également supprimer votre point de terminaison de VPC. Pour plus d'informations, veuillez consulter la section [Suppression d'un point de terminaison d'interface](https://docs.aws.amazon.com/vpc/latest/privatelink/delete-interface-endpoint.html).

------
#### [ AWS CLI ]

**Pour nettoyer**

1. La commande `delete-access-association` suivante supprime l’association d’accès au nom de domaine :

   ```
   aws apigateway delete-domain-name-access-association \
       --domain-name-access-association-arn 'arn:aws:apigateway:us-west-2:111122223333:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234efg' \
       --region us-west-2
   ```

1. La commande `delete-domain-name` suivante supprime votre nom de domaine personnalisé privé. Cette commande supprime également tous les mappages de chemins de base.

   ```
   aws apigateway delete-domain-name \
       --domain-name test.private.com \
       --domain-name-id abcd1234
   ```

Si nécessaire, vous pouvez également supprimer votre point de terminaison de VPC. Pour plus d'informations, veuillez consulter la section [Suppression d'un point de terminaison d'interface](https://docs.aws.amazon.com/vpc/latest/privatelink/delete-interface-endpoint.html).

------

## Bonnes pratiques
<a name="apigateway-private-custom-domains-best-practices"></a>

Nous vous recommandons d’utiliser les bonnes pratiques ci-dessous lorsque vous créez votre nom de domaine personnalisé privé :
+ Utilisez le mappage des chemins de base ou les règles de routage pour envoyer le trafic d'un nom de domaine personnalisé privé vers plusieurs domaines privés APIs.
+ Lorsqu’un point de terminaison de VPC n’a plus besoin d’accéder à un nom de domaine personnalisé privé, supprimez l’association. En outre, supprimez le point de terminaison de VPC de la politique `policy` pour le service `execute-api` pour le domaine personnalisé privé. 
+ Configurez au moins deux zones de disponibilité par point de terminaison de VPC.
+ Désactivez le point de terminaison par défaut. Nous vous recommandons de désactiver le point de terminaison par défaut pour permettre à vos clients d’appeler votre API à partir du nom de domaine personnalisé uniquement. Pour de plus amples informations, veuillez consulter [Désactiver le point de terminaison par défaut pour REST APIs](rest-api-disable-default-endpoint.md).
+ Nous vous recommandons de configurer une zone hébergée privée Route 53 et un enregistrement de type A lorsque vous configurez votre nom de domaine personnalisé privé. Si vous n’avez pas l’intention d’invoquer votre propre nom de domaine personnalisé privé, vous pouvez supprimer ces ressources ultérieurement.

# Utilisation de noms de domaine personnalisés privés intercomptes
<a name="apigateway-private-custom-domains-other-accounts"></a>

Cette section explique comment utiliser des noms de domaine personnalisés intercomptes. Vous pouvez fournir un nom de domaine personnalisé privé à une autre personne Compte AWS et en utiliser un autre Compte AWS pour invoquer un nom de domaine personnalisé privé.

Vous pouvez partager votre nom de domaine personnalisé privé Compte AWS avec une autre personne à l'aide AWS Resource Access Manager d'API Gateway. AWS Resource Access Manager (AWS RAM) vous permet de partager en toute sécurité vos ressources entre Comptes AWS et au sein de votre organisation ou de vos unités organisationnelles (OUs). Pour plus d'informations, voir [Qu'est-ce que AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html).

Pour obtenir des instructions sur la façon de partager un nom de domaine personnalisé privé avec un Compte AWS autre AWS RAM utilisateur, consultez[Fournisseur d'API : partagez votre nom de domaine personnalisé privé en utilisant AWS RAM](apigateway-private-custom-domains-provider-share.md).

Pour savoir comment partager un nom de domaine personnalisé privé avec un autre utilisateur à Compte AWS l'aide d'API Gateway, consultez[Fournisseur d'API : partagez votre nom de domaine personnalisé privé à l'aide de l'API Gateway AWS CLI](apigateway-private-custom-domains-provider-share-cli.md).

Pour savoir comment utiliser un nom de domaine personnalisé privé dans un autre Compte AWS, consultez[Utilisateur d’API : association de votre point de terminaison de VPC à un nom de domaine personnalisé privé partagé avec vous](apigateway-private-custom-domains-consumer-create.md).

## Bonnes pratiques relatives à l’utilisation de noms de domaine personnalisés intercomptes
<a name="apigateway-private-custom-domains-other-accounts-best-practices"></a>

Nous recommandons les bonnes pratiques ci-dessous concernant l’utilisation de noms de domaine personnalisés privés intercomptes :
+  AWS RAM Utilisez-le pour partager vos noms de domaine personnalisés privés. Lorsque vous l'utilisez AWS RAM, vous pouvez réduire les frais opérationnels et vous n'avez pas besoin de créer un `managementPolicy` pour le service Amazon API Gateway Management.
+ Utilisez le paramètre `resource-owner` lorsque vous recensez vos noms de domaine personnalisés privés ou vos associations d’accès aux noms de domaine. Utilisez le paramètre `resource-owner` pour ne recenser que les ressources vous appartenant ou appartenant à d’autres Comptes AWS.

  L’exemple suivant montre comment obtenir toutes les associations d’accès aux noms de domaine que vous possédez :

  ```
  aws apigateway get-domain-name-access-associations --resource-owner SELF
  ```

  Utilisez `--resource-owner OTHER_ACCOUNTS` pour recenser toutes les associations d’accès au nom de domaine que d’autres comptes ont formées avec votre nom de domaine personnalisé privé.

# Fournisseur d'API : partagez votre nom de domaine personnalisé privé en utilisant AWS RAM
<a name="apigateway-private-custom-domains-provider-share"></a>

Vous pouvez fournir aux utilisateurs d'API Comptes AWS un autre accès à votre nom de domaine personnalisé privé. Dans cette section, vous apprendrez comment partager votre nom de domaine personnalisé privé en utilisant AWS RAM et comment contrôler l'accès à votre nom de domaine personnalisé privé.

## Considérations relatives au partage de votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-provider-share-considerations"></a>

Les considérations suivantes peuvent impacter la façon dont vous autorisez l’accès à votre nom de domaine personnalisé privé à l’aide d’ AWS RAM. Pour savoir comment partager votre nom de domaine personnalisé privé sans l'utiliser AWS RAM, consultez[Fournisseur d'API : partagez votre nom de domaine personnalisé privé à l'aide de l'API Gateway AWS CLI](apigateway-private-custom-domains-provider-share-cli.md).
+ Les noms de domaine personnalisés privés sont partagés au Région AWS niveau. Le nom de domaine personnalisé privé et le point de terminaison de VPC doivent se trouver dans la même Région AWS.
+ Vous pouvez utiliser un partage de ressources avec plusieurs principaux, et après avoir créé le partage de ressources, vous pouvez y ajouter d’autres principaux. Nous vous recommandons, dans la mesure du possible, de réutiliser votre partage de ressources.
+ Vous devez toujours accorder au point de terminaison VPC du client de l'API l'accès pour invoquer votre nom de domaine personnalisé privé et tout nom privé associé à APIs celui-ci.
+ Si le consommateur d'API et le fournisseur d'API appartiennent à la même organisation AWS Organizations, le partage des ressources est automatiquement accepté. Vous devez tout de même créer le partage de ressources à l’aide d’ AWS RAM.
+ Si le consommateur d'API et le fournisseur d'API appartiennent à la même organisation AWS Organizations et que le partage des ressources au sein de votre organisation est activé, tous les principaux de l'organisation avec lesquels vous partagez l'API ont automatiquement accès aux partages de ressources. Aucune invitation n’est nécessaire et vous pouvez ignorer le partage des ressources.
+ Si l’utilisateur d’API n’accepte pas le partage de ressources dans les **12 heures**, le fournisseur d’API doit à nouveau partager la ressource.
+ Après avoir créé le partage de ressources, AWS RAM mettez à jour le `managementPolicy` service Amazon API Gateway Management pour votre nom de domaine personnalisé privé afin d'empêcher l'accès aux principaux sans `allow` accès explicite. Pour plus d’informations, consultez [Determining whether a request is allowed or denied within an account](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) dans le Guide de l’utilisateur IAM.

  La politique `managementPolicy` mise à jour ressemble à ce qui suit :

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Id": "abcd1234-1234-abcd-abcd-1234abcdefg",
      "Statement": [
          {
              "Sid": "APIGatewayPrivateDomainNameManagementPolicyDefaultPermission-org",
              "Effect": "Allow",
              "Principal": "*",
              "Action": "apigateway:CreateAccessAssociation",
              "Resource": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
              "Condition": {
                  "StringEquals": {
                      "aws:PrincipalOrgID": "o-1234abcd"
                  },
                  "StringNotEquals": {
                      "aws:PrincipalAccount": "111122223333"
                  }
              }
          }
      ]
  }
  ```

------

  AWS RAM a empêché les principaux sans `allow` accès explicite de créer des associations d'accès avec votre nom de domaine personnalisé privé, en ajoutant ce qui suit :

  ```
  "StringNotEquals": {
      "aws:PrincipalAccount": "111122223333"
  }
  ```

  Vous pouvez toujours utiliser le principal indiqué dans la section Compte AWS qui a créé le nom de domaine personnalisé privé pour créer des associations d'accès aux noms de domaine.

## Autorisation d’autres comptes à créer des associations d’accès au nom de domaine avec votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-provider-management-policy-update"></a>

Tout d'abord, vous accordez l'accès Compte AWS à une autre personne pour créer des associations d'accès aux noms de domaine avec votre nom de domaine personnalisé privé.

------
#### [ AWS Management Console ]

Pour l'utiliser AWS Management Console, reportez-vous à la section [Création d'un partage de ressources AWS RAM dans](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-create.html) le *guide de AWS RAM l'utilisateur*.

Pour **Sélectionner le type de ressource**, choisissez **Domaines personnalisés privés API Gateway**.

------
#### [ AWS CLI ]

Ce qui suit [create-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/create-resource-share.html)crée un partage de ressources pour votre nom de domaine personnalisé privé. L’association entre la ressource et le mandataire peut prendre quelques minutes. Pour les principaux, fournissez un ID de compte ou un ID d’organisation, comme `arn:aws:organizations::123456789012:organization/o-1234abcd`. Vous pouvez fournir plusieurs principaux pour votre partage de ressources.

```
aws ram create-resource-share \
    --region us-west-2 \
    --name privateCustomDomain-resource-share \
    --permission-arns arn:aws:ram::aws:permission/APIGatewayPrivateDomainNameManagementPolicyDefaultPermission \
    --resource-arns arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234 \
    --principals 222222222222
```

------

Une fois que vous avez fourni l'accès à un autre Compte AWS utilisateur d'API, les utilisateurs de l'API de ce compte doivent créer une association d'accès au nom de domaine entre leur point de terminaison VPC et votre nom de domaine personnalisé privé. Vous ne pouvez pas la créer pour eux. Pour de plus amples informations, veuillez consulter [Association de votre point de terminaison de VPC à un nom de domaine personnalisé privé partagé](apigateway-private-custom-domains-consumer-create.md#apigateway-private-custom-domains-consumer-associate).

## Autorisation d’autres comptes à invoquer votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-provider-policy-update"></a>

Ensuite, vous accordez l'accès au point de terminaison VPC du client de l'API pour qu'il invoque votre nom de domaine personnalisé privé et tout nom privé associé à APIs celui-ci.

------
#### [ AWS Management Console ]

**Pour autoriser les points de terminaison de VPC d’autres comptes à invoquer votre nom de domaine personnalisé privé**

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

1. Dans le panneau de navigation, sélectionnez **Noms de domaine personnalisés**.

1. Choisissez le nom de domaine personnalisé privé que vous avez partagé avec d'autres Comptes AWS.

1. Dans l’onglet **Stratégie de ressources**, choisissez **Modifier la stratégie de ressources**.

1. Ajoutez l’ID de point de terminaison de VPC de l’utilisateur d’API à votre politique de ressources.

   Vous trouverez l’ID de point de terminaison de VPC de l’utilisateur d’API dans la section **Associations d’accès aux noms de domaine** de l’onglet **Partage des ressources** sur la page **Détails du domaine** de votre nom de domaine personnalisé privé.

1. Sélectionnez **Enregistrer les modifications**.

------
#### [ AWS CLI ]

La politique `policy` suivante pour le service `execute-api` autorise le trafic entrant vers un nom de domaine personnalisé privé depuis les points de terminaison de VPC `vpce-abcd1234efg` et `vpce-xyz000abc`.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": [
                    "vpce-abcd1234",
                    "vpce-xyzz0000"
                    ]
                }
            }
        }
    ]
}
```

La [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)commande suivante utilise une opération de correctif `policy` pour mettre à jour le nom de domaine personnalisé privé :

```
aws apigateway update-domain-name
    --domain-name private.example.com \
    --domain-name-id abcd1234 \
    --patch-operations op=replace,path=/policy,value='"{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Effect\": \"Allow\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"]},{\"Effect\": \"Deny\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"],\"Condition\":{\"StringNotEquals\":[\"vpce-abcd1234efg\", \"vpce-xyz000abc\"]}}}]}"
```

------

# Fournisseur d'API : arrêtez de partager un nom de domaine personnalisé privé en utilisant AWS RAM
<a name="apigateway-private-custom-domains-provider-stop-sharing"></a>

Pour arrêter de partager votre nom de domaine personnalisé privé, vous devez d’abord empêcher l’utilisateur d’API de créer d’autres associations d’accès au nom de domaine en dissociant le partage de ressources. Ensuite, vous devez rejeter l’association d’accès au nom de domaine et supprimer le point de terminaison de VPC du client d’API de votre politique `policy` pour le service `execute-api`. L’utilisateur d’API peut ensuite supprimer son association d’accès au nom de domaine.

## Arrêt du partage de votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-provider-dissociate-ram"></a>

Tout d'abord, vous arrêtez l'utilisation du partage des ressources AWS RAM.

------
#### [ AWS Management Console ]

Pour l'utiliser AWS Management Console, voir [Mettre à jour un partage de ressources dans AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-update.html).

------
#### [ AWS CLI ]

Ce qui suit [disassociate-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/disassociate-resource-share.html)dissocie un partage de ressources pour votre nom de domaine personnalisé privé.

```
aws ram disassociate-resource-share \
    --region us-west-2 \
    --resource-arns arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234 \
    --principals 222222222222
```

------

## Refus de l’association d’accès au nom de domaine
<a name="apigateway-private-custom-domains-provider-reject"></a>

Après avoir arrêté de partager votre utilisation des ressources AWS RAM, vous rejetez l'association d'accès au nom de domaine entre un point de terminaison VPC d'un autre compte et votre nom de domaine personnalisé privé. 

**Note**  
Vous ne pouvez pas refuser une association d’accès au nom de domaine de votre propre compte. Pour arrêter le partage de ressources, supprimez l’association d’accès au nom de domaine. Pour plus d’informations, consultez [Delete a domain name access association](apigateway-private-custom-domains-tutorial.md#apigateway-private-custom-domains-cleanup).

Lorsque vous rejetez une association d’accès au nom de domaine avec un point de terminaison de VPC, si un utilisateur d’API essaie d’appeler votre nom de domaine personnalisé privé, API Gateway rejette l’appel et renvoie le code de statut `403`.

------
#### [ AWS Management Console ]

**Pour refuser une association d’accès au nom de domaine**

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

1. Dans le panneau de navigation, sélectionnez **Noms de domaine personnalisés**.

1. Choisissez le nom de domaine personnalisé privé que vous avez partagé avec d'autres Comptes AWS.

1. Sous **Partage de ressources**, choisissez l’association d’accès au nom de domaine que vous souhaitez refuser.

1. Choisissez **Refuser l’association**.

1. Confirmez votre choix, puis choisissez **Refuser**.

------
#### [ AWS CLI ]

La commande `reject-domain-name-access-association` suivante refuse l’association d’accès au nom de domaine entre le point de terminaison de VPC et votre nom de domaine personnalisé privé :

```
aws apigateway reject-domain-name-access-association \
    --domain-name-access-association-arn arn:aws:apigateway:us-west-2:444455556666:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234efg \
    --domain-name-arn arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234
```

------

## Refus de l’invocation de votre nom de domaine personnalisé privé par le fournisseur d’API
<a name="apigateway-private-custom-domains-provider-deny-access"></a>

Après avoir refusé l’association d’accès au nom de domaine, vous devez supprimer le point de terminaison de VPC de votre politique `policy` pour le service `execute-api`.

------
#### [ AWS Management Console ]

**Pour supprimer le point de terminaison de VPC de l’utilisateur d’API de votre politique de ressources**

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

1. Dans le panneau de navigation, sélectionnez **Noms de domaine personnalisés**.

1. Choisissez le nom de domaine personnalisé privé que vous avez partagé avec d'autres Comptes AWS.

1. Dans l’onglet **Stratégie de ressources** choisissez **Modifier**.

1. Supprimez le point de terminaison de VPC de la politique.

1. Sélectionnez **Enregistrer les modifications**.

------
#### [ AWS CLI ]

La [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)commande suivante utilise une opération de correctif pour mettre à jour le `policy` `execute-api` service pour un nom de domaine personnalisé privé. Cette nouvelle politique `policy` supprime un ID de point de terminaison de VPC supplémentaire ajouté à la section [Autorisation d’autres comptes à invoquer votre nom de domaine personnalisé privé](apigateway-private-custom-domains-provider-share.md#apigateway-private-custom-domains-provider-policy-update) :

```
aws apigateway update-domain-name
    --domain-name private.example.com \
    --domain-name-id abcd1234 \
    --patch-operations op=replace,path=/policy,value='"{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Effect\": \"Allow\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"]},{\"Effect\": \"Deny\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"],\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\": \"vpce-abcd1234efg\"}}}]}"
```

------

L’utilisateur d’API doit ensuite supprimer l’association d’accès au nom de domaine. Vous ne pouvez pas le faire pour lui. Pour de plus amples informations, veuillez consulter [Utilisateur d’API : suppression de votre association d’accès au nom de domaine avec un nom de domaine personnalisé privé](apigateway-private-custom-domains-consumer-delete-domain-name-access-association.md).

# Fournisseur d'API : partagez votre nom de domaine personnalisé privé à l'aide de l'API Gateway AWS CLI
<a name="apigateway-private-custom-domains-provider-share-cli"></a>

Vous pouvez partager un nom de domaine personnalisé privé à l'aide de l'API Gateway AWS CLI, mais nous vous recommandons de l'utiliser AWS RAM pour réduire vos frais opérationnels. Pour obtenir des instructions sur la façon AWS RAM de partager votre nom de domaine personnalisé privé, consultez[Fournisseur d'API : partagez votre nom de domaine personnalisé privé en utilisant AWS RAM](apigateway-private-custom-domains-provider-share.md).

Pour partager un nom de domaine personnalisé privé à l'aide de l'API Gateway AWS CLI, vous accordez d'autres Comptes AWS accès afin de créer des associations d'accès au nom de domaine et d'invoquer votre nom de domaine personnalisé privé. Pour ce faire, vous devez mettre à jour la politique `managementPolicy` pour le service API Gateway Management et la politique `policy` pour le service `execute-api` pour votre nom de domaine personnalisé privé. Vous devez également accorder l'accès au point de terminaison VPC du client de l'API dans la politique de ressources pour tout domaine privé APIs mappé à votre nom de domaine personnalisé privé.

L’utilisateur d’API doit tout de même créer une association d’accès au nom de domaine de son propre compte entre le point de terminaison de son VPC et votre nom de domaine personnalisé privé. Vous ne pouvez pas le faire pour lui.

## Octroi d’un accès à votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-provider-share-cli-allow"></a>

**Pour accorder un accès à votre nom de domaine personnalisé privé**

1. Pour mettre à jour la politique `managementPolicy` pour le service API Gateway Management, vous devez créer un fichier JSON contenant l’opération de correctif permettant de mettre à jour la politique. Ce qui suit `patch-managementPolicy.json` remplace la politique actuelle par un exemple de politique qui accorde à Comptes AWS 111122223333 et 444455556666 l'accès pour créer des associations d'accès au nom de domaine `managementPolicy` avec le nom de domaine personnalisé privé. `private.example.com`

   ```
   [{
       "op": "replace",
       "path": "/managementPolicy",
       "value": "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam::111122223333:root\", \"arn:aws:iam::444455556666:root\"]},\"Action\":\"apigateway:CreateAccessAssociation\",\"Resource\":\"arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"}]}"
   }]
   ```

    La [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)commande suivante met à jour l'`managementPolicy`utilisation`patch-managementPolicy.json`. 

   ```
   aws apigateway update-domain-name \
       --domain-name private.example.com \
       --domain-name-id abcd1234 \
       --patch-operations file://patch-managementPolicy.json
   ```

   Une fois que vous avez accordé l’accès, vous devez informer l’utilisateur d’API qu’il peut former l’association d’accès au nom de domaine. Si vous l'utilisez AWS RAM, je AWS RAM ferai cette étape pour vous.

1. Pour mettre à jour la politique `policy` du service `execute-api`, vous devez créer un fichier JSON contenant l’opération de correctif permettant de mettre à jour la politique. Le correctif `patch-policy.json` suivant remplace la politique `policy` actuelle par un exemple de politique qui autorise deux points de terminaison de VPC à invoquer le nom de domaine personnalisé privé `private.example.com`.

   ```
   [{
       "op": "replace",
       "path": "/policy",
       "value": "{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Effect\": \"Allow\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\": \"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"},{\"Effect\": \"Deny\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\": \"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\",\"Condition\": {\"StringNotEquals\": {\"aws:SourceVpce\": [\"vpce-abcd1234\",\"vpce-xyzz0000\"]}}}]}"
   }]
   ```

    Utilisez la [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)commande suivante pour mettre à jour l'`policy`utilisation`patch-policy.json`. 

   ```
   aws apigateway update-domain-name \
       --domain-name private.example.com \
       --domain-name-id abcd1234 \
       --patch-operations file://patch-policy.json
   ```

## Refus de l’accès à votre nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-provider-share-cli-deny"></a>

Pour arrêter de partager votre nom de domaine personnalisé privé, vous devez refuser l’association d’accès au nom de domaine entre votre nom de domaine personnalisé privé et le point de terminaison de VPC de l’utilisateur d’API.

**Pour refuser l’accès à votre nom de domaine personnalisé privé**

1. La commande `reject-domain-name-access-association` suivante rejette l’association d’accès au nom de domaine.

   ```
   aws apigateway reject-domain-name-access-association \
       --domain-name-access-association-arn arn:aws:apigateway:us-west-2:444455556666:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234 \
       --domain-name-arn arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234
   ```

1. Modifiez la politique `patch-managementPolicy.json` pour supprimer l’accès au compte du fournisseur d’API et créer une association d’accès au nom de domaine avec votre nom de domaine personnalisé privé. Le correctif `patch-managementPolicy.json` suivant supprime un compte de la politique `managementPolicy` :

   ```
   [{
        "op": "replace",
        "path": "/managementPolicy",
        "value": "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"apigateway:CreateAccessAssociation\",\"Resource\":\"arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"}]}"
   }]
   ```

   La [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)commande suivante permet de mettre à jour l'`managementPolicy`utilisation`patch-managementPolicy.json`. 

   ```
   aws apigateway update-domain-name \
       --domain-name private.example.com \
       --domain-name-id abcd1234 \
       --patch-operations file://patch-managementPolicy.json
   ```

1. Modifiez le correctif `patch-policy.json` pour supprimer l’accès du point de terminaison de VPC au fournisseur d’API permettant d’invoquer votre nom de domaine personnalisé privé. Le correctif `patch-policy.json` suivant supprime l’ID de point de terminaison de VPC de la politique `policy` :

   ```
   [{
       "op": "replace",
       "path": "/policy",
       "value": "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-abcd1234\"}}}]}"
   }]
   ```

   La [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)commande suivante met à jour l'`policy`utilisation`patch-policy.json`. 

   ```
   aws apigateway update-domain-name \
       --domain-name private.example.com \
       --domain-name-id abcd1234 \
       --patch-operations file://patch-policy.json
   ```

## Exemples de politiques utilisées dans cette procédure
<a name="apigateway-private-custom-domains-provider-share-cli-policies"></a>

La section suivante présente les exemples de politiques utilisées dans la procédure précédente.

L’exemple suivant concerne la politique `managementPolicy` du service Amazon API Gateway Management. Cette politique accorde à Comptes AWS 111122223333 et au 444455556666 l'accès pour créer des associations d'accès au nom de domaine avec le nom de domaine personnalisé privé. `private.example.com` 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "111122223333",
                    "444455556666"
                ]
            },
            "Action": "apigateway:CreateAccessAssociation",
            "Resource": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+a1b2c3"
        }
    ]
}
```

------

L’exemple suivant concerne la politique `policy` pour le service `execute-api`. Cette politique accorde aux points de terminaison de VPC `vpce-abcd1234` et `vpce-xyzz0000` un accès leur permettant d’invoquer le nom de domaine personnalisé privé.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpce": [
                        "vpce-abcd1234",
                        "vpce-xyzz0000"
                    ]
                }
            }
        }
    ]
}
```

------

# Utilisateur d’API : association de votre point de terminaison de VPC à un nom de domaine personnalisé privé partagé avec vous
<a name="apigateway-private-custom-domains-consumer-create"></a>

La procédure suivante montre comment utiliser un nom de domaine privé dans un autre Compte AWS. En fonction de votre relation de confiance avec le fournisseur d'API, vous AWS RAM pouvez effectuer certaines tâches pour vous.

Lorsque vous utilisez un nom de domaine personnalisé Compte AWS différent d'un nom de domaine personnalisé privé, vous pouvez uniquement associer votre point de terminaison VPC à un nom de domaine personnalisé privé et l'invoquer. Vous ne pouvez pas voir la politique `policy` ni aucun autre paramètre du nom de domaine personnalisé privé.

## Conditions préalables
<a name="apigateway-private-custom-domains-consumer-prerequisites"></a>

Les conditions préalables suivantes sont requises pour utiliser un nom de domaine personnalisé privé dans un autre Compte AWS :
+ Un VPC et un point de terminaison de VPC pour le service `execute-api`. Les valeurs `enableDnsHostnames` et `enableDnsSupport` de votre VPC doivent être définies sur `true`.
+ Nous vous recommandons de configurer au moins deux zones de disponibilité par point de terminaison de VPC.

## (Facultatif) Acceptez le partage de ressources du domaine personnalisé privé
<a name="apigateway-private-custom-domains-consumer-accept-resource-share"></a>

Si votre fournisseur d'API avait AWS RAM l'habitude de créer un partage de ressources, vous avez **12 heures** pour l'accepter. Si vous travaillez dans la même organisation AWS Organizations que le fournisseur d'API, le partage est automatiquement accepté. Si vous faites partie d’une organisation qui a activé le partage automatique de ressources, celles-ci sont automatiquement partagées avec vous.

------
#### [ AWS Management Console ]

Pour l'utiliser AWS Management Console, voir [Accepter et rejeter des invitations à partager des ressources](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared-invitations.html) dans le *Guide de l'AWS RAM utilisateur*. 

------
#### [ AWS CLI ]

Pour trouver toutes les ressources partagées avec vous, utilisez la [get-resource-share-invitations](https://docs.aws.amazon.com/cli/latest/reference/ram/get-resource-share-invitations.html)commande suivante :

```
aws ram get-resource-share-invitations \
    --region us-west-2
```

Utilisez l’ARN de partage de ressources obtenu pour accepter l’invitation de partage de ressources. La [accept-resource-share-invitation](https://docs.aws.amazon.com/cli/latest/reference/ram/accept-resource-share-invitation.html)commande suivante accepte le partage de ressources.

```
aws ram accept-resource-share-invitation \
    --resource-share-invitation-arn arn:aws:ram:us-west-2:123456789012:resource-share-invitation/1e3477be-4a95-46b4-bbe0-c4001EXAMPLE \
    --region us-west-2
```

------

## Association de votre point de terminaison de VPC à un nom de domaine personnalisé privé partagé
<a name="apigateway-private-custom-domains-consumer-associate"></a>

Comme les noms de domaine personnalisés privés ne sont pas uniques, vous devez associer votre point de terminaison de VPC à l’ARN unique du nom de domaine personnalisé. Après avoir créé votre association d’accès au nom de domaine, il peut s’écouler jusqu’à 15 minutes avant que votre point de terminaison de VPC n’invoque avec succès votre nom de domaine personnalisé privé. Si vous utilisez un point de terminaison de VPC pour accéder à un nom de domaine personnalisé public, ne l’utilisez pas pour créer une association d’accès à un nom de domaine. 

------
#### [ AWS Management Console ]

**Pour associer votre point de terminaison de VPC à un nom de domaine personnalisé privé partagé**

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

1. Dans le panneau de navigation principal, sélectionnez **Associations d’accès aux noms de domaine**.

1. Choisissez **Créer une association d’accès au nom de domaine**.

1. Pour **ARN du nom de domaine**, sélectionnez l’ARN du nom de domaine que le fournisseur d’API a partagé avec vous.

   L’ARN du nom de domaine peut ne pas apparaître dans la liste déroulante. Vous pouvez utiliser la AWS RAM console pour afficher les noms de domaine partagés avec vous, puis copier l'ARN du nom de domaine et le saisir dans ce champ.

1. Pour **ID de point de terminaison de VPC**, sélectionnez l’ID de point de terminaison de VPC avec lequel vous souhaitez former l’association d’accès au nom de domaine.

1. Choisissez **Créer une association d’accès au nom de domaine**.

------
#### [ AWS CLI ]

Comme les noms de domaine personnalisés privés ne sont pas uniques, vous devez associer votre point de terminaison de VPC à l’ARN unique du nom de domaine personnalisé. Pour rechercher l’ARN du nom de domaine, utilisez l’une des commandes suivantes.

1.   
**AWS RAM**  
La commande [list-resources](https://docs.aws.amazon.com/cli/latest/reference/ram/list-resources.html) suivante recense les ressources partagées avec vous. Le fournisseur d'API doit AWS RAM avoir partagé son domaine personnalisé privé avec vous pour utiliser cette commande.  

   ```
   aws ram list-resources \
       --resource-owner OTHER-ACCOUNTS \
       --region us-west-2
       --resource-type apigateway:Domainnames
   ```  
**API Gateway**  
La `get-domain-names` commande suivante répertorie tous les noms de domaine personnalisés privés appartenant à d'autres personnes avec Comptes AWS lesquels vous pouvez former des associations d'accès aux noms de domaine.  

   ```
   aws apigateway get-domain-names \
       --resource-owner OTHER_ACCOUNTS \
       --region us-west-2
   ```

1.  Après avoir récupéré l’ARN, utilisez API Gateway pour créer l’association d’accès au nom de domaine entre votre point de terminaison de VPC et un nom de domaine personnalisé privé partagé. Utilisez la commande `create-domain-name-access-association` suivante :

   ```
   aws apigateway create-domain-name-access-association \
       --access-association-source-type VPCE \
       --access-association-source 'vpce-1a2b3c4d5e6f1a2b3' \
       --domain-name-arn arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234"
   ```

   Le résultat se présente comme suit :

   ```
   {
       "domainNameAccessAssociationARN": "arn:aws:apigateway:us-west-2:444455556666:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234efg", 
       "accessAssociationSource": "vpce-1a2b3c4d5e6f1a2b3",
       "accessAssociationSourceType": "VPCE",
       "domainNameARN" : "arn:aws:apigateway:us-west-1:111122223333:/domainnames/private.example.com+a1b2c3"
   }
   ```

------

Après avoir associé votre point de terminaison de VPC au nom de domaine personnalisé privé, vérifiez que votre fournisseur d’API a mis à jour la politique de son nom de domaine personnalisé privé de manière à autoriser le point de terminaison de votre VPC à invoquer son nom de domaine. Pour de plus amples informations, veuillez consulter [Autorisation d’autres comptes à invoquer votre nom de domaine personnalisé privé](apigateway-private-custom-domains-provider-share.md#apigateway-private-custom-domains-provider-policy-update).

## Création d’une zone hébergée Route 53
<a name="apigateway-private-custom-domains-consumer-create-route-53-private-hosted-zone"></a>

Pour résoudre le nom de domaine personnalisé privé, vous devez créer une zone hébergée privée Route 53. Une zone hébergée est un conteneur qui contient des informations sur la manière dont vous souhaitez acheminer le trafic pour un domaine au sein d'un ou de plusieurs domaines VPCs sans exposer vos ressources à Internet. Pour plus d'informations, veuillez onsulter [Utilisation des zones hébergées privées](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html).

------
#### [ AWS Management Console ]

Pour l'utiliser AWS Management Console, consultez la section [Création d'une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) dans le *guide du développeur Amazon Route 53*.

Pour **Nom**, utilisez le nom du nom de domaine personnalisé privé. Pour **ID du VPC**, utilisez le VPC contenant le point de terminaison de VPC que vous avez utilisé pour votre association d’accès au nom de domaine.

------
#### [ AWS CLI ]

La [create-hosted-zone](https://docs.aws.amazon.com/cli/latest/reference/route53/create-hosted-zone.html)commande suivante crée une zone hébergée privée :

```
aws route53 create-hosted-zone --name private.example.com \
    --caller-reference 2014-04-01-18:47 \
    --hosted-zone-config Comment="command-line version",PrivateZone=true \
    --vpc VPCRegion=us-west-2,VPCId=vpc-abcd1234
```

La sortie contient l’ID de la zone hébergée. Vous allez l’utiliser lors des étapes suivantes.

------

## Création d’un enregistrement DNS Route 53
<a name="apigateway-private-custom-domains-consumer-create-route-53-record"></a>

Après avoir créé la zone hébergée, vous devez créer un enregistrement pour résoudre le domaine personnalisé privé. Dans cet exemple, vous allez créer un type d’enregistrement A. Si vous utilisez IPv6 pour votre point de terminaison VPC, créez un type d'enregistrement AAAA. Si vous utilisez une double pile pour votre point de terminaison de VPC, créez un enregistrement de type AAAA et un type d’enregistrement A.

------
#### [ AWS Management Console ]

Pour l'utiliser AWS Management Console, consultez [Routage du trafic vers une API Amazon API Gateway en utilisant votre nom de domaine](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

Utilisez **Création rapide** et activez **Alias**. Pour le point de terminaison, utilisez le nom DNS du point de terminaison du VPC.

------
#### [ AWS CLI ]

Pour configurer vos enregistrements DNS de manière à ce qu’ils mappent le nom de domaine personnalisé privé au nom d’hôte de l’ID de la zone hébergée, commencez par créer un fichier JSON qui contient la configuration pour créer un enregistrement DNS pour le nom de domaine privé.

L’enregistrement `setup-dns-record.json` suivant montre comment créer un enregistrement DNS `A` pour mapper un nom de domaine personnalisé privé à son nom d’hôte privé. Vous allez fournir le nom `DNSName` de l’ID DNS de votre VPC et l’ID de la zone hébergée que vous avez créée à l’étape précédente.

```
{
  "Changes": [
    {
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "private.example.com",
        "Type": "A",
        "AliasTarget": {
          "DNSName": "vpce-abcd1234.execute-api.us-west-2.vpce.amazonaws.com",
          "HostedZoneId": "Z2OJLYMUO9EFXC",
          "EvaluateTargetHealth": false
        }
      }
    }
  ]
}
```

La [change-resource-record-sets](https://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html)commande suivante crée un enregistrement DNS pour le nom de domaine personnalisé privé :

```
aws route53 change-resource-record-sets \
    --hosted-zone-id ZABCDEFG1234 \
    --change-batch file://path/to/your/setup-dns-record.json
```

Remplacez `hosted-zone-id` par l’ID de la zone hébergée Route 53 du jeu d’enregistrements DNS de votre compte. La valeur du paramètre `change-batch` pointe vers un fichier JSON.

------

## Prochaines étapes pour un utilisateur d’API
<a name="apigateway-private-custom-domains-consumer-next-steps"></a>

Vous pouvez désormais invoquer l’API privée dans votre propre Compte AWS. Dans votre VPC, vous pouvez utiliser la commande curl suivante pour accéder à votre nom de domaine personnalisé privé.

```
curl https://private.example.com/v1
```

Pour découvrir d’autres façons d’invoquer votre API privée, consultez [Invocation d’une API privée à l’aide d’un nom de domaine personnalisé](apigateway-private-api-test-invoke-url.md#apigateway-private-custom-domains-provider-invoke).

# Utilisateur d’API : suppression de votre association d’accès au nom de domaine avec un nom de domaine personnalisé privé
<a name="apigateway-private-custom-domains-consumer-delete-domain-name-access-association"></a>

Si vous êtes un utilisateur d’API, vous pouvez à tout moment supprimer l’association d’accès. Le fournisseur d’API ne peut pas la supprimer pour vous.

Nous vous recommandons de toujours supprimer une association d’accès à un nom de domaine lorsque vous ne l’utilisez plus.

------
#### [ AWS Management Console ]

**Pour supprimer l’association d’accès au nom de domaine**

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

1. Dans le panneau de navigation principal, sélectionnez **Associations d’accès aux noms de domaine**.

1. Sélectionnez votre association d’accès au nom de domaine, puis choisissez **Supprimer**.

1. Confirmez votre choix, puis choisissez **Supprimer**.

------
#### [ AWS CLI ]

La commande `delete-access-association` suivante supprime l’association d’accès :

```
aws apigateway delete-domain-name-access-association \
    --domain-name-access-association-arn 'arn:aws:apigateway:us-west-2:444455556666:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234efg'
```

------

# Créez un nom de domaine personnalisé pour un APIs usage privé CloudFormation
<a name="apigateway-private-custom-domains-cfn"></a>

L'exemple de CloudFormation modèle suivant crée une API privée et un nom de domaine personnalisé privé, fait correspondre l'API privée au nom de domaine personnalisé, puis crée une association d'accès au nom de domaine. Vous devez fournir votre point de terminaison de VPC, votre nom de domaine et votre ARN de certificat.

Les considérations suivantes peuvent avoir un impact sur votre utilisation de CloudFormation pour créer un nom de domaine personnalisé privé :
+ Vous ne pouvez pas rejeter une association d'accès à un nom de domaine en utilisant CloudFormation. Pour rejeter une association d’accès à un nom de domaine, utilisez l’ AWS CLI.
+ Utilisez la `AWS::ApiGateway::DomainNameV2` CloudFormation propriété pour créer un nom de domaine personnalisé privé.
+ Utilisez la `AWS::ApiGateway:BasePathMappingV2` CloudFormation propriété pour créer un mappage de chemin de base.

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  EndpointID:
    Type: String
    Default: vpce-abcd1234567efg
    Description: A VPC endpoint with enableDnsHostnames and enableDnsSupport set to true.
  DomainName:
    Type: String
    Default: private.example.com
    Description: A domain name that you own.
  CertificateArn:
    Type: String
    Default: arn:aws:acm:us-west-2:123456789:certificate/abcd-000-1234-0000-000000abcd
    Description: An ACM certificate that covers the domain name.
Resources:
  PrivateApi:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      EndpointConfiguration:
        Types:
          - PRIVATE
        VpcEndpointIds:
          - !Ref EndpointID
      Name: private-api
      Policy:
        Statement:
          - Action: 'execute-api:Invoke'
            Effect: Allow
            Principal: '*'
            Resource: 'execute-api:/*'
          - Action: 'execute-api:Invoke'
            Condition:
              StringNotEquals:
                'aws:SourceVpce': !Ref EndpointID
            Effect: Deny
            Principal: '*'
            Resource: 'execute-api:/*'
        Version: 2012-10-17		 	 	 
  PrivateApiDeployment:
    Type: 'AWS::ApiGateway::Deployment'
    Properties:
      RestApiId: !Ref PrivateApi
      Description: Private API deployment
    DependsOn:
      - PrivateApiMethod
  PrivateApiStage:
    Type: 'AWS::ApiGateway::Stage'
    Properties:
      RestApiId: !Ref PrivateApi
      DeploymentId: !Ref PrivateApiDeployment
      StageName: prod
  PrivateApiMethod: 
    Type: 'AWS::ApiGateway::Method'
    Properties:
      HttpMethod: ANY
      ResourceId: !GetAtt PrivateApi.RootResourceId
      RestApiId: !Ref PrivateApi
      AuthorizationType: NONE
      Integration:
        Type: MOCK
        RequestTemplates:
          application/json: "{\"statusCode\": 200}"
        IntegrationResponses:
          - StatusCode: '200'
      MethodResponses:
        - StatusCode: '200'
  PrivateDomainName:
    Type: AWS::ApiGateway::DomainNameV2
    Properties:
      DomainName: !Ref DomainName
      CertificateArn: !Ref CertificateArn
      EndpointConfiguration:
        Types:
          - PRIVATE
      SecurityPolicy: TLS_1_2
      Policy:
        Statement:
            - Action: 'execute-api:Invoke'
              Effect: Allow
              Principal: '*'
              Resource: 'execute-api:/*'
            - Action: 'execute-api:Invoke'
              Condition:
                StringNotEquals:
                  'aws:SourceVpce': !Ref EndpointID
              Effect: Deny
              Principal: '*'
              Resource: 'execute-api:/*'
        Version: 2012-10-17		 	 	 
  PrivateBasePathMapping:
    Type: AWS::ApiGateway::BasePathMappingV2
    DependsOn:
      - PrivateApiStage
    Properties:
      BasePath: prod
      DomainNameArn: !GetAtt PrivateDomainName.DomainNameArn
      RestApiId: !Ref PrivateApi
      Stage: prod
  DomainNameAccessAssociation: 
    Type: AWS::ApiGateway::DomainNameAccessAssociation
    Properties:
      DomainNameArn: !GetAtt PrivateDomainName.DomainNameArn
      AccessAssociationSource: !Ref EndpointID
      AccessAssociationSourceType: VPCE
```