

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.

# Connexion à une API REST
<a name="connecting-to-data-rest-api"></a>

 AWS Glue vous permet de configurer un AWS Glue ConnectionType qui peut être utilisé pour vous connecter AWS Glue à n'importe quelle source de données basée sur l'API REST. Cela peut être utilisé comme source de données dans vos tâches ETL. Vous pouvez exécuter ces tâches pour transférer des données entre la source de données basée sur l'API REST et les AWS services ou autres applications prises en charge. 

**Topics**
+ [AWS Glue support pour l'API REST](rest-api-support.md)
+ [Politiques contenant les opérations d'API pour l'enregistrement des types de connexion et des creating/using connexions](rest-api-configuring-iam-permissions.md)
+ [Configuration d'une API REST ConnectionType](rest-api-configuring.md)
+ [Configuration d'une connexion à l'API REST](rest-api-configuring-connections.md)
+ [Tutoriel : Création d'une API REST ConnectionType et d'une connexion](rest-api-example.md)
+ [Limitations](rest-api-limitations.md)

# AWS Glue support pour l'API REST
<a name="rest-api-support"></a>

AWS Glue prend en charge l'API REST comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir d'une source de données basée sur l'API REST.

**Prise en charge en tant que cible ?**  
Non.

# Politiques contenant les opérations d'API pour l'enregistrement des types de connexion et des creating/using connexions
<a name="rest-api-configuring-iam-permissions"></a>

 L'exemple de politique IAM suivant décrit les autorisations requises pour l'enregistrement, la création, la gestion et l'utilisation des connexions à l'API REST dans les tâches AWS Glue ETL. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:RegisterConnectionType",
                "glue:ListConnectionTypes",
                "glue:DescribeConnectionType",
                "glue:CreateConnection",
                "glue:RefreshOAuth2Tokens",
                "glue:ListEntities",
                "glue:DescribeEntity"
            ],
            "Resource": "*"
        }
    ]
}
```

Vous pouvez également utiliser les politiques IAM suivantes pour autoriser l’accès :
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Accorde l'accès aux ressources dont AWS Glue les différents processus ont besoin pour s'exécuter en votre nom. Ces ressources incluent AWS Glue Amazon S3, IAM, CloudWatch Logs et Amazon EC2. Si vous suivez la convention de dénomination des ressources spécifiée dans cette politique, AWS Glue les processus disposent des autorisations requises. Cette politique est généralement attachée aux rôles spécifiés lorsque vous définissez les crawlers, les tâches et les points de terminaison de développement.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Accorde un accès complet aux AWS Glue ressources lorsqu'une identité à laquelle la politique est attachée utilise la console AWS de gestion. Si vous suivez la convention de dénomination pour les ressources spécifiées dans la politique, les utilisateurs bénéficient des capacités totales de la console. Cette politique s'applique généralement aux utilisateurs de la AWS Glue console.

Si vous fournissez des options réseau lors de la création d'une connexion à l'API REST, les actions suivantes doivent également être incluses dans le rôle IAM :

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        }
    ]
}
```

# Configuration d'une API REST ConnectionType
<a name="rest-api-configuring"></a>

 Avant de pouvoir AWS Glue transférer des données depuis la source de données basée sur l'API REST, vous devez satisfaire aux exigences suivantes : 

## Configuration requise
<a name="rest-api-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+  Vous avez configuré et enregistré un type de connexion à l' AWS Glue API REST. Consultez la section [Connexion à REST APIs](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html). 
+  Si vous utilisez les informations d'identification du OAuth2 client, le code d'autorisation ou JWT, configurez l'application client en conséquence. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre source de données basée sur l'API REST. En général, aucune autre configuration n'est nécessaire du côté de l'API REST. 

# Configuration d'une connexion à l'API REST
<a name="rest-api-configuring-connections"></a>

 Pour configurer un connecteur d' AWS Glue API REST, vous devez configurer un type de AWS Glue connexion. Ce type de connexion contient des détails sur les propriétés du fonctionnement de la source de données REST et interprète des éléments tels que l'authentification, les demandes, les réponses, la pagination, les validations et les entités/métadonnées. Pour obtenir la liste complète des propriétés requises pour un type de connexion AWS Glue REST, consultez l'[ RegisterConnectionType](https://docs.aws.amazon.com/glue/latest/webapi/API_DescribeConnectionType.html)API et les étapes de [connexion à REST APIs](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html). 

 Lors de la création du connecteur d'API REST, la politique suivante est nécessaire pour autoriser les actions pertinentes : 

```
{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:RegisterConnectionType",
                "glue:ListConnectionTypes",
                "glue:DescribeConnectionType",
                "glue:CreateConnection",
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        }
    ]
}
```

# Tutoriel : Création d'une API REST ConnectionType et d'une connexion
<a name="rest-api-example"></a>

**Connexion à l'API REST Foo**

 Nous allons créer une AWS Glue API REST ConnectionType et une AWS Glue connexion correspondante pour l'API Foo REST. Cette API possède les propriétés suivantes (qui peuvent être extraites de la documentation de l'API REST). 
