Je souhaite accéder à une API Amazon API Gateway depuis un autre compte AWS.
Résolution
Points de terminaison d'API publics
Vous pouvez accéder aux points de terminaison publics d'API Gateway (régionaux ou optimisés pour la périphérie) directement à partir de l'URL de l’étape d'API. Par exemple, https://0123456789.execute-api.{region}.amazonaws.com/{stage-name}.
Vous pouvez également utiliser un nom de domaine personnalisé dans une zone hébergée publique pour accéder aux points de terminaison publics d’API Gateway.
Pour plus d'informations, consultez la section Comment puis-je configurer un nom de domaine personnalisé pour mon API API Gateway ?
Points de terminaison d'API REST privées
Vous pouvez utiliser un point de terminaison de VPC d’interface pour accéder aux points de terminaison d’API REST privées depuis votre Amazon Virtual Private Cloud (Amazon VPC).
Pour accéder à une API REST privée située dans un autre compte, modifiez la politique de ressources afin d'accorder des autorisations intercomptes. Vous pouvez également utiliser un nom de domaine personnalisé privé pour associer votre point de terminaison de VPC à un autre compte.
Pour plus d’informations, consultez la section Comment puis-je utiliser un point de terminaison de VPC d'interface pour accéder à une API REST privée API Gateway sur un autre compte ?
Utiliser l’authentification IAM
Une configuration supplémentaire est requise pour accéder à une API API Gateway avec un accès intercompte qui utilise l'authentification Gestion des identités et des accès AWS (AWS IAM). Assurez-vous que l'entité IAM du compte client dispose d’autorisations pour invoquer l'API par le biais d'une politique basée sur l'identité.
Le rôle IAM du compte source doit bénéficier d'un accès explicite dans la politique de ressources, comme suit :
API REST
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::CONSUMER-ACCOUNT-ID:user/USERNAME",
"CONSUMER-ACCOUNT-ID"
]
},
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:YOUR-REGION:API-OWNER-ACCOUNT-ID:API-ID///*"
]
}
]
}
Remarque : Remplacez CONSUMER-ACCOUNT-ID, USERNAME, YOUR-REGION, API-OWNER-ACCOUNT-ID et API-ID par vos variables.
Pour plus d'informations, consultez la section Comment puis-je activer l'authentification IAM pour les API REST API Gateway ?
API HTTP
L'option permettant d'utiliser des stratégies en matière de ressources pour fournir une authentification IAM pour les comptes croisés n'est pas disponible pour les API HTTP API Gateway.
Vous pouvez utiliser l'action d'API sts:AssumeRole pour endosser un rôle pour le compte d'API HTTP. Le rôle endossé fournit des informations d'identification de sécurité temporaires que vous pouvez utiliser pour invoquer l'API HTTP dans un autre compte.
Pour plus d'informations, consultez la section Comment puis-je fournir une autorisation IAM intercompte pour les API HTTP API Gateway ?
Informations connexes
API REST privées dans API Gateway
Exemple : Autoriser les rôles d'un autre compte AWS à utiliser une API