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.
Configuration d'une API d'API Gateway avec des intégrations privées à l'aide de la AWS CLI
Avant de créer une API avec l'intégration privée, votre ressource VPC doit être configurée et un équilibreur Network Load Balancer doit être créé et configuré avec votre source de VPC en tant que cible. Si les exigences ne sont pas satisfaites, suivez Configuration d'un équilibreur Network Load Balancer pour les intégrations privées API Gateway pour installer la ressource du VPC, créer un équilibreur Network Load Balancer et définir la ressource du VPC en tant que cible de l'équilibreur Network Load Balancer.
Note
Network Load Balancer et l'API doivent appartenir au même compte AWS.
Pour que vous puissiez être en mesure de créer et de gérer un VpcLink
, vous devez également disposer des autorisations appropriées configurés. Pour de plus amples informations, veuillez consulter Octroi d'autorisations pour créer un lien VPC.
Note
Vous avez uniquement besoin des autorisations pour créer une VpcLink
dans votre API. Vous n'avez pas besoin des autorisations permettant d'utiliser le composant VpcLink
.
Une fois que l'équilibreur Network Load Balancer est créé, prenez note de son ARN. Vous en aurez besoin pour créer un lien VPC pour l'intégration privée.
Pour configurer une API avec des intégrations privées à l'aide de l'AWS CLI
-
Créez un
VpcLink
ciblant l'équilibreur Network Load Balancer spécifié.aws apigateway create-vpc-link \ --name my-test-vpc-link \ --target-arns arn:aws:elasticloadbalancing:us-east-2:
123456789012
:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef
La sortie de cette commande accuse réception de la requête et indique l'état
PENDING
de la création deVpcLink
.{ "status": "PENDING", "targetArns": [ "arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef" ], "id": "gim7c3", "name": "my-test-vpc-link" }
La création du
VpcLink
par API Gateway prend entre 2 et 4 minutes. Lorsque l'opération se termine correctement, l'attributstatus
indiqueAVAILABLE
. Pour vérifier cette information, exécutez la commande CLI suivante :aws apigateway get-vpc-link --vpc-link-id
gim7c3
Si l'opération échoue, vous obtenez le statut
FAILED
et un message d'erreur sousstatusMessage
. Par exemple, si vous tentez de créer unVpcLink
avec un équilibreur Network Load Balancer qui est déjà associé au point de terminaison du VPC, vous obtenez le message suivant au niveau de la propriétéstatusMessage
:"NLB is already associated with another VPC Endpoint Service"
Une fois la création de
VpcLink
réussie, vous pouvez créer une API et l'intégrer à la ressource VPC par le biais deVpcLink
.Notez la valeur
id
duVpcLink
que vous venez de créer (
dans la sortie précédente). Vous en aurez besoin pour configurer l'intégration privée.gim7c3
-
Configurez une API en créant une ressource API Gateway
RestApi
:aws apigateway create-rest-api --name 'My VPC Link Test'
Notez la valeur
RestApi
deid
dans le résultat renvoyé. Vous avez besoin de cette valeur pour effectuer d'autres opérations sur l'API.À des fins d'illustration, nous allons créer une API avec seulement une méthode
GET
sur la ressource racine (/
) et intégrer la méthode auVpcLink
. -
Configurez la méthode
GET /
. Tout d'abord, obtenez l'identifiant de la ressource racine (/
):aws apigateway get-resources --rest-api-id
abcdef123
Dans la sortie, notez la valeur
id
du chemin/
. Dans cet exemple, nous présumons qu'il s'agit de
.skpp60rab7
Configurez la demande pour la méthode d'API de
GET /
:aws apigateway put-method \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --authorization-type "NONE"Si vous n'utilisez pas l'intégration proxy au
VpcLink
, vous devez également configurer au moins une réponse pour la méthode avec le code de statut200
. Dans le cas présent, nous allons utiliser l'intégration proxy. -
Configurez l'intégration privée de type
HTTP_PROXY
et appelez la commandeput-integration
comme suit :aws apigateway put-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --uri 'http://my-vpclink-test-nlb-1234567890abcdef
.us-east-2.amazonaws.com' \ --http-method GET \ --type HTTP_PROXY \ --integration-http-method GET \ --connection-type VPC_LINK \ --connection-idgim7c3
Pour une intégration privée, définissez
connection-type
surVPC_LINK
etconnection-id
sur l'identifiant de votreVpcLink
ou sur une variable d'étape faisant référence à votre identifiantVpcLink
. Le paramètreuri
n'est pas utilisé pour l'acheminement des demandes au point de terminaison, mais pour définir l'en-têteHost
et pour la validation de certificat.La commande renvoie le résultat suivant :
{ "passthroughBehavior": "WHEN_NO_MATCH", "timeoutInMillis": 29000, "connectionId": "gim7c3", "uri": "http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com", "connectionType": "VPC_LINK", "httpMethod": "GET", "cacheNamespace": "skpp60rab7", "type": "HTTP_PROXY", "cacheKeyParameters": [] }
Avec une variable d'étape, vous définissez la propriété
connectionId
lors de la création de l'intégration :aws apigateway put-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --uri 'http://my-vpclink-test-nlb-1234567890abcdef
.us-east-2.amazonaws.com' \ --http-method GET \ --type HTTP_PROXY \ --integration-http-method GET \ --connection-type VPC_LINK \ --connection-id "\${stageVariables.vpcLinkId}"Assurez-vous de délimiter l'expression de la variable d'étape avec des guillemets droits (
${stageVariables.vpcLinkId}
) et d'y ajouter le caractère d'échappement$
.Vous pouvez également mettre à jour l'intégration pour réinitialiser la valeur
connectionId
avec une variable d'étape :aws apigateway update-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'Assurez-vous d'utiliser une liste JSON obtenue à l'aide de stringify comme valeur du paramètre
patch-operations
.Vous pouvez utiliser une variable d'étape pour intégrer votre API à un autre VPC ou à un Network Load Balancer (équilibreur de charge réseau) en réinitialisant la valeur de la variable d'étape de
VpcLink
.Comme nous avons utilisé l'intégration proxy privée, l'API peut maintenant être déployée et testée. Avec l'intégration non proxy, vous devez également configurer la réponse de la méthode et la réponse de l'intégration, comme vous le feriez lorsque vous configurez une API avec des intégrations HTTP personnalisées.
-
Pour tester l'API, déployez-la. Ceci est nécessaire si vous avez utilisé la variable d'étape en tant qu'espace réservé de l'ID
VpcLink
. Pour déployer l'API avec une variable d'étape, appelez la commandecreate-deployment
comme suit :aws apigateway create-deployment \ --rest-api-id
abcdef123
\ --stage-name test \ --variables vpcLinkId=gim7c3
Pour mettre à jour la variable d'étape avec un autre ID
VpcLink
(par exemple,
), appelez la commandeasf9d7
update-stage
:aws apigateway update-stage \ --rest-api-id
abcdef123
\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7
'Utilisez la commande suivante pour appeler votre API :
curl -X GET https://
abcdef123
.execute-api.us-east-2.amazonaws.com/testVous pouvez également appeler l'URL d'appel de l'API dans un navigateur web pour afficher le résultat.
Lorsque vous codez en dur la propriété
connection-id
avec l'ID littéralVpcLink
, vous pouvez également appelertest-invoke-method
pour tester l'appel de l'API avant qu'elle ne soit déployée.