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.
Utilisation du mode AWS AppSync privé APIs
Si vous utilisez Amazon Virtual Private Cloud (Amazon VPC), vous pouvez créer des APIs espaces AWS AppSync privés, accessibles APIs uniquement depuis un VPC. Avec une API privée, vous pouvez restreindre l'accès des API à vos applications internes et vous connecter à vos points de terminaison GraphQL et Realtime sans exposer les données publiquement.
Pour établir une connexion privée entre votre VPC et le AWS AppSync service, vous devez créer des points de terminaison VPC d'interface. Les points de terminaison de l'interface sont alimentés par AWS PrivateLink
AWS AppSync supports AWS PrivateLink pour les opérations du plan de données et du plan de contrôle :
-
Point de terminaison du plan de données (
com.amazonaws.{region}.appsync-api) : fournit un accès privé à votre GraphQL et en temps réel APIs pour les requêtes, les mutations et les abonnements. -
Point de terminaison du plan de contrôle (
com.amazonaws.{region}.appsync) : fournit un accès privé aux opérations AWS AppSync de gestion telles que la création APIs, la mise à jour de schémas et la configuration de sources de données.
Certains facteurs supplémentaires doivent être pris en compte avant d'activer les fonctionnalités de l'API privée :
-
La configuration des points de terminaison de l'interface VPC lorsque AWS AppSync les fonctionnalités de DNS privé sont activées empêchera les ressources du VPC d'invoquer d'autres utilisateurs AWS AppSync publics à l' APIs aide de l'URL d'API générée. AWS AppSync Cela est dû au fait que la demande à l'API publique est acheminée via le point de terminaison de l'interface, ce qui n'est pas autorisé pour le public APIs. Pour appeler public APIs dans ce scénario, il est recommandé de configurer des noms de domaine personnalisés sur public APIs, qui peuvent ensuite être utilisés par les ressources du VPC pour appeler l'API publique.
-
Votre AWS AppSync accès privé ne APIs sera disponible que depuis votre VPC. L'éditeur de requêtes de AWS AppSync console ne pourra accéder à votre API que si la configuration réseau de votre navigateur peut acheminer le trafic vers votre VPC (par exemple, connexion via VPN ou via AWS Direct Connect un VPN).
-
Avec un point de terminaison d'interface VPC pour AWS AppSync, vous pouvez accéder à n'importe quelle API privée dans le même AWS compte et dans la même région. Pour restreindre davantage l'accès au mode privé APIs, vous pouvez envisager les options suivantes :
-
S'assurer que seuls les administrateurs requis peuvent créer des interfaces de point de terminaison VPC pour. AWS AppSync
-
Utilisation de politiques personnalisées pour les points de terminaison du VPC pour limiter celles qui APIs peuvent être invoquées à partir des ressources du VPC.
-
Pour les ressources du VPC, nous vous recommandons d'utiliser l'autorisation IAM pour les invoquer AWS AppSync APIs en vous assurant que les ressources se voient attribuer des rôles limités au. APIs
-
-
Lorsque vous créez ou utilisez des politiques qui limitent les principes IAM, vous devez définir
authorizationTypela méthode sur ou.AWS_IAMNONE
Création d'un AWS AppSync compte privé APIs
Les étapes ci-dessous vous montrent comment créer un mode privé APIs dans le AWS AppSync service.
Avertissement
Vous pouvez activer les fonctionnalités de l'API privée uniquement lors de la création de l'API. Ce paramètre ne peut pas être modifié sur une AWS AppSync API ou une API AWS AppSync privée après sa création.
-
Connectez-vous à la AppSync console AWS Management Console et ouvrez-la
. -
Dans le Tableau de bord, choisissez Créer une API.
-
-
Choisissez Concevoir une API à partir de zéro, puis cliquez sur Suivant.
-
Dans la section API privée, choisissez Utiliser les fonctionnalités de l'API privée.
-
Configurez le reste des options, passez en revue les données de votre API, puis choisissez Create.
Avant de pouvoir utiliser votre API AWS AppSync privée, vous devez configurer les points de terminaison de l'interface AWS AppSync dans votre VPC. Notez que l'API privée et le VPC doivent se trouver dans le même AWS compte et dans la même région.
Création de points de terminaison d'interface pour AWS AppSync
Vous pouvez créer des points de terminaison d'interface pour AWS AppSync utiliser la console Amazon VPC ou AWS Command Line Interface le AWS CLI(). En fonction de votre cas d'utilisation, vous devrez peut-être créer un ou les deux types de point de terminaison :
-
Point de terminaison du plan de données : obligatoire pour accéder à Private APIs depuis votre VPC
-
Point de terminaison du plan de contrôle : nécessaire pour gérer AWS AppSync les ressources de votre VPC à l'aide du ou AWS CLI SDKs
Pour plus d’informations, consultez Création d’un point de terminaison d’interface dans le Guide de l’utilisateur Amazon VPC.
Note
Assurez-vous de sélectionner le bon service de point de terminaison VPC ; il y APIs en com.amazonaws.{region}.appsync a deux pour AppSync : com.amazonaws.{region}.appsync-api celui requis pour le mode privé et celui utilisé pour la gestion des API.
Pour utiliser l'option DNS privé, vous devez définir les enableDnsSupportattributes valeurs enableDnsHostnames et de votre VPC. Pour plus d'informations, consultez Affichage et mise à jour de la prise en charge de DNS pour votre VPC dans le Guide de l'utilisateur Amazon VPC. Si vous activez les fonctionnalités DNS privées pour le point de terminaison de l'interface, vous pouvez envoyer des requêtes à votre AWS AppSync API GraphQL et à votre point de terminaison en temps réel en utilisant ses points de terminaison DNS publics par défaut en utilisant le format ci-dessous :
https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql
Pour les opérations du plan de contrôle, vous pouvez utiliser le point de terminaison AWS AppSync de service standard :
https://appsync.{region}.amazonaws.com
Pour plus d'informations sur les points de terminaison de service, voir Points de terminaison de service et quotas dans le manuel de référence AWS générale.
Pour plus d'informations sur les interactions de service avec les points de terminaison d'interface, consultez la section Accès à un service via un point de terminaison d'interface dans le guide de l'utilisateur Amazon VPC.
Pour plus d'informations sur la création et la configuration d'un point de terminaison à l'aide de AWS CloudFormation, consultez la VPCEndpoint ressource AWS EC2: : : : dans le guide de AWS CloudFormation l'utilisateur.
Exemples avancés
Si vous activez les fonctionnalités DNS privées pour le point de terminaison de l'interface, vous pouvez envoyer des requêtes à votre AWS AppSync API GraphQL et à votre point de terminaison en temps réel en utilisant ses points de terminaison DNS publics par défaut en utilisant le format ci-dessous :
https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql
À l'aide des noms d'hôtes DNS publics du point de terminaison VPC de l'interface, l'URL de base pour appeler l'API sera au format suivant :
https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql
Vous pouvez également utiliser le nom d'hôte DNS spécifique à AZ si vous avez déployé un point de terminaison dans l'AZ :
https://{vpc_endpoint_id}-{endpoint_dns_identifier}-{az_id}.appsync-api.{region}.vpce.amazonaws.com/graphql.
L'utilisation du nom DNS public du point de terminaison VPC nécessitera que le nom d'hôte du point de terminaison de l' AWS AppSync API soit transmis en tant Host qu' x-appsync-domainen-tête de la demande. Ces exemples utilisent un TodoAPI qui a été créé dans le guide Lancer un exemple de schéma :
curl https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -H "Host:{api_url_identifier}.appsync-api.{region}.amazonaws.com" \ -d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Dans les exemples suivants, nous utiliserons l'application Todo générée dans le guide Lancer un exemple de schéma. Pour tester l'exemple d'API Todo, nous allons utiliser le DNS privé pour appeler l'API. Vous pouvez utiliser n'importe quel outil de ligne de commande de votre choix ; cet exemple utilise curl{ } dans les commandes ci-dessous par les valeurs correspondantes de votre AWS compte.
Test de l'opération de mutation — createTodo Demande
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Tester l'opération de mutation — createTodo Réponse
{ "data": { "createTodo": { "id": "<todo-id>", "name": "My first GraphQL task", "where": "Day 1", "when": "Friday Night", "description": "Learn more about GraphQL" } } }
Tester le fonctionnement de la requête — listTodos Demande
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -d '{"query":"query ListTodos {\n listTodos {\n items {\n description\n id\n name\n when\n where\n }\n }\n}\n","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Tester le fonctionnement de la requête — listTodos Demande
{ "data": { "listTodos": { "items": [ { "description": "Learn more about GraphQL", "id": "<todo-id>", "name": "My first GraphQL task", "when": "Friday night", "where": "Day 1" } ] } } }
Tester le fonctionnement de l'abonnement — S'abonner à une mutation createTodo
Pour configurer les abonnements GraphQL dans AWS AppSync, consultez Création d'un client en temps réel WebSocket . À partir d'une EC2 instance Amazon dans un VPC, vous pouvez tester votre point de terminaison d'abonnement à l'API AWS AppSync privée à l'aide de wscat.API
KEY pour l'autorisation.
$ header=`echo '{"host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com","x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}"}' | base64 | tr -d '\n'` $ wscat -p 13 -s graphql-ws -c "wss://{api_url_identifier}.appsync-realtime-api.us-west-2.amazonaws.com/graphql?header=$header&payload=e30=" Connected (press CTRL+C to quit) > {"type": "connection_init"} < {"type":"connection_ack","payload":{"connectionTimeoutMs":300000}} < {"type":"ka"} > {"id":"f7a49717","payload":{"data":"{\"query\":\"subscription onCreateTodo {onCreateTodo {description id name where when}}\",\"variables\":{}}","extensions":{"authorization":{"x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}","host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com"}}},"type":"start"} < {"id":"f7a49717","type":"start_ack"}
Vous pouvez également utiliser le nom de domaine du point de terminaison VPC tout en vous assurant de spécifier l'en-tête Host dans la wscat commande pour établir le websocket :
$ header=`echo '{"host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com","x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}"}' | base64 | tr -d '\n'` $ wscat -p 13 -s graphql-ws -c "wss://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql?header=$header&payload=e30=" --header Host:{api_url_identifier}.appsync-realtime-api.us-west-2.amazonaws.com Connected (press CTRL+C to quit) > {"type": "connection_init"} < {"type":"connection_ack","payload":{"connectionTimeoutMs":300000}} < {"type":"ka"} > {"id":"f7a49717","payload":{"data":"{\"query\":\"subscription onCreateTodo {onCreateTodo {description id priority title}}\",\"variables\":{}}","extensions":{"authorization":{"x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}","host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com"}}},"type":"start"} < {"id":"f7a49717","type":"start_ack"}
Exécutez le code de mutation ci-dessous :
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Ensuite, un abonnement est déclenché et le message de notification apparaît comme indiqué ci-dessous :
< {"id":"f7a49717","type":"data","payload":{"data":{"onCreateTodo":{"description":"Go to the shops","id":"169ce516-b7e8-4a6a-88c1-ab840184359f","priority":5,"title":"Go to the shops"}}}}
Exemples de plans de contrôle
Une fois le point de terminaison VPC du plan de contrôle configuré, vous pouvez gérer les AWS AppSync ressources depuis votre VPC à l'aide du ou. AWS CLI SDKs Voici des exemples d'opérations courantes sur le plan de contrôle :
Création d'une API à l'aide du AWS CLI
aws appsync create-graphql-api \ --name "MyPrivateAPI" \ --authentication-type API_KEY \ --visibility PRIVATE
Mettre à jour un schéma
aws appsync start-schema-creation \ --api-id {api-id} \ --definition file://schema.graphql
Création d'une source de données
aws appsync create-data-source \ --api-id {api-id} \ --name "MyDataSource" \ --type AWS_LAMBDA \ --lambda-config lambdaFunctionArn=arn:aws:lambda:{region}:{account}:function:MyFunction
Lorsque vous utilisez le point de terminaison du plan de contrôle avec le DNS privé activé, ces commandes seront automatiquement acheminées via votre point de terminaison VPC. Si le DNS privé n'est pas activé, vous pouvez spécifier l'URL du point de terminaison :
aws appsync create-graphql-api \ --endpoint-url https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync.{region}.vpce.amazonaws.com \ --name "MyPrivateAPI" \ --authentication-type API_KEY \ --visibility PRIVATE
Utiliser les politiques IAM pour limiter la création d'API publiques
AWS AppSync prend en charge les Conditioninstructions IAM à utiliser avec Private APIs. Le visibility champ peut être inclus dans les déclarations de politique IAM relatives à l'appsync:CreateGraphqlApiopération afin de contrôler quels rôles et utilisateurs IAM peuvent créer des rôles privés et publics. APIs Cela permet à un administrateur IAM de définir une politique IAM qui permettra uniquement à un utilisateur de créer une API GraphQL privée. Un utilisateur qui tente de créer une API publique recevra un message non autorisé.
Par exemple, un administrateur IAM pourrait créer la déclaration de politique IAM suivante pour autoriser la création de Private : APIs
{ "Sid": "AllowPrivateAppSyncApis", "Effect": "Allow", "Action": "appsync:CreateGraphqlApi", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "appsync:Visibility": "PRIVATE" } } }
Un administrateur IAM peut également ajouter la politique de contrôle des services suivante pour empêcher tous les utilisateurs d'une AWS organisation de créer une version AWS AppSync APIs autre que privée APIs :
{ "Sid": "BlockNonPrivateAppSyncApis", "Effect": "Deny", "Action": "appsync:CreateGraphqlApi", "Resource": "*", "Condition": { "ForAnyValue:StringNotEquals": { "appsync:Visibility": "PRIVATE" } } }
Support VPC PrivateLink
Le support VPC Privatelink est disponible dans. AWS AppSync PrivateLink vous permet d'utiliser et d'interagir avec un AWS Service sans qu'aucun trafic ne quitte le AWS réseau.
AWS AppSync prend en AWS PrivateLink charge les opérations du plan de données et du plan de contrôle.
-
Point de terminaison VPCE (
appsync.<region>.vpce.amazonaws.com) : fournit un accès VPC aux opérations du plan de données et du plan de contrôle comme suit :-
appsync pour les opérations du plan de contrôle
-
appsync-api pour les opérations sur le plan de données
-