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 optimisée pour les périphériques à l'aide des commandes de l' AWS CLI
La configuration d'une API à l'aide de la commande AWS CLI nécessite d'utiliser les put-integration-response
commandes create-rest-api
get-resources
put-method
, create-resource
ou put-method-response
put-integration
,,, et. Les procédures suivantes montrent comment utiliser ces AWS CLI commandes pour créer l' PetStore API simple du type HTTP
d'intégration.
Pour créer une PetStore API simple à l'aide de AWS CLI
-
Appelez la commande
create-rest-api
pour configurer l'APIRestApi
dans une région spécifique (us-west-2
).aws apigateway create-rest-api --name 'Simple PetStore (AWS CLI)' --region us-west-2
Voici la sortie de cette commande :
{ "id": "vaz7da96z6", "name": "Simple PetStore (AWS CLI)", "createdDate": "2022-12-15T08:07:04-08:00", "apiKeySource": "HEADER", "endpointConfiguration": { "types": [ "EDGE" ] }, "disableExecuteApiEndpoint": false }
Notez la valeur
id
renvoyée pour l'APIRestApi
nouvellement créée. Vous en aurez besoin pour configurer d'autres parties de l'API. -
Appelez la commande
get-resources
pour récupérer l'identificateur de ressource racine de l'APIRestApi
.aws apigateway get-resources --rest-api-id vaz7da96z6 --region us-west-2
Voici la sortie de cette commande :
{ "items": [ { "id": "begaltmsm8", "path": "/" } ] }
Notez la ressource racine
Id
. Vous en aurez besoin pour commencer la configuration l'arborescence des ressource de l'API et la configuration des méthodes et des intégrations. -
Appelez la commande
create-resource
pour ajouter une ressource enfant (pets
) sous la ressource racine (begaltmsm8
) :aws apigateway create-resource --rest-api-id vaz7da96z6 \ --region us-west-2 \ --parent-id begaltmsm8 \ --path-part pets
Voici la sortie de cette commande :
{ "id": "6sxz2j", "parentId": "begaltmsm8", "pathPart": "pets", "path": "/pets" }
Pour ajouter une ressource enfant sous la racine, spécifiez la ressource racine
Id
en tant que la valeur de la propriétéparentId
. De même, pour ajouter une ressource enfant sous la ressourcepets
, répétez l'étape précédente tout en remplaçant la valeurparent-id
par l'pets
de la ressourceid
6sxz2j
:aws apigateway create-resource --rest-api-id vaz7da96z6 \ --region us-west-2 \ --parent-id 6sxz2j \ --path-part '{petId}'
Pour faire d'une partie d'un chemin un paramètre de chemin, entourez-la d'accolades. Si elle aboutit, cette commande renvoie la réponse suivante :
{ "id": "rjkmth", "parentId": "6sxz2j", "path": "/pets/{petId}", "pathPart": "{petId}" }
Maintenant que vous avez créé deux ressources :
/pets
(6sxz2j
) et/pets/{petId}
(rjkmth
), vous pouvez continuer à configurer des méthodes basées sur celles-ci. -
Appelez la commande
put-method
pour ajouter la méthode HTTPGET
sur la ressource/pets
. Cela crée une APIMethod
deGET /pets
avec accès ouvert, faisant référence à la ressource/pets
par sa valeur d'ID6sxz2j
.aws apigateway put-method --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --authorization-type "NONE" \ --region us-west-2
Voici un exemple de la sortie positive de cette commande :
{ "httpMethod": "GET", "authorizationType": "NONE", "apiKeyRequired": false }
La méthode concerne l'accès ouvert, car
authorization-type
est défini surNONE
. Pour autoriser uniquement les utilisateurs authentifiés à appeler la méthode, vous pouvez utiliser des rôles et des stratégies IAM, un mécanisme d'autorisation Lambda (anciennement appelé mécanisme Custom Authorizer) ou un groupe d'utilisateurs Amazon Cognito. Pour de plus amples informations, veuillez consulter Contrôle et gestion de l'accès à une API REST dans API Gateway.Pour activer l'accès en lecture à la ressource
/pets/{petId}
(rjkmth
), ajoutez-y la méthode HTTPGET
pour créer une APIMethod
deGET /pets/{petId}
comme suit.aws apigateway put-method --rest-api-id vaz7da96z6 \ --resource-id rjkmth --http-method GET \ --authorization-type "NONE" \ --region us-west-2 \ --request-parameters method.request.path.petId=true
Voici un exemple de la sortie positive de cette commande :
{ "httpMethod": "GET", "authorizationType": "NONE", "apiKeyRequired": false, "requestParameters": { "method.request.path.petId": true } }
Notez que le paramètre de chemin de demande de méthode de
petId
doit être spécifié en tant que paramètre de demande obligatoire pour que sa valeur définie de manière dynamique soit mappée à un paramètre de demande d'intégration correspondant et transmise au backend. -
Appelez la commande
put-method-response
pour configurer la réponse 200 OK de la méthodeGET /pets
, en spécifiant la ressource/pets
par sa valeur d'ID6sxz2j
.aws apigateway put-method-response --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j --http-method GET \ --status-code 200 --region us-west-2
Voici la sortie de cette commande :
{ "statusCode": "200" }
De même, pour configurer la réponse 200 OK de la méthode
GET /pets/{petId}
, procédez comme suit en spécifiant la ressource/pets/{petId}
par sa valeur d'ID de ressourcerjkmth
:aws apigateway put-method-response --rest-api-id vaz7da96z6 \ --resource-id rjkmth --http-method GET \ --status-code 200 --region us-west-2
Après avoir configuré une interface client simple pour l'API, vous pouvez passer à la configuration de l'intégration des méthodes d'API avec le serveur principal.
-
Appelez la commande
put-integration
pour configurer uneIntegration
avec un point de terminaison HTTP spécifié pour la méthodeGET /pets
. La ressource/pets
est identifiée par son ID de ressource6sxz2j
:aws apigateway put-integration --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j --http-method GET --type HTTP \ --integration-http-method GET \ --uri 'http://petstore-demo-endpoint.execute-api.com/petstore/pets' \ --region us-west-2
Voici la sortie de cette commande :
{ "type": "HTTP", "httpMethod": "GET", "uri": "http://petstore-demo-endpoint.execute-api.com/petstore/pets", "connectionType": "INTERNET", "passthroughBehavior": "WHEN_NO_MATCH", "timeoutInMillis": 29000, "cacheNamespace": "6sxz2j", "cacheKeyParameters": [] }
Notez que l'
uri
d'intégration dehttp://petstore-demo-endpoint.execute-api.com/petstore/pets
spécifie le point de terminaison d'intégration de la méthodeGET /pets
.De même, vous créez une demande d'intégration pour la méthode
GET /pets/{petId}
comme suit :aws apigateway put-integration \ --rest-api-id vaz7da96z6 \ --resource-id rjkmth \ --http-method GET \ --type HTTP \ --integration-http-method GET \ --uri 'http://petstore-demo-endpoint.execute-api.com/petstore/pets/{id}' \ --request-parameters '{"integration.request.path.id":"method.request.path.petId"}' \ --region us-west-2
Ici, le point de terminaison d'intégration,
uri
dehttp://petstore-demo-endpoint.execute-api.com/petstore/pets/{id}
, utilise également un paramètre de chemin (id
). Sa valeur est mappée à partir du paramètre de chemin de demande de méthode correspondant{petId}
. Le mappage est défini dans le cadre desrequest-parameters
. Si ce mappage n'est pas défini ici, le client reçoit une réponse d'erreur lorsqu'il essaie d'appeler la méthode.Voici la sortie de cette commande :
{ "type": "HTTP", "httpMethod": "GET", "uri": "http://petstore-demo-endpoint.execute-api.com/petstore/pets/{id}", "connectionType": "INTERNET", "requestParameters": { "integration.request.path.id": "method.request.path.petId" }, "passthroughBehavior": "WHEN_NO_MATCH", "timeoutInMillis": 29000, "cacheNamespace": "rjkmth", "cacheKeyParameters": [] }
-
Appelez la commande
put-integration-response
pour créer une réponseIntegrationResponse
de la méthodeGET /pets
intégrée à un backend HTTP.aws apigateway put-integration-response --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j --http-method GET \ --status-code 200 --selection-pattern "" \ --region us-west-2
Voici la sortie de cette commande :
{ "statusCode": "200", "selectionPattern": "" }
De même, appelez la commande
put-integration-response
suivante pour créer une réponseIntegrationResponse
de la méthodeGET /pets/{petId}
:aws apigateway put-integration-response --rest-api-id vaz7da96z6 \ --resource-id rjkmth --http-method GET --status-code 200 --selection-pattern "" --region us-west-2
Au cours des étapes précédentes, vous avez terminé de configurer une API simple qui permet à vos clients d'interroger les animaux de compagnie disponibles sur le PetStore site Web et de voir un animal individuel avec un identifiant spécifique. Pour le rendre appelable par votre client, vous devez déployer l'API.
-
Déployer l'API jusqu'à une étape
stage
, par exemple, en appelantcreate-deployment
:aws apigateway create-deployment --rest-api-id vaz7da96z6 \ --region us-west-2 \ --stage-name test \ --stage-description 'Test stage' \ --description 'First deployment'
Voici la sortie de cette commande :
{ "id": "ab1c1d", "description": "First deployment", "createdDate": "2022-12-15T08:44:13-08:00" }
Vous pouvez tester cette API en saisissant l'URL https://vaz7da96z6.execute-api.us-west-2.amazonaws.com/test/pets
dans un navigateur, et en remplaçant vaz7da96z6
par l'identificateur de votre API. La sortie attendue devrait se présenter comme suit :
[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
Pour tester la méthode GET /pets/{petId}
, tapez https://vaz7da96z6.execute-api.us-west-2.amazonaws.com/test/pets/3
dans le navigateur. Vous devriez recevoir la réponse suivante :
{ "id": 3, "type": "fish", "price": 0.99 }