+  **URL de l'instance** : https://foo.cloud.com/rest/ v1. 
+  **Type d'authentification** : OAuth2 (informations d'identification du client). 
+  **Méthode REST** : GET. 
+  **Type de pagination** : Offset avec les propriétés « limit » et « offset » placées dans le paramètre de requête de la requête. 
+ **Entités prises en charge** :
  +  **Barre** : chemin relatif [/bar.json]. 
  +  **Base : chemin** relatif [/baz.json]. 

 Une fois tous les détails obtenus, nous pouvons commencer à créer la AWS Glue connexion à l'API Foo REST. 

**Pour créer une connexion à l'API REST** :

1.  Créez le type de connexion à l'API REST en AWS Glue appelant l' RegisterConnectionType API à l'aide de l' AWS API, de la CLI ou du SDK. Cela créera une nouvelle ConnectionType ressource dans AWS Glue. 

   ```
   {
       "ConnectionType": "REST-FOO-CONNECTOR",
       "IntegrationType": "REST",
       "Description": "AWS Glue Connection Type for the FOO REST API",
       "ConnectionProperties": {
           "Url": {
               "Name": "Url",
               "Required": true,
               "DefaultValue": "https://foo.cloud.com/rest/v1",
               "PropertyType": "USER_INPUT"
           }
       },
       "ConnectorAuthenticationConfiguration": {
           "AuthenticationTypes": ["OAUTH2"],
           "OAuth2Properties": {
               "OAuth2GrantType": "CLIENT_CREDENTIALS"
           }
       },
       "RestConfiguration": {
           "GlobalSourceConfiguration": {
           "RequestMethod": "GET",
           "ResponseConfiguration": {
               "ResultPath": "$.result",
               "ErrorPath": "$.error.message"
           },
           "PaginationConfiguration": {
               "OffsetConfiguration": {
                   "OffsetParameter": {
                       "Key": "offset",
                       "PropertyLocation": "QUERY_PARAM"
                   },
                   "LimitParameter": {
                       "Key": "limit",
                       "PropertyLocation": "QUERY_PARAM",
                       "DefaultValue": "50"
                   }
               }
           }
       },
       "ValidationEndpointConfiguration": {
           "RequestMethod": "GET",
           "RequestPath": "/bar.json?offset=1&limit=10"
       },
       "EntityConfigurations": {
           "bar": {
               "SourceConfiguration": {
                   "RequestMethod": "GET",
                   "RequestPath": "/bar.json",
                   "ResponseConfiguration": {
                       "ResultPath": "$.result",
                       "ErrorPath": "$.error.message"
                   }
               },
               "Schema": {
                   "name": {
                       "Name": "name",
                       "FieldDataType": "STRING"
                   },
                   "description": {
                       "Name": "description",
                       "FieldDataType": "STRING"
                   },
                   "id": {
                       "Name": "id",
                       "FieldDataType": "STRING"
                   },
                   "status": {
                       "Name": "status",
                       "FieldDataType": "STRING"
                   }
               }
           }
       }
   }
   }
   ```

1.  Dans AWS Secrets Manager, créez un secret. Le secret doit contenir le secret du consommateur de l'application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 
**Note**  
Vous devez créer un secret par connexion dans AWS Glue

1.  Créez la AWS Glue connexion en appelant l' CreateConnection API à l'aide de l' AWS API, de la CLI ou du SDK. 

   1.  Référencez le nom du type de connexion REST indiqué à l'étape 1 sous la forme « ConnectionType ». 

   1.  Indiquez le InstanceUrl et tout autre ConnectionProperties élément défini au cours du processus AWS Glue ConnectionType d'enregistrement. 

   1.  Choisissez parmi les types d'authentification configurés. L'API REST utilisée par Foo OAuth2 avec le type de ClientCredentials subvention. 

   1.  Fournissez le **SecretArn**et les autres **AuthenticationProperties**qui sont configurés. Par exemple, nous avons configuré `OAUTH2` comme suit : AuthenticationType nous allons définir les « OAuth2 Propriétés » dans le CreateConnectionInput. Cela nécessitera des propriétés telles que « OAuth2 GrantType », « TokenUrl » et « OAuth2 ClientApplication ». 

1.  Faites la CreateConnection demande qui créera la AWS Glue connexion. 

   ```
   {
       "ConnectionInput": {
           "Name": "ConnectionFooREST",
           "ConnectionType": "REST-FOO-CONNECTOR",
           "ConnectionProperties": {},
           "ValidateCredentials": true,
           "AuthenticationConfiguration": {
               "AuthenticationType": "OAUTH2",
               "SecretArn": "arn:aws:secretsmanager:<region>:<accountId>:secret:<secretId>",
               "OAuth2Properties": {
                   "OAuth2GrantType": "CLIENT_CREDENTIALS",
                   "TokenUrl": "https://foo.cloud.com/oauth/token",
                   "OAuth2ClientApplication": {
                       "UserManagedClientApplicationClientId": "your-managed-client-id"
                   }
               }
           }
       }
   }
   ```

# Limitations
<a name="rest-api-limitations"></a>

Les limites du connecteur d'API REST sont les suivantes :
+  Le connecteur d'API REST est uniquement disponible via l' AWS API, la CLI ou le SDK. Vous ne pouvez pas configurer les connecteurs REST via la console. 
+  Le AWS Glue REST ne ConnectionType peut être configuré que pour LIRE les données de la source de données basée sur l'API REST. La connexion ne peut être utilisée que comme SOURCE dans les tâches AWS Glue ETL. 
+  Le filtrage et le partitionnement ne sont pas pris en charge. 
+  La sélection de champs n'est pas prise en charge. 