

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.

# Ajouter une AWS Glue connexion
<a name="console-connections"></a>

 Vous pouvez vous connecter aux sources de données AWS Glue de Spark par programmation. Pour de plus amples informations, consultez [Types et options de connexion pour ETL dans AWS Glue pour Spark](aws-glue-programming-etl-connect.md). 

Vous pouvez également utiliser la AWS Glue console pour ajouter, modifier, supprimer et tester des connexions. Pour plus d'informations sur AWS Glue les connexions, consultez[Connexion aux données](glue-connections.md).

**Topics**
+ [Connexion à Adobe Analytics](connecting-to-adobe-analytics.md)
+ [Connexion à Adobe Marketo Engage](connecting-to-data-adobe-marketo-engage.md)
+ [Connexion à Amazon Redshift dans AWS Glue Studio](connecting-to-data-redshift.md)
+ [Connexion à Asana](connecting-to-asana.md)
+ [Connexion à Azure Cosmos DB dans AWS Glue Studio](connecting-to-data-azurecosmos.md)
+ [Connexion à Azure SQL dans AWS Glue Studio](connecting-to-data-azuresql.md)
+ [Connexion à Blackbaud Raiser’s Edge NXT](connecting-to-data-blackbaud.md)
+ [Connexion à CircleCI](connecting-to-data-circleci.md)
+ [Connexion à Datadog](connecting-to-datadog.md)
+ [Connexion à Docusign Monitor](connecting-to-data-docusign-monitor.md)
+ [Connexion à Domo](connecting-to-data-domo.md)
+ [Connexion à Dynatrace](connecting-to-data-dynatrace.md)
+ [Connexion à Facebook Ads](connecting-to-data-facebook-ads.md)
+ [Connexion à Facebook Page Insights](connecting-to-data-facebook-page-insights.md)
+ [Connexion à Freshdesk](connecting-to-data-freshdesk.md)
+ [Connexion à Freshsales](connecting-to-data-freshsales.md)
+ [Connexion à Google Ads](connecting-to-googleads.md)
+ [Connexion à Google Analytics 4](connecting-to-googleanalytics.md)
+ [Connexion à Google BigQuery en AWS Glue Studio](connecting-to-data-bigquery.md)
+ [Connexion à Google Search Console](connecting-to-data-google-search-console.md)
+ [Connexion à Google Sheets](connecting-to-googlesheets.md)
+ [Connexion à HubSpot](connecting-to-data-hubspot.md)
+ [Connexion à Instagram Ads](connecting-to-data-instagram-ads.md)
+ [Connexion à Intercom dans AWS Glue Studio](connecting-to-data-intercom.md)
+ [Connexion à Jira Cloud](connecting-to-data-jira-cloud.md)
+ [Connexion à Kustomer](connecting-to-data-kustomer.md)
+ [Connexion à LinkedIn](connecting-to-linkedin.md)
+ [Connexion à Mailchimp.](connecting-to-mailchimp.md)
+ [Connexion à Microsoft Dynamics 365 CRM](connecting-to-microsoft-dynamics-365.md)
+ [Connexion à Microsoft Teams](connecting-to-microsoft-teams.md)
+ [Connexion à Mixpanel](connecting-to-mixpanel.md)
+ [Connexion à Monday](connecting-to-monday.md)
+ [Connexion à MongoDB dans AWS Glue Studio](connecting-to-data-mongodb.md)
+ [Connexion à Oracle NetSuite](connecting-to-data-oracle-netsuite.md)
+ [Connexion au OpenSearch service dans AWS Glue Studio](connecting-to-data-opensearch.md)
+ [Connexion à Okta](connecting-to-okta.md)
+ [Connexion à PayPal](connecting-to-data-paypal.md)
+ [Connexion à Pendo](connecting-to-pendo.md)
+ [Connexion à Pipedrive](connecting-to-pipedrive.md)
+ [Connexion à Productboard](connecting-to-productboard.md)
+ [Connexion à QuickBooks](connecting-to-data-quickbooks.md)
+ [Connexion à une API REST](connecting-to-data-rest-api.md)
+ [Connexion à Salesforce](connecting-to-data-salesforce.md)
+ [Connexion à Salesforce Marketing Cloud](connecting-to-data-salesforce-marketing-cloud.md)
+ [Connexion à Salesforce Commerce Cloud](connecting-to-salesforce-commerce-cloud.md)
+ [Connexion à Salesforce Marketing Cloud Account Engagement](connecting-to-data-salesforce-marketing-cloud-account-engagement.md)
+ [Connexion à SAP HANA dans AWS Glue Studio](connecting-to-data-saphana.md)
+ [Connexion à SAP OData](connecting-to-data-sap-odata.md)
+ [Connexion à SendGrid](connecting-to-data-sendgrid.md)
+ [Connexion à ServiceNow](connecting-to-data-servicenow.md)
+ [Connexion à Slack dans AWS Glue Studio](connecting-to-data-slack.md)
+ [Connexion à Smartsheet](connecting-to-smartsheet.md)
+ [Connexion à Snapchat Ads dans AWS Glue Studio](connecting-to-data-snapchat-ads.md)
+ [Connexion à Snowflake dans AWS Glue Studio](connecting-to-data-snowflake.md)
+ [Connexion à Stripe dans AWS Glue Studio](connecting-to-data-stripe.md)
+ [Connexion à Teradata Vantage dans AWS Glue Studio](connecting-to-data-teradata.md)
+ [Connexion à Twilio](connecting-to-data-twilio.md)
+ [Connexion à Vertica dans AWS Glue Studio](connecting-to-data-vertica.md)
+ [Connexion à WooCommerce](connecting-to-data-woocommerce.md)
+ [Connexion à Zendesk](connecting-to-data-zendesk.md)
+ [Connexion à Zoho CRM](connecting-to-data-zoho-crm.md)
+ [Connexion à Zoom Meetings](connecting-to-data-zoom-meetings.md)
+ [Ajout d'une connexion JDBC à l'aide de vos propres pilotes JDBC](console-connections-jdbc-drivers.md)

# Connexion à Adobe Analytics
<a name="connecting-to-adobe-analytics"></a>

Adobe Analytics est une plateforme d’analyse de données robuste qui collecte des données à partir d’expériences numériques multicanales prenant en charge le parcours client et qui fournit des outils pour analyser les données. Il s’agit d’une plateforme couramment utilisée par les spécialistes du marketing et les analystes commerciaux à des fins d’analytique métier. Si vous êtes un utilisateur d'Adobe Analytics, vous pouvez vous connecter AWS Glue à votre compte Adobe Analytics. Vous pouvez ensuite utiliser Adobe Analytics comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Adobe Analytics et AWS des services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Adobe Analytics](adobe-analytics-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](adobeanalytics-configuring-iam-permissions.md)
+ [Configuration d’Adobe Analytics](adobeanalytics-configuring.md)
+ [Configuration des connexions Adobe Analytics](adobeanalytics-configuring-connections.md)
+ [Lecture à partir d’entités Adobe Analytics](adobeanalytics-reading-from-entities.md)
+ [Options de connexion Adobe Analytics](adobeanalytics-connection-options.md)
+ [Création d’un compte Adobe Analytics](adobeanalytics-create-account.md)
+ [Limitations](adobeanalytics-connector-limitations.md)

# AWS Glue support pour Adobe Analytics
<a name="adobe-analytics-support"></a>

AWS Glue prend en charge Adobe Analytics comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données d'Adobe Analytics.

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

**Versions d’API Adobe Analytics prises en charge**  
 v2.0 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="adobeanalytics-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration d’Adobe Analytics
<a name="adobeanalytics-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Adobe Analytics, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="adobeanalytics-configuring-min-requirements"></a>
+ Vous disposez d’un compte Adobe Analytics avec adresse e-mail et mot de passe. Pour plus d’informations sur la création d’un compte, consultez [Creating a Adobe Analytics account](adobeanalytics-create-account.md). 
+  Votre compte Adobe Analytics est activé pour accéder à l’API. L’accès à l’API est activé par défaut pour les éditions Select, Prime et Ultimate. 

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Adobe Analytics. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Adobe Analytics.

# Configuration des connexions Adobe Analytics
<a name="adobeanalytics-configuring-connections"></a>

 Adobe Analytics prend en charge le type d’autorisation `AUTHORIZATION_CODE` pour `OAuth2`.

Ce type d’autorisation est considéré comme `OAuth` tridimensionnel, car il repose sur la redirection des utilisateurs vers le serveur d’autorisation tiers pour authentifier l’utilisateur. Les utilisateurs peuvent choisir de créer leur propre application connectée dans Adobe Analytics et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Adobe Analytics pour se connecter et autoriser AWS Glue à accéder à leurs ressources. 

Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

 [Pour consulter la documentation publique d'Adobe Analytics sur la création d'une application connectée pour le OAuth flux AUTHORIZATION\$1CODE, consultez Adobe Analytics. APIs](https://adobedocs.github.io/analytics-2.0-apis/) 

Pour configurer une connexion Adobe Analytics :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 

   Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Adobe Analytics.

   1. Indiquez l’`x_api_key, instanceUrl` d’Adobe Analytics à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Adobe Analytics
<a name="adobeanalytics-reading-from-entities"></a>

 **Conditions préalables** 

Un objet Adobe Analytics à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Annotation | Oui | Oui | Oui | Oui | Non | 
| Calculated Metrics | Oui | Oui | Oui | Oui | Non | 
| Calculated Metrics Function | Oui | Non | Non | Oui | Non | 
| Component Metadata Shares | Oui | Oui | Non | Oui | Non | 
| Date Ranges | Oui | Oui | Non | Oui | Non | 
| Dimensions | Oui | Non | Non | Oui | Non | 
| Métriques | Oui | Non | Non | Oui | Non | 
| Projets | Oui | Non | Non | Oui | Non | 
| Reports Top Item | Oui | Oui | Non | Oui | Non | 
| Segments | Oui | Oui | Oui | Oui | Non | 
| Usage Logs | Oui | Oui | Non | Oui | Non | 

 **Exemple** 

```
adobeAnalytics_read = glueContext.create_dynamic_frame.from_options( 
     connection_type="adobeanalytics", 
     connection_options={ 
        "connectionName": "connectionName", 
        "ENTITY_NAME": "annotation/ex*****", 
        "API_VERSION": "v2.0" 
 })
```

 **Détails des entités et des champs Adobe Analytics** 
+ [Annotations](https://adobedocs.github.io/analytics-2.0-apis/#/Annotations)
+ [Calculated Metrics](https://adobedocs.github.io/analytics-2.0-apis/#/Calculated%20Metrics)
+ [Component Meta Data](https://adobedocs.github.io/analytics-2.0-apis/#/Component%20Meta%20Data)
+ [Date Ranges](https://adobedocs.github.io/analytics-2.0-apis/#/Date%20Ranges)
+ [Dimensions](https://adobedocs.github.io/analytics-2.0-apis/#/Dimensions)
+ [Métriques](https://adobedocs.github.io/analytics-2.0-apis/#/Metrics)
+ [Projects](https://adobedocs.github.io/analytics-2.0-apis/#/Projects)
+ [Rapports](https://adobedocs.github.io/analytics-2.0-apis/#/Reports)
+ [Segments](https://adobedocs.github.io/analytics-2.0-apis/#/Segments)
+ [Utilisateurs](https://adobedocs.github.io/analytics-2.0-apis/#/Users)
+ [Usage Logs](https://adobedocs.github.io/analytics-2.0-apis/#/Usage%20Logs)

# Options de connexion Adobe Analytics
<a name="adobeanalytics-connection-options"></a>

Les options de connexion pour Adobe Analytics sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Adobe Analytics. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Adobe Analytics que vous souhaitez utiliser. Par exemple : v2.0. 
+  `X_API_KEY`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Il est nécessaire d’authentifier le développeur ou l’application qui envoie des demandes à l’API. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 

# Création d’un compte Adobe Analytics
<a name="adobeanalytics-create-account"></a>

1. Inscrivez-vous au programme de partenaire d’échange en accédant au [programme Adobe Partner](https://partners.adobe.com/exchangeprogram/creativecloud.html). 

1. Choisissez **Rejoindre le programme d’échange**. 

1. Inscrivez-vous ou créez un compte en utilisant votre adresse e-mail professionnelle. 

1. Dans la boîte à suggestions, sélectionnez l’entreprise appropriée qui possède un abonnement à un produit Adobe Analytics. 

1. Assurez-vous que le compte est enregistré auprès d’une organisation valide (dans la liste disponible) disposant d’un abonnement Adobe Analytics actif. 

1. Après l’approbation de l’administration de l’entreprise, activez votre compte en cliquant sur le lien contenu dans l’e-mail d’approbation. 

**Vérifiez si le compte que vous avez créé a accès au service Adobe Analytics.**

1. Connectez-vous à [Adobe Admin Console](https://adminconsole.adobe.com/).

1. Vérifiez le nom de l’organisation dans le coin supérieur droit de la page pour vous assurer que vous vous êtes connecté à la bonne entreprise.

1. Sélectionnez **Produits** et vérifiez si Adobe Analytics est disponible.
**Note**  
Si aucune organisation n'est disponible, ou si le produit Adobe Analytics est grisé ou n'est pas disponible, il est probable que votre compte n'est pas associé à une organisation n' and/or ayant aucun abonnement Adobe Analytics actif. Contactez votre administrateur système pour demander l’accès à ce service pour votre compte.

**Création d’un projet et d’informations d’identification `OAuth2.0`**

1. Connectez-vous au compte Adobe Analytics sur lequel vous souhaitez créer [l'application OAuth 2.0](https://developer.adobe.com/developer-console/docs/guides/services/services-add-api-oauth/).

1. Sélectionnez **Projet**, puis **Créer un projet**. 

1. Pour ajouter un projet, sélectionnez **Ajouter au projet**, puis **API**.

1. Sélectionnez l’**API Adobe Analytics**.

1. Sélectionnez **OAUTH** comme authentification utilisateur.

1. Sélectionnez **Web** en tant que `OAUTH` et indiquez l’URI de redirection. 

   Pour l’URI de redirection et son modèle, consultez ce qui suit :
   + URI de redirection par défaut `OAuth 2.0` : l’URI de redirection par défaut est l’URL de la page à laquelle Adobe accèdera pendant le processus d’authentification. Par exemple, `https://ap-southeast-2.console.aws.amazon.com/appflow/oauth` 
   + OAuth Modèle d'URI de redirection 2.0 — Un modèle d'URI de redirection est un chemin d'URI (ou une liste de chemins séparés par des virgules) vers lequel Adobe peut être redirigé (si demandé) une fois le flux de connexion terminé. Par exemple, `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Ajoutez les portées suivantes : 
   + `openid`
   + `read_organizations`
   + `additional_info.projectedProductContext`
   + `additional_info.job_function`

1. Choisissez **Enregistrer les informations d’identification**.

1. Une fois l’application créée, copiez les valeurs `Client ID` et `Client Secret` dans un fichier texte.

# Limitations
<a name="adobeanalytics-connector-limitations"></a>

Les restrictions du connecteur Adobe Analytics sont les suivantes :
+ Adobe Analytics ne prend pas en charge le partitionnement basé sur les champs et basé sur les enregistrements. Le partitionnement basé sur les champs n’est pas pris en charge, car vous ne pouvez pas interroger les champs que vous partitionnez. Le partitionnement basé sur les enregistrements ne peut pas être pris en charge, car il n’existe aucune disposition permettant d’obtenir un « décalage » pour la pagination.
+ Dans l’entité `Report Top Item`, les paramètres de requête `startDate` et `endDate` ne fonctionnent pas comme prévu. La réponse n’est pas filtrée en fonction de ces paramètres, ce qui entraîne des problèmes avec le filtre et le flux incrémentiel pour cette entité. 
+ Pour les entités `Annotation`, `Calculated Metrics`, `Calculated Metrics Function`, `Date Ranges`, `Dimension`, `Metric`, `Project`, `Report Top Items` et `Segment`, le paramètre de requête `locale` indique la langue à utiliser pour les sections localisées des réponses et ne filtre pas les enregistrements. Par exemple, `locale="ja_JP"` affichera les données en japonais. 
+ Entité `Report Top Item` : le filtre est activé et les champs `dateRange` et `lookupNoneValues` ne fonctionnent pas actuellement. 
+ Entité `Segment` : avec une valeur de filtre `includeType=“templates”`, les filtres sur les autres champs ne fonctionnent pas. 
+ Entité `Date Range` : le filtre sur le champ `curatedRsid` ne fonctionne pas. 
+ Entité `Metric entity` : le filtre sur un champ segmentable avec une valeur « false » donne un résultat à la fois pour une valeur true et une valeur false.

# Connexion à Adobe Marketo Engage
<a name="connecting-to-data-adobe-marketo-engage"></a>

Adobe Marketo Engage est une plateforme d’automatisation du marketing qui permet aux spécialistes du marketing de gérer des programmes et des campagnes multicanaux personnalisés destinés aux prospects et aux clients.

**Topics**
+ [AWS Glue support pour Adobe Marketo Engage](adobe-marketo-engage-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](adobe-marketo-engage-configuring-iam-permissions.md)
+ [Configuration d’Adobe Marketo Engage](adobe-marketo-engage-configuring.md)
+ [Configuration des connexions Adobe Marketo Engage](adobe-marketo-engage-configuring-connections.md)
+ [Lecture à partir d’entités Adobe Marketo Engage](adobe-marketo-engage-reading-from-entities.md)
+ [Écriture aux entités Adobe Marketo Engage](adobe-marketo-engage-writing-to-entities.md)
+ [Options de connexion Adobe Marketo Engage](adobe-marketo-engage-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Adobe Marketo Engage](adobe-marketo-engage-connector-limitations.md)

# AWS Glue support pour Adobe Marketo Engage
<a name="adobe-marketo-engage-support"></a>

AWS Glue prend en charge Adobe Marketo Engage comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données d'Adobe Marketo Engage.

**Prise en charge en tant que cible ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour écrire des données dans Adobe Marketo.

**Versions de l’API Adobe Marketo Engage prises en charge**  
Les versions de l’API Adobe Marketo Engage suivantes sont prises en charge :
+ v1

Pour connaître la prise en charge des entités par version, consultez la section Entités prises en charge pour Source.

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="adobe-marketo-engage-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration d’Adobe Marketo Engage
<a name="adobe-marketo-engage-configuring"></a>

Avant de pouvoir AWS Glue transférer des données d'Adobe Marketo Engage, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="adobe-marketo-engage-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous possédez un compte Adobe Marketo Engage avec des informations d’identification client.
+ Votre compte Adobe Marketo Engage dispose d’un accès à l’API avec une licence valide.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Adobe Marketo Engage. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Adobe Marketo Engage.

## Obtenir des informations d'identification OAuth 2.0
<a name="adobe-marketo-engage-configuring-creating-adobe-marketo-engage-oauth2-credentials"></a>

Pour obtenir des informations d’identification d’API afin de passer des appels authentifiés vers votre instance, consultez [Adobe Marketo Rest API](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api).

# Configuration des connexions Adobe Marketo Engage
<a name="adobe-marketo-engage-configuring-connections"></a>

Adobe Marketo Engage prend en charge le type de subvention CLIENT CREDENTIALS pour OAuth2.
+ Ce type de subvention est considéré comme bidimensionnel OAuth 2.0 car il est utilisé par les clients pour obtenir un jeton d'accès en dehors du contexte d'un utilisateur. AWS Glue est capable d'utiliser l'ID client et le secret du client pour authentifier l'Adobe Marketo Engage APIs fournis par les services personnalisés que vous définissez.
+ Chaque service personnalisé appartient à un utilisateur régi uniquement par l’API, qui dispose d’un ensemble de rôles et d’autorisations autorisant le service à effectuer des actions spécifiques. Un jeton d’accès est associé à un seul service personnalisé.
+ Ce type d’autorisation donne lieu à un jeton d’accès de courte durée qui peut être renouvelé en appelant un point de terminaison d’identité.
+ Pour consulter la documentation publique d'Adobe Marketo Engage OAuth 2.0 avec les informations d'identification du client, voir [Authentification](https://developers.adobe-marketo-engage.com/rest-api/authentication/) dans le guide du développeur d'Adobe Marketo Engage.

Pour configurer une connexion Adobe Marketo Engage :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **Type de connexion**, sélectionnez Adobe Marketo Engage.

   1. Indiquez l’`INSTANCE_URL` de l’instance Adobe Marketo Engage à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Adobe Marketo Engage
<a name="adobe-marketo-engage-reading-from-entities"></a>

**Prérequis**

Un objet Adobe Marketo Engage à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme leads, activities ou customobjects. Les tableaux suivants présentent les entités prises en charge.

**Entités prises en charge pour source (synchrone)** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| leads | Oui | Oui | Non | Oui | Non | 
| activités | Oui | Oui | Non | Oui | Non | 
| customobjects | Oui | Oui | Non | Oui | Non | 

**Entités prises en charge pour source (asynchrone)** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| leads | Oui | Non | Non | Oui | Oui | 
| activités | Oui | Non | Non | Oui | Non | 
| customobjects | Oui | Non | Non | Oui | Oui | 

**Exemple :**

```
adobe-marketo-engage_read = glueContext.create_dynamic_frame.from_options(
    connection_type="adobe-marketo-engage",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v2",
        "INSTANCE_URL": "https://539-t**-6**.mktorest.com"
    }
```

**Détails des entités et des champs Adobe Marketo Engage** :

**Entités avec métadonnées statiques** : 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/adobe-marketo-engage-reading-from-entities.html)

**Entités avec métadonnées dynamiques** :

Pour les entités suivantes, Adobe Marketo Engage fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique, afin que la prise en charge des opérateurs soit capturée au niveau du type de données pour chaque entité.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/adobe-marketo-engage-reading-from-entities.html)

## Requêtes de partitionnement
<a name="adobe-marketo-engage-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Le tableau suivant décrit les détails de prise en charge dans les champs de partitionnement d’entités :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/adobe-marketo-engage-reading-from-entities.html)

Exemple :

```
adobe-marketo-engage_read = glueContext.create_dynamic_frame.from_options(
    connection_type="adobe-marketo-engage",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2024-07-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-07-02T00:00:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Écriture aux entités Adobe Marketo Engage
<a name="adobe-marketo-engage-writing-to-entities"></a>

**Conditions préalables**
+ Un objet Adobe Marketo auquel vous souhaitez écrire. Vous aurez besoin du nom de l’objet, comme `leads` ou `customobjects`.
+ Le connecteur Adobe Marketo prend en charge trois opérations d’écriture :
  + INSERT
  + UPSERT
  + UPDATE
+ Pour les opérations d’écriture `UPSERT` et `UPDATE`, vous devez proposer l’option `ID_FIELD_NAMES` afin de spécifier le champ d’ID pour les enregistrements. Lorsque vous travaillez avec l’entité `leads`, utilisez `email` en tant que `ID_FIELD_NAMES` pour les opérations `UPSERT` et `id` pour les opérations `UPDATE`. Pour l’entité `customobjects`, utilisez `marketoGUID` en tant que `ID_FIELD_NAMES` pour les opérations `UPDATE` et `UPSERT`.

**Entités prises en charge pour destination (synchrone)**


| Nom de l'entité | Sera pris en charge en tant que connecteur de destination | Peut être inséré | Peut être mis à jour | Peut faire l’objet d’un upsert | 
| --- | --- | --- | --- | --- | 
| leads | Oui | Oui (groupé) | Oui (groupé) | Oui (groupé) | 
| customobjects | Oui | Oui (groupé) | Oui (groupé) | Oui (groupé) | 

**Exemple :**

**Opération INSERT :**

```
marketo_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="marketo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v1",
        "WRITE_OPERATION": "INSERT"
    }
```

**Opération UPDATE :**

```
marketo_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="marketo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "leads",
        "API_VERSION": "v1",
        "WRITE_OPERATION": "UPDATE",
        "ID_FIELD_NAMES": "id"
    }
```

**Note**  
Pour les entités `leads` et `customobjects`, Adobe Marketo fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique afin que les champs inscriptibles soient identifiés à partir de la réponse de l’API Marketo.

# Options de connexion Adobe Marketo Engage
<a name="adobe-marketo-engage-connection-options"></a>

Les options de connexion pour Adobe Marketo Engage sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Adobe Marketo Engage.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest d’Adobe Marketo Engage que vous souhaitez utiliser. Par exemple : v1.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `TRANSFER_MODE`(Chaîne) - Par défaut : SYNC. Utilisé pour la lecture asynchrone.
+ `WRITE_OPERATION`(Chaîne) - Par défaut : INSERT. Utilisé pour l’écriture La valeur doit être INSERT, UPDATE, UPSERT.
+ `ID_FIELD_NAMES`(Chaîne) - Valeur par défaut : null. Nécessaire pour UPDATE et UPSERT.

# Restrictions et remarques relatives au connecteur Adobe Marketo Engage
<a name="adobe-marketo-engage-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Adobe Marketo Engage :
+ « SinceDateTime » et « activityTypeId » sont des paramètres de filtre obligatoires pour l'entité Sync Activities.
+ Les abonnements se voient allouer 50 000 appels d’API par jour (réinitialisés tous les jours à minuit CST). Une capacité quotidienne supplémentaire peut être achetée dans le cadre d’un abonnement Adobe Marketo Engage. Pour référence, consultez [Adobe Marketo Rest API](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api).
+ La durée maximale pour le filtre de plage de dates (`createdAt` ou `updatedAt`) est de 31 jours. Pour référence, consultez [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ Les abonnements se voient attribuer un maximum de 10 tâches d’extraction en bloc dans la file d’attente à un moment précis. Pour référence, consultez [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ Par défaut, les tâches d’extraction sont limitées à 500 Mo par jour (réinitialisation quotidienne à minuit CST). Une capacité quotidienne supplémentaire peut être achetée dans le cadre d’un abonnement Adobe Marketo Engage. Pour référence, consultez [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ Le nombre maximum de tâches d’exportation simultanées est de deux. Pour référence, consultez [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ Le nombre maximum de tâches d’exportation en attente (y compris les tâches actuellement en cours d’exportation) est de dix. Pour référence, consultez [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ La taille de fichier maximale autorisée est de 1 Go pour l’extraction à partir d’une tâche groupée.
+ Une fois qu’une tâche asynchrone est créée, la période de conservation des fichiers sera de sept jours avant l’expiration. Pour référence, consultez [Bulk Extract - Marketo Developers](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-extract).
+ `createdAt` ou `updatedAt` sont des paramètres de filtre obligatoires pour l’entité Async Leads.
+ Pour l’entité Async Activities, `createdAt` est un paramètre de filtre obligatoire.
+ Pour l’entité Async Custom Object, `updatedAt` est un paramètre de filtre obligatoire.
+ Lorsqu'ils utilisent des connecteurs AWS Glue SaaS, les utilisateurs ne peuvent pas identifier les enregistrements spécifiques qui ont échoué lors d'une opération d'écriture sur les plateformes SaaS de destination en cas de défaillance partielle.
+ Lorsque vous utilisez les opérations d’écriture Sync, tous les champs contenant des valeurs nulles dans le fichier d’entrée seront automatiquement supprimés et ne seront pas envoyés à la plateforme SaaS.
+ Vous pouvez créer ou mettre à jour jusqu’à 300 enregistrements par lot pour l’écriture Sync.

Pour plus d’informations, consultez [Adobe Marketo Engage Integration Best Practices](https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/marketo-integration-best-practices) et [Bulk Extract](https://https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/bulk-extract/bulk-activity-extract).

# Connexion à Amazon Redshift dans AWS Glue Studio
<a name="connecting-to-data-redshift"></a>

**Note**  
 Vous pouvez utiliser Spark AWS Glue pour lire et écrire dans des tables de Amazon Redshift bases de données extérieures àAWS Glue Studio. Pour configurer Amazon Redshift des AWS Glue tâches par programmation, voir[Connexions Redshift](aws-glue-programming-etl-connect-redshift-home.md). 

 AWS Gluefournit un support intégré pour Amazon Redshift. AWS Glue Studiofournit une interface visuelle permettant de se connecter Amazon Redshift, de créer des tâches d'intégration de données et de les exécuter sur un environnement d'exécution Spark AWS Glue Studio sans serveur. 

**Topics**
+ [Création d'une Amazon Redshift connexion](creating-redshift-connection.md)
+ [Création d'un nœud Amazon Redshift source](creating-redshift-source-node.md)
+ [Création d'un nœud Amazon Redshift cible](creating-redshift-target-node.md)
+ [Options avancées](creating-redshift-connection-advanced-options.md)

# Création d'une Amazon Redshift connexion
<a name="creating-redshift-connection"></a>

## Autorisations nécessaires
<a name="creating-redshift-connection-permissions"></a>

 Des autorisations supplémentaires sont nécessaires pour utiliser les Amazon Redshift clusters et les environnements Amazon Redshift sans serveur. Pour plus d'informations sur la façon d'ajouter des autorisations aux tâches ETL, consultez [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 
+  décalage vers le rouge : DescribeClusters 
+  redshift-serverless : ListWorkgroups 
+  redshift-serverless : ListNamespaces 

## Présentation de
<a name="w2aac25c27c13c11b5"></a>

 Lorsque vous ajoutez une Amazon Redshift connexion, vous pouvez choisir une Amazon Redshift connexion existante ou en créer une nouvelle lorsque vous ajoutez une **source de données - nœud Redshift**. AWS Glue Studio 

 AWS Glueprend en charge à la fois les Amazon Redshift clusters et les environnements Amazon Redshift sans serveur. Lorsque vous créez une connexion, les environnements Amazon Redshift sans serveur affichent l'étiquette **sans serveur** à côté de l'option de connexion. 

 Pour plus d'informations sur la création d'une Amazon Redshift connexion, consultez la section [Déplacement de données vers et depuis Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using). 

# Création d'un nœud Amazon Redshift source
<a name="creating-redshift-source-node"></a>

## Autorisations nécessaires
<a name="creating-redshift-source-node-permissions"></a>

 AWS Glue Studio les tâches utilisant Amazon Redshift des sources de données nécessitent des autorisations supplémentaires. Pour plus d'informations sur la façon d'ajouter des autorisations aux tâches ETL, consultez [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 Les autorisations suivantes sont nécessaires pour utiliser une Amazon Redshift connexion. 
+  données redshift : ListSchemas 
+  données redshift : ListTables 
+  données redshift : DescribeTable 
+  données redshift : ExecuteStatement 
+  données redshift : DescribeStatement 
+  données redshift : GetStatementResult 

## Ajouter une source Amazon Redshift de données
<a name="creating-redshift-source-node-add"></a>

**Pour ajouter un nœud **Source de données – Amazon Redshift** :**

1.  Choisissez le type Amazon Redshift d'accès : 
   +  Connexion directe aux données (recommandée) : choisissez cette option si vous souhaitez accéder directement à vos données Amazon Redshift . Il s'agit de l'option recommandée, mais également de l'option par défaut. 
   +  Data Catalog tables : choisissez cette option si vous souhaitez utiliser des tables du catalogue de données. 

1.  Si vous choisissez Connexion directe aux données, choisissez la connexion pour votre source de Amazon Redshift données. Cela suppose que la connexion existe déjà et que vous pouvez la sélectionner parmi les connexions existantes. Si vous devez créer une connexion, choisissez **Créer une connexion Redshift**. Pour en savoir plus, consultez [ Overview of using connectors and connections ](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. Les informations relatives à la connexion sont visibles, notamment l'URL, les groupes de sécurité, le sous-réseau, la zone de disponibilité, la description et les horodatages de création (UTC) et de dernière mise à jour (UTC). 

1.  Choisissez une option Amazon Redshift de source : 
   +  **Choisissez une seule table** : il s'agit de la table qui contient les données auxquelles vous souhaitez accéder à partir d'une seule Amazon Redshift table. 
   +  **Saisir une requête personnalisée** : vous permet d'accéder à un jeu de données à partir de plusieurs tables Amazon Redshift en fonction de votre requête personnalisée. 

1.  Si vous avez choisi une seule table, choisissez le Amazon Redshift schéma. La liste des schémas disponibles parmi lesquels choisir est déterminée par la table sélectionnée. 

    Vous pouvez également choisir **Saisir une requête personnalisée**. Choisissez cette option pour accéder à un jeu de données personnalisé à partir de plusieurs tables Amazon Redshift . Lorsque vous choisissez cette option, entrez la Amazon Redshift requête. 

    Lorsque vous vous connectez à un environnement Amazon Redshift sans serveur, ajoutez l'autorisation suivante à la requête personnalisée : 

   ```
               GRANT SELECT ON ALL TABLES IN <schema> TO PUBLIC
   ```

    Vous pouvez choisir **Déduire un schéma** pour lire le schéma en fonction de la requête que vous avez saisie. Vous pouvez également choisir l'**éditeur de requêtes Open Redshift pour saisir une Amazon Redshift requête**. Pour plus d'informations, consultez [Interrogation d'une base de données à l'aide de l'éditeur de requête](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor.html). 

1.  Dans **Performances et sécurité**, choisissez le répertoire intermédiaire Amazon S3 et le rôle IAM. 
   +  **Répertoire intermédiaire Amazon S3** : choisissez l'emplacement Amazon S3 pour les données intermédiaires temporaires. 
   +  **Rôle IAM** : choisissez le rôle IAM qui peut écrire sur l'emplacement Amazon S3 que vous avez sélectionné. 

1.  Dans **Paramètres Redshift personnalisés – facultatif**, saisissez le paramètre et la valeur. 

# Création d'un nœud Amazon Redshift cible
<a name="creating-redshift-target-node"></a>

## Autorisations nécessaires
<a name="creating-redshift-target-node-permissions"></a>

 AWS Glue Studio les tâches utilisant une cible de Amazon Redshift données nécessitent des autorisations supplémentaires. Pour plus d'informations sur la façon d'ajouter des autorisations aux tâches ETL, consultez [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 Les autorisations suivantes sont nécessaires pour utiliser une Amazon Redshift connexion. 
+  données redshift : ListSchemas 
+  données redshift : ListTables 

## Ajouter un nœud Amazon Redshift cible
<a name="w2aac25c27c13c15b5"></a>

**Pour créer un nœud Amazon Redshift cible :**

1.  Choisissez une Amazon Redshift table existante comme cible ou entrez un nouveau nom de table. 

1.  Lorsque vous utilisez le nœud cible **Cible de données – Redshift**, vous pouvez choisir l'une des options suivantes : 
   +  **APPREND** : si une table existe déjà, insérez toutes les nouvelles données dans la table sous forme d'insertion. Si la table n'existe pas, créez-la, puis insérez toutes les nouvelles données. 

      Cochez également la case si vous souhaitez mettre à jour (UPSERT) les enregistrements existants dans la table cible. La table doit d'abord exister, sinon l'opération échouera. 
   +  **MERGE** : AWS Glue met à jour ou ajoute des données à votre table cible en fonction des conditions que vous spécifiez. 
**Note**  
 Pour utiliser l'action de fusion dansAWS Glue, vous devez activer la fonctionnalité de Amazon Redshift fusion. Pour savoir comment activer la fusion pour votre Amazon Redshift instance, consultez [MERGE (aperçu)](https://docs.aws.amazon.com/redshift/latest/dg/r_MERGE.html). 

      Choisissez parmi les options : 
     + **Choisir des clés et des actions simples** : choisissez les colonnes à utiliser comme clés de correspondance entre les données source et votre jeu de données cible. 

       Spécifiez les options suivantes lorsqu'elles correspondent :
       + Mettez à jour l'enregistrement dans votre jeu de données cible avec les données de la source.
       + Supprimez l'enregistrement dans votre jeu de données cible.

       Spécifiez les options suivantes lorsqu'elles ne correspondent pas :
       + Insérez les données source en tant que nouvelle ligne dans votre jeu de données cible.
       + Ne rien faire.
     + **Saisir une instruction MERGE personnalisée** : vous pouvez ensuite choisir **Valider l'instruction de fusion** pour vérifier si l'instruction est valide ou non.
   +  **TRUNCATE** : si une table existe déjà, tronquez les données de la table en effaçant d'abord le contenu de la table cible. Si la troncature est réussie, insérez toutes les données. Si la table n'existe pas, créez-la, puis insérez toutes les nouvelles données. Si la troncature échoue, l'opération échouera. 
   +  **DROP** : si une table existe déjà, supprimez les métadonnées et les données de la table. Si la suppression est réussie, insérez toutes les données. Si la table n'existe pas, créez-la, puis insérez toutes les nouvelles données. Si la suppression échoue, l'opération échouera. 
   +  **CREATE** : créez une table avec le nom par défaut. Si le nom de la table existe déjà, créez-en une avec le suffixe `job_datetime` au nom pour garantir son unicité. Toutes les données seront alors insérées dans la nouvelle table. Si la table existe, le suffixe sera ajouté au nom final de la table. Si elle n'existe pas, une table sera créée. Dans les deux cas, une nouvelle table sera créée. 

# Options avancées
<a name="creating-redshift-connection-advanced-options"></a>

 Consultez la section [Utilisation du connecteur Amazon Redshift Spark sur AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using). 

# Connexion à Asana
<a name="connecting-to-asana"></a>

Asana est une solution de collaboration d’équipe cloud qui aide les équipes à organiser, à planifier et à exécuter des tâches et des projets. Si vous utilisez Asana, votre compte contient des données sur vos espaces de travail, vos projets, vos tâches, vos équipes, etc. Vous pouvez transférer des données d’Asana vers certains services AWS ou d’autres applications compatibles.

**Topics**
+ [AWS Glue support pour Asana](asana-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](asana-configuring-iam-permissions.md)
+ [Configuration d’Asana](asana-configuring.md)
+ [Configuration de connexions Asana](asana-configuring-connections.md)
+ [Lecture à partir d’entités Asana](asana-reading-from-entities.md)
+ [Options de connexion Asana](asana-connection-options.md)
+ [Création d’un compte Asana](asana-create-account.md)
+ [Limitations](asana-connector-limitations.md)

# AWS Glue support pour Asana
<a name="asana-support"></a>

AWS Glue prend en charge Asana comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données d'Asana.

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

**Versions d’API Asana prises en charge**  
 1.0 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="asana-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration d’Asana
<a name="asana-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Asana, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="asana-configuring-min-requirements"></a>
+ Vous disposez d’un compte Asana avec adresse e-mail et mot de passe. Pour plus d’informations sur la création d’un compte, consultez [Creating a Asana account](asana-create-account.md). 
+ Vous devez avoir créé AWS un compte avec l'accès au service à AWS Glue. 
+ Assurez-vous d’avoir créé l’une des ressources suivantes dans votre compte Asana : 
  + Une application pour développeurs qui prend en charge l’authentification `OAuth 2.0`. Pour plus d'instructions, consultez la documentation destinée [OAuth](https://developers.asana.com/docs/oauth)aux développeurs d'Asana. Sinon, consultez [Création d’un compte Asana](asana-create-account.md). 
  + Un jeton d’accès personnel. Pour plus d’informations, consultez le jeton d’accès personnel [https://developers.asana.com/docs/personal-access-token](https://developers.asana.com/docs/personal-access-token) dans la documentation destinée aux développeurs Asana. 

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Adobe Analytics. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Adobe Analytics.

# Configuration de connexions Asana
<a name="asana-configuring-connections"></a>

Asana prend en charge le type d’autorisation `AUTHORIZATION_CODE` pour `OAuth2`. 

Ce type d’autorisation est considéré comme `OAuth` tridimensionnel, car il repose sur la redirection des utilisateurs vers le serveur d’autorisation tiers pour authentifier l’utilisateur. Les utilisateurs peuvent choisir de créer leur propre application connectée sur Asana et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Asana pour se connecter et autoriser l'accès AWS Glue à leurs ressources. 

Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

Pour consulter la documentation publique d'Asana sur la création d'une application connectée pour `AUTHORIZATION_CODE OAuth` Flow, consultez [Asana APIs](https://developers.asana.com/docs/oauth). 

Pour configurer une connexion Asana :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 
   + Pour l’application connectée gérée par le client : 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 pour la connexion dans AWS Glue.

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Asana.

   1. Indiquez l’environnement Asana.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Asana
<a name="asana-reading-from-entities"></a>

 **Conditions préalables** 

Un objet Asana à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge pour la source** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
|  Espace de travail  | Non | Oui | Non | Oui | Non | 
| Balise | Non | Oui | Non | Oui | Non | 
| Utilisateur | Non | Oui | Non | Oui | Non | 
|  Portfolio  | Non | Oui | Non | Oui | Non | 
| Team | Non | Oui | Non | Oui | Non | 
| Project | Oui | Oui | Non | Oui | Non | 
| Section | Non | Oui | Non | Oui | Non | 
| Sous-tâche  | Oui | Non | Non | Oui | Oui | 
| Objectif | Oui | Oui | Non | Oui | Non | 
|  AuditLogEvent  | Oui | Oui | Non | Oui | Non | 
|  Status Update  | Oui | Oui | Non | Oui | Non | 
|  Custom Field  | Non | Oui | Non | Oui | Non | 
|  Project Brief  | Oui | Non | Non | Oui | Oui | 

 **Exemple** 

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Asana",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "task/workspace:xxxx",
        "API_VERSION": "1.0",
        "PARTITION_FIELD": "created_at",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```

 **Détails des entités et des champs Asana** 
+ [Espace de travail](https://developers.asana.com/docs/workspaces)
+ [Balise](https://developers.asana.com/docs/tags)
+ [Utilisateur](https://developers.asana.com/docs/users)
+ [Portfolio](https://developers.asana.com/docs/portfolios)
+ [Team](https://developers.asana.com/docs/teams)
+ [Project](https://developers.asana.com/docs/get-all-projects-in-a-workspace)
+ [Rubrique](https://developers.asana.com/docs/get-sections-in-a-project)
+ [Tâche](https://developers.asana.com/docs/search-tasks-in-a-workspace) 
+ [Objectif](https://developers.asana.com/docs/get-goals)
+ [AuditLogEvent](https://developers.asana.com/docs/audit-log-api)
+ [Status Update](https://developers.asana.com/reference/status-updates)
+ [Custom Field](https://developers.asana.com/reference/custom-fields)
+ [Project Brief](https://developers.asana.com/reference/project-briefs)

 **Requêtes de partitionnement** 

Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+ `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

  Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `2024-06-07T13:30:00.134Z`. 
+ `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau suivant. 


| Nom de l'entité | Champ de partitionnement | Type de données | 
| --- | --- | --- | 
| Sous-tâche |  created\$1at  | DateTime | 
| Sous-tâche |  modified\$1at  | DateTime | 

 **Exemple** 

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Asana",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "task/workspace:xxxx",
        "API_VERSION": "1.0",
        "PARTITION_FIELD": "created_at",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```

# Options de connexion Asana
<a name="asana-connection-options"></a>

Les options de connexion pour Asana sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Asana. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Asana que vous souhaitez utiliser. Par exemple : 1.0. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Création d’un compte Asana
<a name="asana-create-account"></a>

1. Créez un [compte Asana](https://asana.com/create-account) et choisissez **S’inscrire**.

1. Une fois connecté, vous serez redirigé vers la page [Configuration du compte](https://app.asana.com/0/account_setup). Procédez comme suit :
   + Consultez le formulaire de configuration du compte.
   + Renseignez toutes les informations nécessaires pour créer votre compte Asana.
   + Vérifiez l’exactitude des informations.

1. Choisissez **Créer un compte** ou **Soumettre** (le texte exact du bouton peut varier) pour finaliser la configuration de votre compte.

**Création de l’application dans Asana pour `OAuth2.0`**

1. Connectez-vous à votre compte Asana à l’aide de vos [informations d’identification client Asana](https://app.asana.com/-/login). 

1. Choisissez l’icône de votre profil utilisateur dans le coin supérieur droit et sélectionnez **Mes paramètres** dans le menu déroulant.

1. Sélectionnez l’onglet **Applications**, puis **Gérer les applications de développeurs**.

1. Sélectionnez **Créer une application** et entrez les informations pertinentes. 

1. Sélectionnez **Créer des applications**.

1. Sur la page **Mes applications** : 

   1. Sélectionnez **OAuth**et dans la section **Informations d'identification de l'application**, notez votre identifiant client et votre secret client.

   1. Dans la URLs section **Redirection**, ajoutez les URL de redirection nécessaires.
**Note**  
Entrez l’URI de redirection en utilisant ce format : `https://{aws-region-code}.console.aws.amazon.com/gluestudio/oauth`. Par exemple, pour USA Est (Virginie du Nord), utilisez : `https://us-east-1.console.aws.amazon.com/gluestudio/oauth`

**Création de l’application dans Asana pour le jeton `PAT`**

1. Connectez-vous à votre compte Asana à l’aide de vos [informations d’identification client Asana](https://app.asana.com/-/login). 

1. Choisissez l’icône de votre profil utilisateur dans le coin supérieur droit et sélectionnez **Mes paramètres de profil** dans le menu déroulant.

1. Sélectionnez l’onglet **Applications**, puis **Comptes de service**.

1. Sélectionnez **Créer une application** et entrez les informations pertinentes. 

1. Choisissez **Ajouter un compte de service**.

1. La page suivante affiche votre jeton, copiez-le et stockez-le en toute sécurité. 
**Important**  
Ce jeton ne sera affiché qu’une seule fois. Assurez-vous de le copier et de le stocker en toute sécurité. 

# Limitations
<a name="asana-connector-limitations"></a>

Les restrictions du connecteur Asana sont les suivantes :
+ Les comptes de service dans Enterprise Domains ne peuvent accéder qu’aux points de terminaison de l’API du journal d’audit. L’authentification à l’aide du jeton d’accès personnel d’un compte de service est requise pour accéder à ces points de terminaison.
+ L’entité Goal n’est accessible que pour les comptes utilisateur dotés d’un forfait Premium ou supérieur.
+ `Audit Log Event Entity` : dans le connecteur, les champs `start_at` et `end_at` sont combinés en un seul champ « start\$1end\$1at » pour prendre en charge le filtrage et le transfert incrémentiel.
+ Le partitionnement ne peut pas être pris en charge pour le `Date` champ, même s'il prend en charge les opérateurs greater-than-or-equal -to et less-than-or-equal -to. Scénario : création d’une tâche avec `partitionField` en tant que `due_on` (datatype : date), `lowerBound` en tant que `2019-09-14`, `upperBound` en tant que `2019-09-16` et `numPartition` en tant que `2`. La partie filtre de l’URL du point de terminaison est créée comme suit :
  + partition1 : due\$1on.before=2019-09-14&due\$1on.after=2019-09-14
  + partition2 : due\$1on.before=2019-09-15&due\$1on.after=2019-09-15 Sortie :
  + Dans partition1, nous obtenons des données dont la date d’échéance (due\$1date) est le 14/09/2019 et le 15/09/2019.
  + Dans partition2, nous obtenons les mêmes données avec une date d’échéance le 15/09/2019 (qui se trouvaient dans partition1), ainsi que d’autres données, ce qui entraîne une duplication des données.
+ Le filtrage et le partitionnement ne peuvent pas être pris en charge sur le même champ, car une erreur de demande erronée est renvoyée du côté de SaaS.
+ L’entité Task nécessite un minimum d’un champ dans les critères de filtre. Asana présente une restriction : la pagination n’est pas identifiée si les enregistrements ne sont pas triés en fonction d’un champ temporel. Par conséquent, le champ Created\$1at est utilisé avec la pagination pour distinguer le prochain ensemble d’enregistrements. Le champ Created\$1at est marqué comme obligatoire dans le filtre, avec une valeur par défaut de 2000-01-01T00:00:00Z s’il n’est pas fourni. Pour plus d’informations sur la pagination, consultez [Tasks in a workspace](https://developers.asana.com/reference/searchtasksforworkspace).

# Connexion à Azure Cosmos DB dans AWS Glue Studio
<a name="connecting-to-data-azurecosmos"></a>

 AWS Glue fournit une prise en charge intégrée pour Azure Cosmos DB. AWS Glue Studio fournit une interface visuelle pour se connecter à Azure Cosmos DB pour NoSQL, créer des tâches d'intégration de données et les exécuter sur l'exécution Spark AWS Glue Studio sans serveur. 

**Topics**
+ [Création d'une connexion Azure Cosmos DB](creating-azurecosmos-connection.md)
+ [Création d'un nœud source Azure Cosmos DB](creating-azurecosmos-source-node.md)
+ [Création d'un nœud cible Azure Cosmos DB](creating-azurecosmos-target-node.md)
+ [Options avancées](#creating-azurecosmos-connection-advanced-options)

# Création d'une connexion Azure Cosmos DB
<a name="creating-azurecosmos-connection"></a>

**Prérequis :**
+ Dans Azure, vous devez identifier ou générer une clé de base de données Azure Cosmos à utiliser par AWS Glue,`cosmosKey`. Pour plus d'informations, consultez la section [Accès sécurisé aux données dans Azure Cosmos DB](https://learn.microsoft.com/en-us/azure/cosmos-db/secure-access-to-data?tabs=using-primary-key) dans la documentation Azure.

**Pour configurer une connexion à Azure Cosmos DB :**

1. Dans AWS Secrets Manager, créez un secret à l'aide de votre clé de base de données Azure Cosmos. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `spark.cosmos.accountKey` contenant la valeur. *cosmosKey*

1. Dans la AWS Glue console, créez une connexion en suivant les étapes décrites dans[Ajouter une AWS Glue connexion](console-connections.md). Après avoir créé la connexion, conservez le nom de la connexion pour une utilisation future dans AWS Glue. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez Azure Cosmos DB.
   + Lorsque vous sélectionnez un **AWS secret**, fournissez*secretName*.

# Création d'un nœud source Azure Cosmos DB
<a name="creating-azurecosmos-source-node"></a>

## Prérequis
<a name="creating-azurecosmos-source-node-prerequisites"></a>
+ Une connexion AWS Glue Azure Cosmos DB, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion Azure Cosmos DB](creating-azurecosmos-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Un conteneur Azure Cosmos DB pour NoSQL à partir duquel vous souhaitez lire. Vous aurez besoin des informations d'identification du conteneur.

  Un conteneur Azure Cosmos pour NoSQL est identifié par sa base de données et son conteneur. Vous devez fournir les noms de base de données et de conteneur lorsque vous vous connectez à l'API Azure Cosmos pour NoSQL. *cosmosDBName* *cosmosContainerName*

## Ajout d'une source de données Azure Cosmos DB
<a name="creating-azurecosmos-source-node-add"></a>

**Pour ajouter un nœud **Source de données – Azure Cosmos DB** :**

1.  Choisissez la connexion pour votre source de données Azure Cosmos DB. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion Azure Cosmos DB**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion Azure Cosmos DB](creating-azurecosmos-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Choisissez **le nom de la base de données Cosmos DB** : indiquez le nom de la base de données à partir de laquelle vous souhaitez lire*cosmosDBName*.

1. Choisissez **Azure Cosmos DB Container** : indiquez le nom du conteneur à partir duquel vous souhaitez lire*cosmosContainerName*.

1. Choisissez éventuellement la **Requête personnalisé Azure Cosmos DB** : fournissez une requête SQL SELECT pour récupérer des informations spécifiques à partir d'Azure Cosmos DB.

1.  Dans les **Propriétés Azure Cosmos personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible Azure Cosmos DB
<a name="creating-azurecosmos-target-node"></a>

## Prérequis
<a name="creating-azurecosmos-target-node-prerequisites"></a>
+ Une connexion AWS Glue Azure Cosmos DB, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion Azure Cosmos DB](creating-azurecosmos-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table Azure Cosmos DB dans laquelle vous souhaitez écrire. Vous aurez besoin des informations d'identification du conteneur. **Vous devez créer le conteneur avant d'appeler la méthode de connexion.**

  Un conteneur Azure Cosmos pour NoSQL est identifié par sa base de données et son conteneur. Vous devez fournir les noms de base de données et de conteneur lorsque vous vous connectez à l'API Azure Cosmos pour NoSQL. *cosmosDBName* *cosmosContainerName*

## Ajout d'une cible de données Azure Cosmos DB
<a name="creating-azurecosmos-target-node-add"></a>

**Pour ajouter un nœud **Cible de données – Azure Cosmos DB** :**

1.  Choisissez la connexion pour votre source de données Azure Cosmos DB. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion Azure Cosmos DB**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion Azure Cosmos DB](creating-azurecosmos-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Choisissez **le nom de la base de données Cosmos DB** : indiquez le nom de la base de données à partir de laquelle vous souhaitez lire*cosmosDBName*.

1. Choisissez **Azure Cosmos DB Container** : indiquez le nom du conteneur à partir duquel vous souhaitez lire*cosmosContainerName*.

1.  Dans les **Propriétés Azure Cosmos personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

## Options avancées
<a name="creating-azurecosmos-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d'un nœud Azure Cosmos DB. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Consultez [Connexions Azure Cosmos DB](aws-glue-programming-etl-connect-azurecosmos-home.md). 

# Connexion à Azure SQL dans AWS Glue Studio
<a name="connecting-to-data-azuresql"></a>

 AWS Glue fournit une prise en charge intégrée pour Azure SQL. AWS Glue Studio fournit une interface visuelle pour se connecter à Azure SQL, créer des tâches d'intégration de données et les exécuter sur l'exécution Spark AWS Glue Studio sans serveur. 

**Topics**
+ [Création d'une connexion Azure SQL](creating-azuresql-connection.md)
+ [Création d'un nœud source Azure SQL](creating-azuresql-source-node.md)
+ [Création d'un nœud cible Azure SQL](creating-azuresql-target-node.md)
+ [Options avancées](#creating-azuresql-connection-advanced-options)

# Création d'une connexion Azure SQL
<a name="creating-azuresql-connection"></a>

Pour vous connecter à Azure SQL depuis AWS Glue, vous devez créer et stocker vos informations d'identification Azure SQL dans un AWS Secrets Manager secret, puis associer ce secret à une AWS Glue connexion Azure SQL.

**Pour configurer une connexion à Azure SQL :**

1. Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification Azure SQL. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `user` contenant la valeur. *azuresqlUsername*
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `password` contenant la valeur. *azuresqlPassword*

1. Dans la AWS Glue console, créez une connexion en suivant les étapes décrites dans[Ajouter une AWS Glue connexion](console-connections.md). Après avoir créé la connexion, conservez le nom de la connexion pour une utilisation future dans AWS Glue. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez Azure SQL.
   + Lorsque vous fournissez une **URL Azure SQL**, fournissez une URL de point de terminaison JDBC.

      La URL doit avoir le format suivant : `jdbc:sqlserver://databaseServerName:databasePort;databaseName=azuresqlDBname;`.

     AWS Glue nécessite les propriétés d'URL suivantes : 
     + `databaseName` – une base de données par défaut dans Azure SQL à laquelle se connecter.

     Pour plus d'informations sur JDBC URLs pour Azure SQL Managed Instances, consultez la documentation [Microsoft](https://learn.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=azuresqldb-mi-current).
   + Lorsque vous sélectionnez un **AWS secret**, fournissez*secretName*.

# Création d'un nœud source Azure SQL
<a name="creating-azuresql-source-node"></a>

## Prérequis
<a name="creating-azuresql-source-node-prerequisites"></a>
+ Une connexion AWS Glue Azure SQL, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion Azure SQL](creating-azuresql-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table SQL Azure que vous souhaitez lire,*tableName*.

  Une table Azure SQL est identifiée par sa base de données, son schéma et son nom de table. Vous devez fournir le nom de la base de données et le nom de la table lorsque vous vous connectez à Azure SQL. Vous devez également fournir le schéma s'il n'est pas « public » par défaut. La base de données est fournie via une propriété URL dans*connectionName*, un schéma et un nom de table via le`dbtable`.

## Ajout d'une source de données Azure SQL
<a name="creating-azuresql-source-node-add"></a>

**Pour ajouter un nœud **Source de données – Azure SQL** :**

1.  Choisissez la connexion pour votre source de données Azure SQL. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion Azure SQL**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion Azure SQL](creating-azuresql-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1.  Choisissez une option **Source Azure SQL** : 
   +  **Choisissez une seule table** : accéder à toutes les données à partir d'une seule table. 
   +  **Saisir une requête personnalisée** : accéder à un jeu de données à partir de plusieurs tables en fonction de votre requête personnalisée. 

1.  Si vous avez choisi une seule table, entrez*tableName*. 

    Si vous avez choisi **Saisir une requête personnalisée**, saisissez une requête TransactSQL SELECT. 

1.  Dans les **Propriétés Azure SQL personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible Azure SQL
<a name="creating-azuresql-target-node"></a>

## Prérequis
<a name="creating-azuresql-target-node-prerequisites"></a>
+ Une connexion AWS Glue Azure SQL, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion Azure SQL](creating-azuresql-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table SQL Azure dans laquelle vous souhaitez écrire,*tableName*.

  Une table Azure SQL est identifiée par sa base de données, son schéma et son nom de table. Vous devez fournir le nom de la base de données et le nom de la table lorsque vous vous connectez à Azure SQL. Vous devez également fournir le schéma s'il n'est pas « public » par défaut. La base de données est fournie via une propriété d'URL dans*connectionName*, un schéma et un nom de table via le`dbtable`.

## Ajout d'une cible de données Azure SQL
<a name="creating-azuresql-target-node-add"></a>

**Pour ajouter un nœud **Cible de données – Azure SQL** :**

1.  Choisissez la connexion pour votre source de données Azure SQL. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion Azure SQL**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion Azure SQL](creating-azuresql-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Configurez **le nom de la table** en fournissant*tableName*.

1.  Dans les **Propriétés Azure SQL personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

## Options avancées
<a name="creating-azuresql-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d'un nœud Azure SQL. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Consultez [Connexions Azure SQL](aws-glue-programming-etl-connect-azuresql-home.md). 

# Connexion à Blackbaud Raiser’s Edge NXT
<a name="connecting-to-data-blackbaud"></a>

Blackbaud Raiser’s Edge NXT est une solution logicielle complète de collecte de fonds et de gestion des donateurs basée sur le cloud, spécialement conçue pour les organisations à but non lucratif et l’ensemble de la communauté sociale. Ce connecteur repose sur l’API SKY de Blackbaud Raiser’s Edge NXT et fournit des opérations pour permettre de gérer les entités présentes dans le Raisers Edge NXT.

**Topics**
+ [AWS Glue support pour Blackbaud Raiser's Edge NXT](blackbaud-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](blackbaud-configuring-iam-permissions.md)
+ [Configuration de Blackbaud Raiser’s Edge NXT](blackbaud-configuring.md)
+ [Configuration des connexions Blackbaud Raiser’s Edge NXT](blackbaud-configuring-connections.md)
+ [Lecture à partir des entités Blackbaud Raiser’s Edge NXT](blackbaud-reading-from-entities.md)
+ [Options de connexion Blackbaud Raiser’s Edge NXT](blackbaud-connection-options.md)
+ [Restrictions de Blackbaud Raiser’s Edge NXT](blackbaud-connection-limitations.md)

# AWS Glue support pour Blackbaud Raiser's Edge NXT
<a name="blackbaud-support"></a>

AWS Glue prend en charge Blackbaud Raiser's Edge NXT comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données depuis Blackbaud Raiser's Edge NXT.

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

**Versions de l’API Blackbaud Raiser’s Edge NXT prises en charge**  
Les versions suivantes de l’API Blackbaud Raiser’s Edge NXT sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="blackbaud-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Blackbaud Raiser’s Edge NXT
<a name="blackbaud-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Blackbaud Raiser's Edge NXT, vous devez répondre aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Blackbaud Raiser’s Edge NXT.
+ Vous avez généré un jeton d'accès sur votre compte Blackbaud Raiser's Edge NXT avec l' read/write étendue appropriée attribuée pour accéder au. APIs Pour plus d’informations, consultez [Authorization](https://developer.blackbaud.com/skyapi/docs/authorization).

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Blackbaud Raiser's Edge NXT.

# Configuration des connexions Blackbaud Raiser’s Edge NXT
<a name="blackbaud-configuring-connections"></a>

Blackbaud Raiser's Edge NXT prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Blackbaud Raiser's Edge NXT où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Blackbaud Raiser's Edge NXT.
+ Les utilisateurs peuvent choisir de créer leur propre application connectée dans Blackbaud Raiser's Edge NXT et de fournir leur propre identifiant client, clé d'abonnement et URL d'instance lors de la création de connexions via la console. AWS Glue Dans ce scénario, ils seront toujours redirigés vers Blackbaud Raiser's Edge NXT pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ [Pour consulter la documentation publique de Blackbaud Raiser's Edge NXT sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir Autorisation.](https://developer.blackbaud.com/skyapi/docs/authorization)

Pour configurer une connexion Blackbaud Raiser’s Edge NXT :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir la clé d’API de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Blackbaud Raiser’s Edge NXT.

   1. Indiquez l’`INSTANCE_URL` du compte Blackbaud Raiser’s Edge NXT auquel vous souhaitez vous connecter.

   1. Indiquez le `clientId` de l’application du client gérée par l’utilisateur.

   1. Indiquez la clé d’abonnement associée à votre compte.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir des entités Blackbaud Raiser’s Edge NXT
<a name="blackbaud-reading-from-entities"></a>

**Prérequis**

Un objet Blackbaud Raiser’s Edge NXT à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Constituent Address | Oui | Oui | Non | Oui | Oui | 
| Constituent Education | Oui | Oui | Non | Oui | Oui | 
| Constituent Email address | Oui | Oui | Non | Oui | Oui | 
| Constituent Phone | Oui | Oui | Non | Oui | Oui | 
| Constituent Note | Oui | Oui | Non | Oui | Oui | 
| Constituent Relationship | Oui | Oui | Non | Oui | Oui | 
| Constituent Online presence | Oui | Oui | Non | Oui | Oui | 
| Opportunity | Oui | Oui | Non | Oui | Oui | 
| Appeal | Oui | Oui | Non | Oui | Oui | 
| Campaign | Oui | Oui | Non | Oui | Oui | 
| Fund | Oui | Oui | Non | Oui | Oui | 
| Package | Oui | Oui | Non | Oui | Oui | 
| Gift Batch | Oui | Oui | Non | Oui | Non | 
| Event Participant | Oui | Oui | Oui | Oui | Oui | 
| Constituent Fundraiser Assignment | Non | Non | Non | Oui | Non | 
| Gift | Oui | Oui | Oui | Oui | Oui | 
| Membres | Oui | Oui | Non | Oui | Oui | 
| Action | Oui | Oui | Non | Oui | Non | 
| Constituent | Oui | Oui | Oui | Oui | Oui | 
| Constituent Goods | Oui | Oui | Non | Oui | Oui | 
| Événement | Oui | Oui | Oui | Oui | Oui | 
| Gift custom field | Oui | Oui | Non | Oui | Oui | 

**Exemple :**

```
blackbaud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="BLACKBAUD",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1",
        "SUBSCRIPTION_KEY": <Subscription key associated with one's developer account>
    }
```

## Détails des entités et des champs Blackbaud Raiser’s Edge NXT
<a name="blackbaud-reading-entity-field-details"></a>

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Action](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Action)
+ [Constituent](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Constituent)
+ [Constituent Address](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Address)
+ [Constituent Membership](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Membership)
+ [Constituent Fundraiser Assignment](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#FundraiserAssignment)
+ [Constituent Education](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Education)
+ [Constituent Email address](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#EmailAddress)
+ [Constituent Phone](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Phone)
+ [Constituent Note](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Note)
+ [Constituent Online presence](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#OnlinePresence)
+ [Constituent Relationship](https://developer.blackbaud.com/skyapi/renxt/constituent/entities#Relationship)
+ [Event](https://developer.blackbaud.com/skyapi/renxt/event/entities#Event)
+ [Event Participant](https://developer.blackbaud.com/skyapi/renxt/event/entities#Participant)
+ [Appeal](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Appeal)
+ [Campaign](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Campaign)
+ [Fund](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Fund)
+ [Package](https://developer.blackbaud.com/skyapi/renxt/fundraising/entities#Package)
+ [Gift](https://developer.blackbaud.com/skyapi/renxt/gift/entities#Gift)
+ [Gift Custom Field](https://developer.blackbaud.com/skyapi/renxt/gift/entities#CustomField)
+ [Gift Batch](https://developer.blackbaud.com/skyapi/renxt/gift-batch/entities#GiftBatch)
+ [Opportunity](https://developer.blackbaud.com/skyapi/renxt/opportunity/entities#Opportunity)
+ [Constituent Codes](https://developer.sky.blackbaud.com/api#api=56b76470069a0509c8f1c5b3)

**Note**  
Les types de données Struct et List sont convertis en type de données String, et le type de DateTime données est converti en Timestamp dans la réponse des connecteurs.

## Requêtes de partitionnement
<a name="blackbaud-reading-partitioning-queries"></a>

**Partitionnement basé sur les champs** :

Blackbaud Raiser’s Edge NXT ne prend pas en charge le partitionnement basé sur les champs ou les enregistrements.

**Partitionnement basé sur des enregistrements** :

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.

Dans le partitionnement basé sur les enregistrements, le nombre total d’enregistrements présents est demandé par l’API Blackbaud Raiser’s Edge NXT, puis divisé par le nombre `NUM_PARTITIONS` fourni. Le nombre d’enregistrements qui en résulte est ensuite extrait simultanément par chaque sous-requête.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
blackbaud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="BLACKBAUD",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2",
        "SUBSCRIPTION_KEY": <Subscription key associated with one's developer account>
    }
```

# Options de connexion Blackbaud Raiser’s Edge NXT
<a name="blackbaud-connection-options"></a>

Les options de connexion pour Blackbaud Raiser’s Edge NXT sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Blackbaud Raiser’s Edge NXT.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version que vous souhaitez utiliser de l’API Rest Blackbaud Raiser’s Edge NXT.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. Exemple de valeur : 10.
+ `SUBSCRIPTION_KEY`(Chaîne) - (Obligatoire) Par défaut : vide. Utilisé pour la lecture. Clé d’abonnement associée à son compte de développeur.

# Restrictions de Blackbaud Raiser’s Edge NXT
<a name="blackbaud-connection-limitations"></a>

Voici les restrictions ou remarques relatives à Blackbaud Raiser’s Edge NXT :
+ Le SaaS ne prend en charge que l’opérateur `EQUAL_TO`, qui renvoie les résultats créés ou modifiés à la date spécifiée ou après cette date. De plus, le champ « id » est un type de données String. Il n’y a pas non plus d’identification des champs n’autorisant pas les valeurs nulles. Par conséquent, le partitionnement basé sur les champs n’est pas pris en charge.
+ L’attraction incrémentielle n’est prise en charge par l’entité `Event` qu’avec des fréquences quotidiennes, mensuelles et hebdomadaires.
+ L’entité Constituent Fundraiser Assignment renvoie un maximum de 20 enregistrements.
+ Partitionnement basé sur les enregistrements :
  + Non pris en charge par les entités `Action`, `Constituent Fundraiser Assignment` ou `Gift Batch`.
  + Le partitionnement basé sur les enregistrements avec le prédicat de filtre n’est pris en charge que par les entités `Event` et `Event Participant`. Si un prédicat de filtre est utilisé avec d’autres entités prises en charge basées sur des enregistrements, une exception sera émise.
+ Dans l’entité `Gift Custom Field`, le champ « value » doit être utilisé conjointement avec le champ « category », faute de quoi une réponse non filtrée sera envoyée. Ainsi, pour obliger l’utilisateur à saisir le champ « category » lors du filtrage avec le champ « value », une exception sera émise si l’exigence susmentionnée n’a pas été respectée.
+ Les champs `date_added` et `last_modified` de toutes les entités applicables ne prennent en charge aucun opérateur comparatif. Ils ne prennent en charge que l’opérateur égal à. De plus, aucun champ ne peut être associé aux champs susmentionnés pour fournir une gamme d’enregistrements. Par conséquent, ces champs sont uniquement interrogeables et ne peuvent pas prendre en charge le transfert incrémentiel.
+ Le champ `added_by` de l’entité `Gift Batch` ne sera pas considéré comme filtrable, car il risque de ne pas émettre les bons résultats.
+ Il existe une latence d’environ 30 minutes pour que les enregistrements soient récupérés via le point de terminaison `/GET Gift List` lors de l’insertion des données dans l’entité `Gift`.
+ La prise en charge du transfert incrémentiel a été abandonnée pour l’entité Gift en raison de restrictions liées à la source de données. 
+ Il existe une latence de 10 minutes pour le champ de statut dans l’entité Opportunity.
+ L’entité `Fundraiser Assignment` a `Constituent` comme entité dépendante. Le connecteur charge au maximum 5 000 personnes IDs parmi lesquelles choisir, afin d'éviter que la taille de réponse ne dépasse la taille de charge utile maximale autorisée.

# Connexion à CircleCI
<a name="connecting-to-data-circleci"></a>

CircleCI est une plateforme d’intégration et de livraison continues. Votre compte CircleCI contient des données sur vos projets, vos pipelines, vos flux de travail, etc. Si vous êtes un utilisateur de CircleCI, vous pouvez vous connecter AWS Glue à votre compte CircleCI. Vous pouvez ensuite utiliser CircleCI comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre CircleCI AWS et des services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour CircleCI](circleci-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](circleci-configuring-iam-permissions.md)
+ [Configuration de CircleCI](circleci-configuring.md)
+ [Configuration de connexions CircleCI](circleci-configuring-connections.md)
+ [Lecture à partir d’entités CircleCI](circleci-reading-from-entities.md)
+ [Options de connexion CircleCI](circleci-connection-options.md)
+ [Restrictions de CircleCI](circleci-connection-limitations.md)

# AWS Glue support pour CircleCI
<a name="circleci-support"></a>

AWS Glue prend en charge CircleCI comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger les données de CircleCI.

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

**Versions de l’API CircleCI prises en charge**  
Les versions d’API CircleCI suivantes sont prises en charge :
+   v2

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="circleci-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de CircleCI
<a name="circleci-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis CircleCI, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte CircleCI qui contient les données que vous souhaitez transférer. 
+ Dans les paramètres utilisateur de votre compte, vous avez créé un jeton d’API personnel. Pour plus d’informations, consultez [Creating a personal API token](https://circleci.com/docs/managing-api-tokens/#creating-a-personal-api-token).
+ Vous fournissez le jeton d'API personnel à AWS Glue lors de la création de la connexion.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte CircleCI.

# Configuration de connexions CircleCI
<a name="circleci-configuring-connections"></a>

CircleCI prend en charge l’authentification personnalisée.

Pour configurer une connexion CircleCI :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir la clé d’API de l’application connectée avec `Circle-Token` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez CircleCI.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités CircleCI
<a name="circleci-reading-from-entities"></a>

**Prérequis**

Un objet CircleCI à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Contexte | Oui | Non | Non | Oui | Non | 
| Organization Summary Metric | Oui | Non | Non | Oui | Non | 
| Pipeline | Non | Non | Non | Oui | Non | 
| Flux de travail d'un pipeline | Oui | Non | Non | Oui | Non | 
| Project Branch | Oui | Non | Non | Oui | Non | 
| Project Flaky Test | Non | Non | Non | Oui | Non | 
| Project Summary Metric | Oui | Non | Non | Oui | Non | 
| Planning | Non | Non | Non | Oui | Non | 
| Workflow Job Timeseries | Oui | Non | Non | Oui | Non | 
| Workflow Metric And Trend | Oui | Non | Non | Oui | Non | 
| Workflow Recent Run | Oui | Non | Non | Oui | Non | 
| Workflow Summary Metric | Oui | Non | Non | Oui | Non | 
| Workflow Test Metric | Oui | Non | Non | Oui | Non | 

**Exemple :**

```
circleci_read = glueContext.create_dynamic_frame.from_options(
    connection_type="circleci",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "context/e7ea2945-dccb-4205-b673-8391fe1b3a4c",
        "API_VERSION": "v2"
    }
```

## Détails des entités et des champs CircleCI
<a name="circleci-reading-from-entities-field-details"></a>

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Contexts](https://circleci.com/docs/api/v2/#operation/listContexts)
+ [Project Summary Metrics](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowsPageData)
+ [Workflow Job Timeseries](https://circleci.com/docs/api/v2/#operation/getJobTimeseries)
+ [Organization Summary Metrics](https://circleci.com/docs/api/v2/#operation/getOrgSummaryData)
+ [Project Branches](https://circleci.com/docs/api/v2/#operation/getAllInsightsBranches)
+ [Project Flaky Tests](https://circleci.com/docs/api/v2/#operation/getFlakyTests)
+ [Workflow Recent Runs](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowRuns)
+ [Workflow Summary Metrics](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowMetrics)
+ [Workflow Metrics and Trends](https://circleci.com/docs/api/v2/#operation/getWorkflowSummary)
+ [Workflow Test Metrics](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowTestMetrics)
+ [Pipelines](https://circleci.com/docs/api/v2/#operation/listPipelinesForProject)
+ [Pipeline Workflows](https://circleci.com/docs/api/v2/#operation/listWorkflowsByPipelineId)
+ [Horaires](https://circleci.com/docs/api/v2/#operation/listSchedulesForProject)

Entités avec métadonnées statiques :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/circleci-reading-from-entities.html)

**Note**  
Les types de données Struct et List sont convertis en type de données String dans la réponse du connecteur.

**Requêtes de partitionnement**

CircleCI ne prend pas en charge le partitionnement basé sur les champs ou les enregistrements.

# Options de connexion CircleCI
<a name="circleci-connection-options"></a>

Les options de connexion pour CircleCI sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans CircleCI.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest CircleCI que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.

# Restrictions de CircleCI
<a name="circleci-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent CircleCI :
+ CircleCI ne prend en charge ni le partitionnement basé sur les champs, ni le partitionnement basé sur les enregistrements.
+ Les champs de filtre contenant un « - » (trait d’union) ne fonctionneront que s’ils sont encadrés par des accents graves. Par exemple : `workflow-name` = "abc"
+ Le type GitLab VCS ne peut pas être pris en charge car il n'existe aucun moyen programmatique de récupérer l' « ID de projet » requis pour le chemin de l' GitLab entité VCS.

# Connexion à Datadog
<a name="connecting-to-datadog"></a>

Datadog est une plateforme de surveillance et d’analytique pour les applications à l’échelle du cloud, notamment les infrastructures, les applications, les services et les outils.

**Topics**
+ [AWS Glue support pour Datadog](datadog-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](datadog-configuring-iam-permissions.md)
+ [Configuration de Datadog](datadog-configuring.md)
+ [Configuration de connexions Datadog](datadog-configuring-connections.md)
+ [Lecture à partir d’entités Datadog](datadog-reading-from-entities.md)
+ [Options de connexion Datadog](datadog-connection-options.md)
+ [Création d’un compte Datadog](datadog-create-account.md)
+ [Limitations](datadog-connector-limitations.md)

# AWS Glue support pour Datadog
<a name="datadog-support"></a>

AWS Glue supporte Datadog comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les jobs AWS Glue ETL pour interroger les données de Datadog.

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

**Versions d’API Datadog prises en charge**  
 
+ v1
+   v2

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="datadog-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration de Datadog
<a name="datadog-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Datadog, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="datadog-configuring-min-requirements"></a>
+ Vous possédez un compte Datadog avec DD-API-KEY et. DD-APPLICATION-KEY Pour plus d’informations sur la création d’un compte, consultez [Creating a Datadog account](datadog-create-account.md). 
+  Votre compte Datadog dispose d’un accès à l’API avec une licence valide.

   

Datadog prend en charge les six suivants. URLs Tous les clients d'API Datadog sont configurés par défaut pour utiliser le site US1 Datadog. APIs Si vous êtes sur le site européen de Datadog, vous devez sélectionner l'URL https://api.datadoghq.eu avec le `DD-API-KEY` et du site européen `DD-APPLICATION-KEY` de Datadog pour accéder au. APIs De même, pour les autres sites, vous devez sélectionner le `DD-API-KEY and DD-APPLICATION-KEY` correspondant URLs avec le site concerné. 
+ US1 URL de l'API — [https://api.datadoghq.com](https://api.datadoghq.com) https://api.datadoghq.com
+ URL de l’API EU – [https://api.datadoghq.eu](https://api.datadoghq.eu)
+ US3 URL de l'API — [https://api.us3.datadoghq.com](https://api.us3.datadoghq.com) 
+ US5 URL de l'API — [https://api.us5.datadoghq.com](https://api.us5.datadoghq.com)
+ URL DE L'API S1-FED — [https://api.ddog-gov.com](https://api.ddog-gov.com)
+ URL de l'API pour le Japon — [https://api.ap1.datadoghq.com](https://api.ap1.datadoghq.com)

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Datadog.

# Configuration de connexions Datadog
<a name="datadog-configuring-connections"></a>

Datadog prend en charge l’authentification personnalisée. Voici les étapes à suivre pour configurer la connexion Datadog :

Pour configurer une connexion Datadog :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 

   Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `API_KEY` et `APPLICATION_KEY` comme clés. 
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Datadog.

   1. Indiquez l’`Instance_Url` de Datadog à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Datadog
<a name="datadog-reading-from-entities"></a>

 **Conditions préalables** 

Un objet Datadog à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
|  Metrics Timeseries  | Oui | Non | Non | Oui | Non | 
|  Log Queries  | Oui | Oui | Oui | Oui | Non | 

 **Exemple** 

```
Datadog_read = glueContext.create_dynamic_frame.from_options(
    connection_type="datadog",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "log-queries",
        "API_VERSION": "v2",
        "INSTANCE_URL": "https://api.datadoghq.com",
        "FILTER_PREDICATE": "from = `2023-10-03T09:00:26Z`"
    }
```

 **Détails des entités et des champs Datadog** 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/datadog-reading-from-entities.html)

# Options de connexion Datadog
<a name="datadog-connection-options"></a>

Les options de connexion pour Datadog sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Datadog.
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Datadog que vous souhaitez utiliser. La version `v1` prend en charge l’entité `metrics-timeseries` tandis que la version `v2` prend en charge l’entité `log-queries`.
+  `INSTANCE_URL`(Chaîne) – (Obligatoire) Utilisé pour la lecture. URL d’instance Datadog. L’URL de l’instance Datadog varie selon les régions. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 

# Création d’un compte Datadog
<a name="datadog-create-account"></a>

1. Accédez à [https://www.datadoghq.com/](https://api.datadoghq.com). 

1. Choisissez **COMMENCER GRATUITEMENT**.

1. Saisissez les informations requises et inscrivez-vous. 

1. Installez le **programme d’installation de l’agent Datadog** comme suggéré. 

1. Assurez-vous que le compte est enregistré auprès d’une organisation valide (dans la liste disponible) disposant d’un abonnement Datadog actif. 

1. Une fois connecté à votre compte Datadog, survolez votre nom d’utilisateur dans le coin supérieur droit pour afficher les détails des **clés** :

   1. Pour obtenir votre clé d’API, choisissez **Clés d’API**.

   1. Pour obtenir votre clé d’application, choisissez **Clés d’application**.

# Limitations
<a name="datadog-connector-limitations"></a>

Les restrictions du connecteur Datadog sont les suivantes :
+ Datadog ne prend en charge ni le partitionnement basé sur les champs ni le partitionnement basé sur les enregistrements.
+ `from` est un paramètre de filtre obligatoire pour l’entité `Log Queries`.
+ `from_to_date` et `query` sont des paramètres de filtre obligatoires pour l’entité `Metrics Timeseries`.

# Connexion à Docusign Monitor
<a name="connecting-to-data-docusign-monitor"></a>

Docusign Monitor aide les entreprises à protéger leurs accords grâce au suivi des round-the-clock activités. L’API Monitor fournit ces informations de suivi des activités directement aux piles de sécurité ou aux outils de visualisation des données existants, ce qui permet aux équipes de détecter les activités non autorisées, d’enquêter sur les incidents et de réagir rapidement aux menaces vérifiées. Il offre également la flexibilité dont les équipes de sécurité ont besoin pour personnaliser les tableaux de bord et les alertes afin de répondre aux besoins métier spécifiques.

**Topics**
+ [AWS Glue support pour Docusign Monitor](docusign-monitor-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](docusign-monitor-configuring-iam-permissions.md)
+ [Configuration de Docusign Monitor](docusign-monitor-configuring.md)
+ [Configuration des connexions Docusign Monitor](docusign-monitor-configuring-connections.md)
+ [Lecture depuis les entités Docusign Monitor](docusign-monitor-reading-from-entities.md)
+ [Options de connexion Docusign Monitor](docusign-monitor-connection-options.md)
+ [Restrictions de Docusign Monitor](docusign-monitor-connection-limitations.md)

# AWS Glue support pour Docusign Monitor
<a name="docusign-monitor-support"></a>

AWS Glue prend en charge Docusign Monitor 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 de Docusign Monitor.

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

**Versions d’API Docusign Monitor prises en charge**  
Les versions d’API Docusign Monitor suivantes sont prises en charge :
+ v2.0

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="docusign-monitor-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Docusign Monitor
<a name="docusign-monitor-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Docusign Monitor vers des destinations prises en charge, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="docusign-monitor-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Docusign sur lequel vous pouvez utiliser le produit Docusign Software dans Docusign Monitor.
+ Dans la console de développement de votre compte Docusign, vous avez créé une application d'intégration OAuth 2.0 pour. AWS Glue

  Cette application fournit les informations d'identification du client qui AWS Glue permettent d'accéder à vos données en toute sécurité lorsqu'elle passe des appels authentifiés vers votre compte. Pour plus d'informations, consultez la [OAuth version 2.0](https://developers.docusign.com/platform/webhooks/connect/validation-and-security/oauth-connect/) dans la documentation de Docusign Monitor.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Docusign Monitor.

# Configuration des connexions Docusign Monitor
<a name="docusign-monitor-configuring-connections"></a>

Docusign Monitor prend en charge le type d’autorisation AUTHORIZATION\$1CODE.
+ Ce type de subvention est considéré comme tridimensionnel OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console.
+ Les utilisateurs peuvent choisir de créer leur propre application connectée dans Docusign Monitor et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Docusign Monitor pour se connecter et autoriser l'accès AWS Glue à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter la documentation publique de Docusign Monitor sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez [Docusign OAuth Connect](https://developers.docusign.com/platform/webhooks/connect/validation-and-security/oauth-connect/).

Pour configurer une connexion Docusign Monitor :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir la clé d’API de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Sous **Connexions**, choisissez **Créer une connexion**.

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Docusign Monitor.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Fournissez l'**application client gérée par l'utilisateur ClientId de l'application** Docusign Monitor.

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture depuis les entités Docusign Monitor
<a name="docusign-monitor-reading-from-entities"></a>

**Prérequis**

Un objet Docusign Monitor à partir duquel vous souhaitez lire.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Surveillance des données | Oui | Oui | Non | Oui | Non | 

**Exemple :**

```
docusignmonitor_read = glueContext.create_dynamic_frame.from_options(
    connection_type="docusign_monitor",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "monitoring-data",
        "API_VERSION": "v2.0"
    }
```

## Détails des entités et des champs Docusign Monitor
<a name="docusign-monitor-reading-from-entities-field-details"></a>

Entités avec métadonnées statiques :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/docusign-monitor-reading-from-entities.html)

**Requêtes de partitionnement**

Docusign Monitor ne prend en charge ni le partitionnement basé sur les champs ni le partitionnement basé sur les enregistrements.

# Options de connexion Docusign Monitor
<a name="docusign-monitor-connection-options"></a>

Les options de connexion pour Docusign Monitor sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Docusign Monitor.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version de l’API Rest de Docusign Monitor que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.

# Restrictions de Docusign Monitor
<a name="docusign-monitor-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent Docusign Monitor :
+ Lorsqu’un filtre est appliqué à l’aide du champ `cursor`, l’API récupère les enregistrements des sept prochains jours à compter de la date spécifiée.
+ Si aucun filtre n’est fourni, l’API récupère les enregistrements des sept jours précédents à compter de la date actuelle de la demande d’API.
+ Docusign Monitor ne prend en charge ni le partitionnement basé sur les champs, ni le partitionnement basé sur les enregistrements.
+ Docusign Monitor ne prend pas en charge la fonctionnalité Order By.

# Connexion à Domo
<a name="connecting-to-data-domo"></a>

Domo est un outil de tableau de bord cloud. Avec la plateforme d’applications d’entreprise de Domo, les bases dont vous avez besoin pour étendre Domo sont en place, afin que vous puissiez créer vos solutions personnalisées plus rapidement.

**Topics**
+ [AWS Glue support pour Domo](domo-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](domo-configuring-iam-permissions.md)
+ [Configuration de Domo](domo-configuring.md)
+ [Configuration de connexions Domo](domo-configuring-connections.md)
+ [Lecture à partir d’entités Domo](domo-reading-from-entities.md)
+ [Options de connexion Domo](domo-connection-options.md)
+ [Restrictions de Domo](domo-connection-limitations.md)

# AWS Glue support pour Domo
<a name="domo-support"></a>

AWS Glue supporte Domo comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Domo.

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

**Versions de l’API Domo prises en charge**  
Les versions d’API Domo suivantes sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="domo-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Domo
<a name="domo-configuring"></a>

Avant de pouvoir transférer des AWS Glue données depuis Domo vers des destinations prises en charge, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Domo activé pour accéder à l’API.
+ Vous avez une application dans votre compte de développeur Domo qui fournit les informations d'identification du client qui permettent d' AWS Glue accéder à vos données en toute sécurité lorsqu'il passe des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Création d’une application pour développeurs Domo](#domo-configuring-creating-developer-app).

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Domo.

## Création d’une application pour développeurs Domo
<a name="domo-configuring-creating-developer-app"></a>

Pour obtenir l’ID client et le secret client, vous devez créer un compte développeur.

1. Accédez à la [page de connexion du développeur Domo](https://developer.domo.com/manage-clients).

1. Choisissez **Login (Connexion)**.

1. Indiquez le nom de domaine et cliquez sur **Continuer**.

1. Passez la souris sur **Mon compte** et choisissez **Nouveau client**.

1. Indiquez le nom et la description, sélectionnez la portée (« données ») et choisissez **Créer**.

1. Récupérez l’**ID client** et le **secret client** générés auprès du nouveau client créé.

# Configuration de connexions Domo
<a name="domo-configuring-connections"></a>

Domo prend en charge le type de subvention CLIENT\$1CREDENTIALS pour. OAuth2
+ Ce type de subvention est considéré comme bidimensionnel OAuth car seule l'application cliente s'authentifie auprès du serveur, sans aucune implication de l'utilisateur.
+ Les utilisateurs peuvent choisir de créer leur propre application connectée dans Domo et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console.
+ Pour consulter la documentation publique de Domo sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez [OAuth Authentification](https://developer.domo.com/portal/1845fc11bbe5d-api-authentication).

Pour configurer une connexion Domo :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le jeton d’accès à l’application connectée, `client_id` et `client_secret`.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Sous **Connexions**, choisissez **Créer une connexion**.

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Domo.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Domo
<a name="domo-reading-from-entities"></a>

**Prérequis**

Un objet Domo à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, tel que le jeu de données ou les politiques d’autorisation des données. Le tableau suivant présente les entités prises en charge.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Ensemble de données | Oui | Oui | Oui | Oui | Oui | 
| Politiques d’autorisation des données | Non | Non | Non | Oui | Non | 

**Exemple :**

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1"
    }
```

## Détails des entités et des champs Domo
<a name="domo-reading-from-entities-field-details"></a>

Entités avec métadonnées statiques :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/domo-reading-from-entities.html)

Pour l’entité suivante, Domo fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique, afin que la prise en charge des opérateurs soit capturée au niveau du type de données pour l’entité.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/domo-reading-from-entities.html)

## Requêtes de partitionnement
<a name="domo-reading-from-partitioning"></a>

**Partitionnement basé sur les champs**

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2023-01-15T11:18:39.205Z"
  ```

  Pour le champ Date, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.

  Exemple de valeur valide :

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS` : le nombre de partitions.

Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau suivant :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/domo-reading-from-entities.html)

Exemple :

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "permissionTime"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

**Partitionnement basé sur les enregistrements**

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.

Dans le partitionnement basé sur les enregistrements, le nombre total d’enregistrements présents est demandé par Domo, puis divisé par le nombre `NUM_PARTITIONS` fourni. Le nombre d’enregistrements qui en résulte est ensuite extrait simultanément par chaque sous-requête.

Exemple :

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2"
    }
```

# Options de connexion Domo
<a name="domo-connection-options"></a>

Les options de connexion pour Domo sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Domo.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Domo que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Restrictions de Domo
<a name="domo-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent Domo :
+ En raison d’une limitation du kit SDK, le filtrage ne fonctionne pas comme prévu pour les champs interrogeables commençant par « \$1 » (par exemple : \$1BATCH\$1ID).
+ En raison d’une restriction de l’API, le filtrage fonctionne à la date antérieure à la date que vous avez indiquée. Cela affecte également l’extraction incrémentielle. Pour contourner cette limitation, sélectionnez une date en fonction de votre fuseau horaire par rapport à l’UTC, afin d’obtenir les données correspondant à la date requise.

# Connexion à Dynatrace
<a name="connecting-to-data-dynatrace"></a>

Dynatrace est une plateforme qui propose des outils d’analytique et d’automatisation pour une observabilité et une sécurité complètes. Elle est spécialisée dans la surveillance et l’optimisation des performances des applications, de l’infrastructure et de l’expérience utilisateur.

**Topics**
+ [AWS Glue support pour Dynatrace](dynatrace-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](dynatrace-configuring-iam-permissions.md)
+ [Configuration de Dynatrace](dynatrace-configuring.md)
+ [Configuration de connexions Dynatrace](dynatrace-configuring-connections.md)
+ [Lecture à partir d’entités Dynatrace](dynatrace-reading-from-entities.md)
+ [Options de connexion Dynatrace](dynatrace-connection-options.md)
+ [Restrictions de Dynatrace](dynatrace-connection-limitations.md)

# AWS Glue support pour Dynatrace
<a name="dynatrace-support"></a>

AWS Glue prend en charge Dynatrace comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Dynatrace.

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

**Versions de l’API Dynatrace prises en charge**  
Les versions d’API Dynatrace suivantes sont prises en charge :
+   v2

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="dynatrace-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Dynatrace
<a name="dynatrace-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Dynatrace, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Dynatrace.
+ Vous avez généré un jeton d'accès dans votre compte Dynatrace avec l' read/write étendue appropriée attribuée pour accéder au. APIs Pour plus d’informations, consultez [Generate a token](https://docs.dynatrace.com/docs/discover-dynatrace/references/dynatrace-api/basics/dynatrace-api-authentication#create-token).

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Dynatrace.

# Configuration de connexions Dynatrace
<a name="dynatrace-configuring-connections"></a>

Dynatrace prend en charge l’authentification personnalisée.

Pour configurer une connexion Dynatrace :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir la clé d’API de l’application connectée avec `apiToken` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Dynatrace.

   1. Indiquez l’`INSTANCE_URL` du compte Dynatrace auquel vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Dynatrace
<a name="dynatrace-reading-from-entities"></a>

**Prérequis**

Un objet Dynatrace à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme « problem ».

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Problème | Oui | Oui | Oui | Oui | Non | 

**Exemple :**

```
Dynatrace_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Dynatrace",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "problem",
        "API_VERSION": "v2",
        "INSTANCE_URL": "https://[instanceName].live.dynatrace.com"
    }
```

**Détails des entités et des champs Dynatrace** :

Dynatrace fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique pour les entités prises en charge. Par conséquent, la prise en charge des opérateurs est capturée au niveau du type de données.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/dynatrace-reading-from-entities.html)

## Requêtes de partitionnement
<a name="dynatrace-reading-partitioning-queries"></a>

Dynatrace ne prend pas en charge le partitionnement basé sur les champs ou le partitionnement basé sur les enregistrements.

# Options de connexion Dynatrace
<a name="dynatrace-connection-options"></a>

Les options de connexion pour Dynatrace sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Dynatrace.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Dynatrace que vous souhaitez utiliser.
+ `INSTANCE_URL`(Chaîne) - Utilisé pour la lecture. URL d’instance Dynatrace valide.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.

# Restrictions de Dynatrace
<a name="dynatrace-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent Dynatrace :
+ Dynatrace ne prend en charge ni le partitionnement basé sur les champs, ni le partitionnement basé sur les enregistrements.
+ Pour la fonctionnalité Tout sélectionner, si vous fournissez le « champ » dans le filtre, le nombre d’enregistrements ne pourra pas dépasser 10 par page.
+ La taille maximale de la page prise en charge est de 500. Si vous sélectionnez l’un des champs [`evidenceDetails, impactAnalysis, recentComments`] lors de la création du flux, le nombre d’enregistrements par page sera défini par défaut sur 10.

# Connexion à Facebook Ads
<a name="connecting-to-data-facebook-ads"></a>

Facebook Ads est une plateforme de publicité numérique performante utilisée par les entreprises de toutes tailles pour toucher leur public cible et atteindre divers objectifs marketing. La plateforme permet aux annonceurs de créer des publicités personnalisées qui peuvent être affichées sur l’ensemble de la gamme d’applications et de services de Facebook, notamment Facebook et Messenger. Grâce à ses fonctionnalités de ciblage avancées, Facebook Ads permet aux entreprises d’atteindre des groupes démographiques, des centres d’intérêt, des comportements et des emplacements spécifiques.

**Topics**
+ [AWS Glue support pour Facebook Ads](facebook-ads-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](facebook-ads-configuring-iam-permissions.md)
+ [Configuration de Facebook Ads](facebook-ads-configuring.md)
+ [Configuration des connexions Facebook Ads](facebook-ads-configuring-connections.md)
+ [Lecture depuis les entités Facebook Ads](facebook-ads-reading-from-entities.md)
+ [Options de connexion Facebook Ads](facebook-ads-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Facebook Ads](facebook-ads-connector-limitations.md)

# AWS Glue support pour Facebook Ads
<a name="facebook-ads-support"></a>

AWS Glue prend en charge les publicités Facebook comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données provenant de Facebook Ads.

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

**Versions de l’API Facebook Ads prises en charge**  
Les versions suivantes de l’API Facebook Ads sont prises en charge :
+ v17.0
+ v18.0
+ v19.0
+ v20.0

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="facebook-ads-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Facebook Ads
<a name="facebook-ads-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Facebook Ads, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="facebook-ads-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Les comptes Facebook Standard sont accessibles directement via Facebook.
+ L’authentification de l’utilisateur est nécessaire pour générer le jeton d’accès.
+ Le connecteur du SDK Facebook Ads implémentera le OAuth flux de *jetons d'accès utilisateur*.
+ Nous utilisons OAuth2 .0 pour authentifier nos demandes d'API auprès de Facebook Ads. Cette authentification Web s’inscrit dans le cadre de l’architecture d’authentification multifactorielle (MFA), qui est un sur-ensemble de l’authentification à deux facteurs.
+ L’utilisateur doit accorder des autorisations pour accéder aux points de terminaison. Pour accéder aux données de l’utilisateur, l’autorisation du point de terminaison est gérée par le biais d’[autorisations](https://developers.facebook.com/docs/permissions) et de [fonctionnalités](https://developers.facebook.com/docs/features-reference).

## Obtenir des informations d'identification OAuth 2.0
<a name="facebook-ads-configuring-creating-facebook-ads-oauth2-credentials"></a>

Pour obtenir des informations d’identification d’API afin de pouvoir passer des appels authentifiés vers votre instance, consultez [REST API](https://developers.facebook-ads.com/rest-api/) dans le Guide du développeur Facebook Ads.

# Configuration des connexions Facebook Ads
<a name="facebook-ads-configuring-connections"></a>

Facebook Ads prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2
+ Ce type de subvention est considéré comme tridimensionnel OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Facebook Ads et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Facebook Ads pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’accès. Un jeton d’utilisateur système qui arrive à expiration est valide pendant 60 jours à compter de la date de génération ou d’actualisation. Pour assurer la continuité, le développeur doit actualiser le jeton d’accès dans les 60 jours. À défaut, cela entraîne la perte du jeton d’accès et oblige le développeur à en obtenir un nouveau pour retrouver l’accès à l’API. Consultez [Actualiser un token d’accès](https://developers.facebook.com/docs/marketing-api/system-users/install-apps-and-generate-tokens/).
+ Pour consulter la documentation relative aux publicités Facebook publiques sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez la section [Utiliser la OAuth version 2.0 pour accéder à Google APIs](https://developers.google.com/identity/protocols/oauth2) dans le guide Google pour les développeurs.

Pour configurer une connexion Facebook Ads :

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Facebook Ads.

   1. Indiquez l’`INSTANCE_URL` de l’instance Facebook Ads à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture depuis les entités Facebook Ads
<a name="facebook-ads-reading-from-entities"></a>

**Prérequis**

Un objet Facebook Ads à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet. Les tableaux suivants présentent les entités prises en charge.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Oui | Oui | Non | Oui | Oui | 
| Ad Set | Oui | Oui | Non | Oui | Oui | 
| Ads | Oui | Oui | Non | Oui | Oui | 
| Ad Creative | Non | Oui | Non | Oui | Non | 
| Insights - Account | Non | Oui | Non | Oui | Non | 
| Adaccounts | Oui | Oui | Non | Oui | Non | 
| Insights - Ad | Oui | Oui | Non | Oui | Oui | 
| Perspectives - AdSet | Oui | Oui | Non | Oui | Oui | 
| Insights - Campaign | Oui | Oui | Non | Oui | Oui | 

**Exemple :**

```
FacebookAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="FacebookAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0"
    }
```

## Détails des entités et des champs Facebook Ads
<a name="facebook-ads-reading-entity-and-field-details"></a>

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Ad Account](https://developers.facebook.com/docs/marketing-api/reference/ad-account)
+ [Campaign](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group)
+ [Ad Set](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign)
+ [Ad](https://developers.facebook.com/docs/marketing-api/reference/adgroup)
+ [Ad Creative](https://developers.facebook.com/docs/marketing-api/reference/ad-creative)
+ [Insight Ad Account](https://developers.facebook.com/docs/marketing-api/reference/ad-account/insights)
+ [Insights Ads](https://developers.facebook.com/docs/marketing-api/reference/adgroup/insights/)
+ [Perspectives AdSets](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign/insights)
+ [Insights Campaigns](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group/insights)

Pour plus d’informations, consultez [API Marketing](https://developers.facebook.com/docs/marketing-api/reference/v21.0).

**Note**  
Les types de données Struct et List sont convertis en type de données String dans la réponse des connecteurs.

## Requêtes de partitionnement
<a name="facebook-ads-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons le format d'horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemple de valeur valide :

  ```
  "2022-01-01"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
FacebookADs_read = glueContext.create_dynamic_frame.from_options(
    connection_type="FacebookAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0",
        "PARTITION_FIELD": "created_time"
        "LOWER_BOUND": "2022-01-01"
        "UPPER_BOUND": "2024-01-02"
        "NUM_PARTITIONS": "10"
    }
```

# Options de connexion Facebook Ads
<a name="facebook-ads-connection-options"></a>

Les options de connexion pour Facebook Ads sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Facebook Ads.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Facebook Ads que vous souhaitez utiliser. Par exemple : v1.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `TRANSFER_MODE`(Chaîne) - Par défaut : SYNC. Utilisé pour la lecture asynchrone.

# Restrictions et remarques relatives au connecteur Facebook Ads
<a name="facebook-ads-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Facebook Ads :
+ Comme Facebook Ads prend en charge les métadonnées dynamiques, tous les champs peuvent être interrogés. Tous les champs prennent en charge le filtrage et les enregistrements sont récupérés si les données sont disponibles, sinon Facebook renvoie une réponse Bad request (400) avec un message d’erreur approprié.
+ Le nombre d’appels d’une application est le nombre d’appels qu’un utilisateur peut passer pendant une période d’une heure continue, 200 multiplié par le nombre d’utilisateurs. Pour plus de détails sur les plafonds, consultez [Plafonds](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/) et [Plafonds Business Use Case](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/#buc-rate-limits).

# Connexion à Facebook Page Insights
<a name="connecting-to-data-facebook-page-insights"></a>

Facebook Page permet aux entreprises et aux autres groupes d’intérêt de créer des pages pour le réseau social Facebook.com. Les entreprises utilisent ces pages pour partager leurs heures d’ouverture, faire des annonces et interagir avec les clients en ligne. Si vous êtes un utilisateur de Facebook Page Insights, vous pouvez vous connecter AWS Glue à votre compte Facebook Page Insights. Vous pouvez utiliser Facebook Page Insights comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer les données de Facebook Page Insights vers AWS des services ou d'autres applications compatibles.

**Topics**
+ [AWS Glue support pour Facebook Page Insights](facebook-page-insights-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](facebook-page-insights-configuring-iam-permissions.md)
+ [Configuration de Facebook Page Insights](facebook-page-insights-configuring.md)
+ [Configuration des connexions Facebook Page Insights](facebook-page-insights-configuring-connections.md)
+ [Lecture à partir d’entités Facebook Page Insights](facebook-page-insights-reading-from-entities.md)
+ [Options de connexion Facebook Page Insights](facebook-page-insights-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Facebook Page Insights](facebook-page-insights-connector-limitations.md)

# AWS Glue support pour Facebook Page Insights
<a name="facebook-page-insights-support"></a>

AWS Glue prend en charge Facebook Page Insights comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Facebook Page Insights.

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

**Versions de l’API Facebook Page Insights prises en charge**  
Les versions suivantes de l’API Facebook Page Insights sont prises en charge :
+ v17
+ v18
+ v19
+ v20
+ v21

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="facebook-page-insights-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Facebook Page Insights
<a name="facebook-page-insights-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Facebook Page Insights, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="facebook-page-insights-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Les comptes Facebook Standard sont accessibles directement via Facebook.
+ L’authentification de l’utilisateur est nécessaire pour générer le jeton d’accès.
+ Le connecteur Facebook Page Insights implémente le OAuth flux de jetons d'accès utilisateur.
+ Le connecteur utilise la valeur OAuth2 .0 pour authentifier nos demandes d'API auprès de Facebook Page Insights. Cela s’inscrit dans le cadre de l’architecture d’authentification multifactorielle (MFA), qui est un sur-ensemble de l’authentification à deux facteurs. Il s’agit d’une authentification Web.
+ L’utilisateur doit accorder des autorisations pour accéder aux points de terminaison. Pour accéder aux données de l’utilisateur, l’autorisation du point de terminaison est gérée par le biais d’autorisations et de fonctionnalités.

# Configuration des connexions Facebook Page Insights
<a name="facebook-page-insights-configuring-connections"></a>

Pour configurer une connexion Facebook Page Insights :

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Facebook Page Insights.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez l’URL du code d’autorisation.

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Facebook Page Insights
<a name="facebook-page-insights-reading-from-entities"></a>

**Prérequis**

Un objet Facebook Page Insights à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Page Content | Oui | Non | Oui | Oui | Oui | 
| Page CTA Clicks | Oui | Non | Non | Oui | Oui | 
| Page Engagement | Oui | Non | Non | Oui | Oui | 
| Page Impressions | Oui | Non | Non | Oui | Oui | 
| Page Posts | Oui | Non | Non | Oui | Oui | 
| Page Post Engagement | Non | Non | Non | Oui | Non | 
| Page Post Reactions | Non | Non | Non | Oui | Non | 
| Page Reactions | Oui | Non | Non | Oui | Oui | 
| Narrations | Oui | Non | Non | Oui | Oui | 
| Page User Demographics | Oui | Non | Non | Oui | Oui | 
| Page Video Views | Oui | Non | Non | Oui | Oui | 
| Page Views | Oui | Non | Non | Oui | Oui | 
| Page Video Posts | Oui | Non | Non | Oui | Oui | 
| Pages | Non | Oui | Non | Oui | Non | 
| Feeds | Oui | Oui | Non | Oui | Oui | 

**Exemple :**

```
facebookPageInsights_read = glueContext.create_dynamic_frame. from options(
    connection_type="facebookpageinsights",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v21"
   }
```

**Détails de champs Facebook Page Insights** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/facebook-page-insights-reading-from-entities.html)

## Requêtes de partitionnement
<a name="facebook-page-insights-reading-partitioning-queries"></a>

**Partitionnement basé sur des filtres** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
facebookPageInsights_read = glueContext.create_dynamic_frame.from_options(
     connection_type="facebookpageinsights",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v21",
         "PARTITION_FIELD": "created_Time"
         "LOWER_BOUND": "2024-10-27T07:00:00+0000"
         "UPPER_BOUND": "2024-10-27T07:00:00+0000"
         "NUM_PARTITIONS": "10"
     }
```

# Options de connexion Facebook Page Insights
<a name="facebook-page-insights-connection-options"></a>

Les options de connexion pour Facebook Page Insights sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Facebook Page Insights.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. La version de l’API Rest Facebook Page Insights que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Une URL d’instance Facebook Page Insights valide.

# Restrictions et remarques relatives au connecteur Facebook Page Insights
<a name="facebook-page-insights-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Facebook Page Insights :
+ La plupart des métriques sont actualisées toutes les 24 heures.
+ Seules les données d’information des deux dernières années sont disponibles.
+ Seuls 90 jours d’informations peuvent être consultés à la fois lorsque vous utilisez les paramètres `since` et `until`.

# Connexion à Freshdesk
<a name="connecting-to-data-freshdesk"></a>

Freshdesk est un logiciel de support client cloud qui est à la fois riche en fonctionnalités et facile à utiliser. Grâce aux multiples canaux d’assistance disponibles, notamment le chat en direct, le courrier électronique, le téléphone et les médias sociaux, vous pouvez aider les clients par le biais de leur méthode de communication préférée. Si vous êtes un utilisateur de Freshdesk, vous pouvez vous connecter AWS Glue à votre compte Freshdesk. Vous pouvez utiliser Freshdesk comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données de Freshdesk vers AWS des services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Freshdesk](freshdesk-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](freshdesk-configuring-iam-permissions.md)
+ [Configuration de Freshdesk](freshdesk-configuring.md)
+ [Configuration de connexions Freshdesk](freshdesk-configuring-connections.md)
+ [Lecture à partir d’entités Freshdesk](freshdesk-reading-from-entities.md)
+ [Options de connexion Freshdesk](freshdesk-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Freshdesk](freshdesk-connector-limitations.md)

# AWS Glue support pour Freshdesk
<a name="freshdesk-support"></a>

AWS Glue prend en charge Freshdesk comme suit :

**Prise en charge en tant que source ?**  
Oui : synchrone et asynchrone. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Freshdesk.

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

**Versions de l’API Freshdesk prises en charge**  
Les versions d’API Freshdesk suivantes sont prises en charge :
+   v2

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="freshdesk-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Freshdesk
<a name="freshdesk-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Freshdesk, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Un compte Freshdesk. Vous pouvez choisir entre les éditions Free, Growth, Pro ou Enterprise.
+ Clé d’API d’un utilisateur de Freshdesk.

# Configuration de connexions Freshdesk
<a name="freshdesk-configuring-connections"></a>

Freshdesk prend en charge l’authentification personnalisée.

Pour consulter la documentation publique de Freshdesk sur la génération des clés d’API requises pour une authentification personnalisée, consultez [Freshdesk authentication](https://developer.freshdesk.com/api/#authentication).

Voici les étapes à suivre pour configurer la connexion Freshdesk :
+ Dans AWS Secrets Manager, créez un secret avec les informations suivantes :
  + Pour l’application connectée gérée par le client : le secret doit contenir la clé d’API de l’application connectée avec `apiKey` comme clé. Notez que vous devez créer un secret par connexion dans AWS Glue.
+ Dans le AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous :
  + Lorsque vous sélectionnez une **source de données**, sélectionnez Freshdesk.
  + Indiquez l’`INSTANCE_URL` de l’instance Freshdesk à laquelle vous souhaitez vous connecter.
  + Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------
  + Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.
  + Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.
+ Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.
+ Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**.

# Lecture à partir d’entités Freshdesk
<a name="freshdesk-reading-from-entities"></a>

**Prérequis**

Un objet Freshdesk à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source de synchronisation** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Agents | Oui | Oui | Non | Oui | Oui | 
| Business Hours | Non | Oui | Non | Oui | Oui | 
| Société | Oui | Oui | Non | Oui | Oui | 
| Contacts | Oui | Oui | Non | Oui | Oui | 
| Conversations | Non | Oui | Non | Oui | Non | 
| Email Configs | Non | Oui | Non | Oui | Non | 
| Email Inboxes | Oui | Oui | Oui | Oui | Non | 
| Forum Categories | Non | Oui | Non | Oui | Non | 
| Forums | Non | Oui | Non | Oui | Non | 
| Groupes | Non | Oui | Non | Oui | Non | 
| Produits | Non | Oui | Non | Oui | Non | 
| Roles | Non | Oui | Non | Oui | Non | 
| Satisfaction Ratings | Oui | Oui | Non | Oui | Non | 
| Skills | Non | Oui | Non | Oui | Non | 
| Solutions | Oui | Oui | Non | Oui | Non | 
| Enquêtes | Non | Oui | Non | Oui | Non | 
| Tickets | Oui | Oui | Oui | Oui | Oui | 
| Time Entries | Oui | Oui | Non | Oui | Non | 
| Rubriques | Non | Oui | Non | Oui | Non | 
| Topic Comments | Non | Oui | Non | Oui | Non | 

**Entités prises en charge pour la source asynchrone** :


| Entité | Version de l’API | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | --- | 
| Companies |   v2 | Non | Non | Non | Non | Non | 
| Contacts |   v2 | Non | Non | Non | Non | Non | 

**Exemple :**

```
freshdesk_read = glueContext.create_dynamic_frame.from_options(
    connection_type="freshdesk",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v2"
    }
```

**Détails des entités et des champs Freshdesk** :


| Entité | Champ | 
| --- | --- | 
| Agents | https://developers.freshdesk.com/api/\$1list\$1all\$1agents | 
| Business-hours | https://developers.freshdesk.com/api/\$1list\$1all\$1business\$1hours | 
| Commentaires | https://developers.freshdesk.com/api/\$1comment\$1attributess | 
| Société | https://developers.freshdesk.com/api/\$1companies | 
| Contacts | https://developers.freshdesk.com/api/\$1list\$1all\$1contacts | 
| Conversations | https://developers.freshdesk.com/api/\$1list\$1all\$1ticket\$1notes | 
| Email-configs | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1configs | 
| Email-inboxes | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1mailboxes | 
| Forum-categories | https://developers.freshdesk.com/api/\$1category\$1attributes | 
| Forums | https://developers.freshdesk.com/api/\$1forum\$1attributes | 
| Groupes | https://developers.freshdesk.com/api/\$1list\$1all\$1groups | 
| Produits | https://developers.freshdesk.com/api/\$1list\$1all\$1products | 
| Roles | https://developers.freshdesk.com/api/\$1list\$1all\$1roles | 
| Satisfaction-rating | https://developers.freshdesk.com/api/\$1view\$1all\$1satisfaction\$1ratingss | 
| Skills | https://developers.freshdesk.com/api/\$1list\$1all\$1skills | 
| Solutions | https://developers.freshdesk.com/api/\$1solution\$1content | 
| Enquêtes | https://developers.freshdesk.com/api/\$1list\$1all\$1survey | 
| Tickets | https://developers.freshdesk.com/api/\$1list\$1all\$1tickets | 
| Time-entries | https://developers.freshdesk.com/api/\$1list\$1all\$1time\$1entries | 
| Rubriques | https://developers.freshdesk.com/api/\$1topic\$1attributes | 

## Requêtes de partitionnement
<a name="freshdesk-reading-partitioning-queries"></a>

**Partitionnement basé sur des filtres** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
freshDesk_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshdesk",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v2",
         "PARTITION_FIELD": "Created_Time"
         "LOWER_BOUND": " 2024-10-27T23:16:08Z“
         "UPPER_BOUND": " 2024-10-27T23:16:08Z"
         "NUM_PARTITIONS": "10"
     }
```

# Options de connexion Freshdesk
<a name="freshdesk-connection-options"></a>

Les options de connexion pour Freshdesk sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Freshdesk.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Freshdesk que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Une URL d’instance Freshdesk valide.
+ `TRANSFER_MODE`(Chaîne) - Utilisé pour indiquer si le type de traitement tel que `SYNC` ou `ASYNC` est défini sur `SYNC` par défaut. (Facultatif)

# Restrictions et remarques relatives au connecteur Freshdesk
<a name="freshdesk-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Freshdesk :
+ Les entités `Company`, `Contacts` et `Tickets` avec filtrage ont des limites de pagination. Elles ne renvoient que 30 enregistrements par page et la valeur de la page peut être définie jusqu’à 10 (pour un maximum de 300 enregistrements).
+ L’entité `Tickets` ne récupère pas les enregistrements datant de plus de 30 jours.
+ Les entités `Company`, `Contacts` et `Tickets` prennent en charge le type de données « Date » dans le filtrage. Vous devez sélectionner les fréquences de déclenchement « Quotidiennes » et suivantes pour ces trois entités. Si vous sélectionnez « Minutes » ou « Horaire », vous risquez de dupliquer les données. De plus, lors de la sélection de ces champs pour le filtrage, seule la valeur de date doit être sélectionnée, car elle ne prendra en compte que la partie Date de l’horodatage sélectionné.
+ Le nombre d’appels d’API par minute dépend de votre forfait. Cette limite est appliquée à l’ensemble du compte, indépendamment de facteurs tels que le nombre d’agents ou d’adresses IP utilisés pour passer les appels. Pour tous les utilisateurs de la version d’essai, la limite d’API par défaut est de 50 appels/minute. Pour plus d’informations, consultez [Freshdesk](https://developer.freshdesk.com/api/#ratelimit).
+ Pour chaque entité, un seul Export/Async Job est traité à la fois. Une nouvelle tâche ne sera traitée que lorsque la tâche existante aura abouti ou échoué. Pour plus d’informations, consultez [Freshdesk](https://developers.freshdesk.com/api/#export_contact).
+ Les champs suivants sont pris en charge pour les appels d'API de synchronisation, mais ne doivent pas supported/allowed être transmis dans le corps de la demande d'API asynchrone.
  + id
  + created\$1at
  + updated\$1at
  + updated\$1since
  + actif
  + company\$1id
  + other\$1companies
  + avatar
  + view\$1all\$1tickets
  + deleted
  + other\$1emails
  + state
  + balise
  + tags

# Connexion à Freshsales
<a name="connecting-to-data-freshsales"></a>

Freshsales est un CRM intuitif qui aide les commerciaux à éliminer les incertitudes liées aux ventes. Grâce au téléphone, au courrier électronique, aux tâches, aux rendez-vous et aux notes intégrés, les commerciaux n’ont pas à passer d’un onglet à l’autre pour suivre les prospects. Vous pouvez mieux gérer vos transactions grâce à la vue du pipeline et faire en sorte qu’un plus grand nombre de transactions soient conclues. Si vous êtes un utilisateur de Freshsales, vous pouvez vous connecter AWS Glue à votre compte Freshsales. Vous pouvez utiliser Freshsales comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer les données de Freshsales vers des AWS services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Freshsales](freshsales-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](freshsales-configuring-iam-permissions.md)
+ [Configuration de Freshsales](freshsales-configuring.md)
+ [Configuration de connexions Freshsales](freshsales-configuring-connections.md)
+ [Lecture à partir d’entités Freshsales](freshsales-reading-from-entities.md)
+ [Options de connexion Freshsales](freshsales-connection-options.md)
+ [Restrictions de Freshsales](freshsales-connection-limitations.md)

# AWS Glue support pour Freshsales
<a name="freshsales-support"></a>

AWS Glue soutient Freshsales comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Freshsales.

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

**Versions de l’API Freshsales prises en charge**  
Les versions d’API Freshsales suivantes sont prises en charge :
+ v1.0

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="freshsales-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Freshsales
<a name="freshsales-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Freshsales, vous devez répondre aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Freshsales.
+ Vous disposez d’une clé d’API utilisateur.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Freshsales. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Freshsales.

# Configuration de connexions Freshsales
<a name="freshsales-configuring-connections"></a>

Freshsales prend en charge l’authentification personnalisée.

Pour consulter la documentation publique de Freshsales sur la génération des clés d’API requises pour une authentification personnalisée, consultez [Authentication](https://developer.freshsales.io/api/#authentication).

Pour configurer une connexion Freshsales :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir la clé d’API de l’application connectée avec `apiSecretKey` comme clé. Le secret doit également contenir une autre paire clé-valeur avec `apiKey` comme clé et `token` comme valeur.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Freshsales.

   1. Indiquez l’`INSTANCE_URL` du compte Freshsales auquel vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Freshsales
<a name="freshsales-reading-from-entities"></a>

**Prérequis**

Un objet Freshsales à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Comptes | Oui | Oui | Oui | Oui | Oui | 
| Contacts | Oui | Oui | Oui | Oui | Oui | 

**Exemple :**

```
freshSales_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshsales",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v1.0"
     }
```

**Détails des entités et des champs Freshsales** :

Freshsales fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique pour les entités prises en charge. Par conséquent, la prise en charge des opérateurs est capturée au niveau du type de données.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/freshsales-reading-from-entities.html)

## Requêtes de partitionnement
<a name="freshsales-reading-partitioning-queries"></a>

**Partitionnement basé sur des filtres** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons la valeur au format ISO.

  Exemples de valeurs valides :

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
freshSales_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshsales",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v1",
         "PARTITION_FIELD": "Created_Time"
         "LOWER_BOUND": " 2024-10-15T21:16:25Z"
         "UPPER_BOUND": " 2024-10-20T21:25:50Z"
         "NUM_PARTITIONS": "10"
     }
```

# Options de connexion Freshsales
<a name="freshsales-connection-options"></a>

Les options de connexion pour Freshsales sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Freshsales.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Freshsales que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - Utilisé pour la lecture. Une URL d’instance Freshsales valide.

# Restrictions de Freshsales
<a name="freshsales-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent Freshsales :
+ Dans Freshsales, la limite de débit d’API est de 1 000 demandes d’API par heure et par compte (consultez [Errors](https://developer.freshsales.io/api/#error)). Cependant, cette limite est extensible avec l’abonnement Enterprise (consultez le [comparatif des forfaits](https://www.freshworks.com/crm/pricing-compare/)).

# Connexion à Google Ads
<a name="connecting-to-googleads"></a>

 L’API Google Ads est l’interface programmatique de Google Ads, utilisée pour gérer des comptes et des campagnes Google Ads volumineux ou complexes. Si vous utilisez Google Ads, vous pouvez vous connecter AWS Glue à votre compte Google Ads. Vous pouvez ensuite utiliser Google Ads comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Google Ads et AWS des services ou d'autres applications compatibles. 

**Topics**
+ [AWS Glue support pour Google Ads](googleads-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](googleads-configuring-iam-permissions.md)
+ [Configuration de Google Ads](googleads-configuring.md)
+ [Configuration des connexions Google Ads](googleads-configuring-connections.md)
+ [Lecture à partir d’entités Google Ads](googleads-reading-from-entities.md)
+ [Options de connexion Google Ads](googleads-connection-options.md)
+ [Création d’un compte Google Ads](googleads-create-account.md)
+ [Limitations](googleads-connector-limitations.md)

# AWS Glue support pour Google Ads
<a name="googleads-support"></a>

AWS Glue prend en charge Google Ads comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Google Ads.

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

**Versions de l’API Google Ads prises en charge**  
v18

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="googleads-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Google Ads
<a name="googleads-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Google Ads, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="googleads-configuring-min-requirements"></a>
+  Vous disposez d’un compte Google Ads avec e-mail et mot de passe. Pour plus d’informations sur la création d’un compte, consultez [Creating a Google Ads account](googleads-create-account.md). 
+  Votre compte Google Ads est activé pour accéder à l’API. Toute utilisation de l’API Google Ads est disponible sans frais supplémentaires. 
+  Votre compte Google Ads vous permet d’installer des applications connectées. Si vous n’avez pas accès à cette fonctionnalité, contactez votre administrateur Google Ads. 

 Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Google Ads. 

# Configuration des connexions Google Ads
<a name="googleads-configuring-connections"></a>

 Google Ads prend en charge les types de `AUTHORIZATION_CODE` subventions pour OAuth2. 

 Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Google Ads où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Google Ads. 

 Les utilisateurs peuvent choisir de créer leur propre application connectée dans Google Ads et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Google Ads pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 

 Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

 Pour plus d'informations, consultez la [documentation publique de Google Ads sur la création d'une application connectée pour le OAuth flux de code d'autorisation](https://developers.google.com/workspace/guides/create-credentials). 

Pour configurer une connexion Google Ads :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour le type de AuthorizationCode subvention : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **Type de connexion**, sélectionnez Google Ads.

   1. Indiquez l’`developer token` de Google Ads à laquelle vous souhaitez vous connecter.

   1. Indiquez le `MANAGER ID` de Google Ads si vous souhaitez vous connecter en tant que responsable.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Google Ads
<a name="googleads-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Google Ads à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Ad Group Ad | Oui | Oui | Oui | Non | Oui | 
| Ad Group | Oui | Oui | Oui | Non | Oui | 
| Campaign Budget | Oui | Oui | Oui | Oui | Oui | 
| Account Budget | Oui | Non | Oui | Oui | Non | 
| Campaign | Oui | Oui | Oui | Oui | Oui | 
| Compte | Oui | Non | Oui | Non | Non | 

 **Exemple** 

```
googleAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16"
    }
```

 **Détails des entités et des champs Google Ads** 


| Entité | Champ | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | --- | 
| Compte | resourceName | String | \$1=, = | 
| Compte | callReportingEnabled | Booléen | \$1=, = | 
| Compte | callConversionReportingActivé | Booléen | \$1=, = | 
| Compte | callConversionAction | String | \$1=, = | 
| Compte | conversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | crossAccountConversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | payPerConversionEligibilityFailureReasons | List |  | 
| Compte | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | currencyCode | String | \$1=, =, LIKE | 
| Compte | timeZone | String | \$1=, =, LIKE | 
| Compte | autoTaggingEnabled | Booléen | \$1=, = | 
| Compte | hasPartnersBadge | Booléen | \$1=, = | 
| Compte | manager | Booléen | \$1=, = | 
| Compte | testAccount | Booléen | \$1=, = | 
| Compte | date | Date | BETWEEN, =, <, >, <=, >= | 
| Compte | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | acceptedCustomerDataTermes | Booléen |  | 
| Compte | conversionTrackingStatus | String | \$1=, =, LIKE | 
| Compte | enhancedConversionsForLeadsEnabled | Booléen |  | 
| Compte | googleAdsConversionClient | String |  | 
| Compte | status | String | \$1=, = | 
| Compte | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Compte | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Compte | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Compte | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Compte | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Compte | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | costPerAllConversions | Double | \$1=, =, <, > | 
| Compte | costPerConversion | Double | \$1=, =, <, > | 
| Compte | conversions | Double | \$1=, =, <, > | 
| Compte | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Compte | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | topImpressionPercentage | Double | \$1=, =, <, > | 
| Compte | averageCpc | Double | \$1=, =, <, > | 
| Compte | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Compte | averageCost | Double | \$1=, =, <, > | 
| Compte | ctr | Double | \$1=, =, <, > | 
| Compte | activeViewCtr | Double | \$1=, =, <, > | 
| Compte | searchImpressionShare | Double | \$1=, =, <, > | 
| Compte | conversionAction | String | \$1=, = | 
| Compte | conversionActionCategory | String | \$1=, = | 
| Compte | conversionActionName | String | \$1=, =, LIKE | 
| Account Budget | resourceName | String | \$1=, = | 
| Account Budget | status | String | \$1=, = | 
| Account Budget | proposedEndTimeType | String | \$1=, = | 
| Account Budget | approvedEndTimeType | String | \$1=, = | 
| Account Budget | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | billingSetup | String | \$1=, = | 
| Account Budget | name | String | \$1=, =, LIKE | 
| Account Budget | approvedStartDateHeure |  DateTime | BETWEEN, =, <, >, <=, >= | 
| Account Budget | proposedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | approvedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | adjustedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Account Budget | amountServedMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | resourceName | String | \$1=, =, LIKE | 
| Ad Group | status | String | \$1=, =, LIKE | 
| Ad Group | type | String | \$1=, =, LIKE | 
| Ad Group | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | name | String | \$1=, =, LIKE | 
| Ad Group | campaign | String | \$1=, = | 
| Ad Group | cpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | targetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | cpmBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | cpvBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | targetCpmMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | effectiveTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | date | Date | BETWEEN, =, <, >, <=, >= | 
| Ad Group | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | useAudienceGrouped | Booléen | \$1=, = | 
| Ad Group | effectiveCpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group | averageCost | Double | \$1=, =, <, > | 
| Ad Group | costPerAllConversions | Double | \$1=, =, <, > | 
| Ad Group | costPerConversion | Double | \$1=, =, <, > | 
| Ad Group | averagePageViews | Double | \$1=, =, <, > | 
| Ad Group | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | allConversions | Double | \$1=, =, <, > | 
| Ad Group | averageCpc | Double | \$1=, =, <, > | 
| Ad Group | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Ad Group | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group | topImpressionPercentage | Double | \$1=, =, <, > | 
| Ad Group | activeViewCtr | Double | \$1=, =, <, > | 
| Ad Group | ctr | Double | \$1=, =, <, > | 
| Ad Group | searchTopImpressionPartagez | Double | \$1=, =, <, > | 
| Ad Group | searchImpressionShare | Double | \$1=, =, <, > | 
| Ad Group | searchAbsoluteTopImpressionShare | Double | \$1=, =, <, > | 
| Ad Group | relativeCtr | Double | \$1=, =, <, > | 
| Ad Group | conversionAction | String | \$1=, = | 
| Ad Group | conversionActionCategory | String | \$1=, = | 
| Ad Group | conversionActionName | String | \$1=, =, LIKE | 
| Ad Group | updateMask | String |  | 
| Ad Group | créer | Struct |  | 
| Ad Group | mise à jour | Struct |  | 
| Ad Group | primaryStatus | String | \$1=, = | 
| Ad Group | primaryStatusReasons | List |  | 
| Ad Group Ad | resourceName | String | \$1=, = | 
| Ad Group Ad | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | status | String | \$1=, = | 
| Ad Group Ad | labels | List |  | 
| Ad Group Ad | adGroup | String | \$1=, = | 
| Ad Group Ad | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | approvalStatus | String | \$1=, = | 
| Ad Group Ad | reviewStatus | String | \$1=, = | 
| Ad Group Ad | adStrength | String | \$1=, = | 
| Ad Group Ad | type | String | \$1=, = | 
| Ad Group Ad | businessName | String | \$1=, =, LIKE | 
| Ad Group Ad | date | Date | BETWEEN, =, <, >, <=, >= | 
| Ad Group Ad | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| Ad Group Ad | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | averageCost | Double | \$1=, =, <, > | 
| Ad Group Ad | costPerAllConversions | Double | \$1=, =, <, > | 
| Ad Group Ad | costPerConversion | Double | \$1=, =, <, > | 
| Ad Group Ad | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | averagePageViews | Double | \$1=, =, <, > | 
| Ad Group Ad | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | allConversions | Double | \$1=, =, <, > | 
| Ad Group Ad | averageCpc | Double | \$1=, =, <, > | 
| Ad Group Ad | topImpressionPercentage | Double | \$1=, =, <, > | 
| Ad Group Ad | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Ad Group Ad | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Ad Group Ad | activeViewCtr | Double | \$1=, =, <, > | 
| Ad Group Ad | ctr | Double | \$1=, =, <, > | 
| Ad Group Ad | conversionAction | String | \$1=, = | 
| Ad Group Ad | conversionActionCategory | String | \$1=, = | 
| Ad Group Ad | conversionActionName | String | \$1=, =, LIKE | 
| Ad Group Ad | updateMask | String |  | 
| Ad Group Ad | créer | Struct |  | 
| Ad Group Ad | mise à jour | Struct |  | 
| Ad Group Ad | policyValidationParameter | Struct |  | 
| Ad Group Ad | primaryStatus | String | \$1=, = | 
| Ad Group Ad | primaryStatusReasons | List |  | 
| Campaign | resourceName | String | \$1=, = | 
| Campaign | status | String | \$1=, = | 
| Campaign | baseCampaign | String | \$1=, = | 
| Campaign | name | String | \$1=, =, LIKE | 
| Campaign | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | campaignBudget | String | \$1=, =, LIKE | 
| Campaign | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign | adServingOptimizationÉtat | String | \$1=, = | 
| Campaign | advertisingChannelType | String | \$1=, = | 
| Campaign | advertisingChannelSubType | String | \$1=, = | 
| Campaign | experimentType | String | \$1=, = | 
| Campaign | servingStatus | String | \$1=, = | 
| Campaign | biddingStrategyType | String | \$1=, = | 
| Campaign | domainName | String | \$1=, =, LIKE | 
| Campaign | languageCode | String | \$1=, =, LIKE | 
| Campaign | useSuppliedUrlsUniquement | Booléen | \$1=, = | 
| Campaign | positiveGeoTargetType | String | \$1=, = | 
| Campaign | negativeGeoTargetType | String | \$1=, = | 
| Campaign | paymentMode | String | \$1=, = | 
| Campaign | optimizationGoalTypes | List |  | 
| Campaign | date | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign | averageCost | Double |  | 
| Campaign | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | useAudienceGrouped | Booléen | \$1=, = | 
| Campaign | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | costPerAllConversions | Double | \$1=, =, <, > | 
| Campaign | costPerConversion | Double | \$1=, =, <, > | 
| Campaign | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | publisherPurchasedClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | averagePageViews | Double | \$1=, =, <, > | 
| Campaign | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Campaign | conversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| Campaign | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| Campaign | allConversions | Double | \$1=, =, <, > | 
| Campaign | absoluteTopImpressionPourcentage | Double | \$1=, =, <, > | 
| Campaign | searchAbsoluteTopImpressionShare | Double | \$1=, =, <, > | 
| Campaign | averageCpc | Double | \$1=, =, <, > | 
| Campaign | searchImpressionShare | Double | \$1=, =, <, > | 
| Campaign | searchTopImpressionPartagez | Double | \$1=, =, <, > | 
| Campaign | activeViewCtr | Double | \$1=, =, <, > | 
| Campaign | ctr | Double | \$1=, =, <, > | 
| Campaign | relativeCtr | Double | \$1=, =, <, > | 
| Campaign | updateMask | String |  | 
| Campaign | créer | Struct |  | 
| Campaign | mise à jour | Struct |  | 
| Campaign Budget | resourceName | String | \$1=, = | 
| Campaign Budget | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | status | String | \$1=, = | 
| Campaign Budget | deliveryMethod | String | \$1=, = | 
| Campaign Budget | point | String | \$1=, = | 
| Campaign Budget | type | String | \$1=, = | 
| Campaign Budget | name | String | \$1=, =, LIKE | 
| Campaign Budget | amountMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | explicitlyShared | Booléen | \$1=, = | 
| Campaign Budget | referenceCount | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | hasRecommendedBudget | Booléen | \$1=, = | 
| Campaign Budget | date | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign Budget | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign Budget | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| Campaign Budget | maximizeConversionValueTargetRoas | Double | \$1=, =, <, > | 
| Campaign Budget | maximizeConversionsTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | selectiveOptimizationConversionActions | String |  | 
| Campaign Budget | averageCost | Double | \$1=, =, <, > | 
| Campaign Budget | costPerAllConversions | Double | \$1=, =, <, > | 
| Campaign Budget | costPerConversion | Double | \$1=, =, <, > | 
| Campaign Budget | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | clicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | allConversions | Double | \$1=, =, <, > | 
| Campaign Budget | valuePerAllConversions | Double | \$1=, =, <, > | 
| Campaign Budget | averageCpc | Double | \$1=, =, <, > | 
| Campaign Budget | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| Campaign Budget | ctr | Double | \$1=, =, <, > | 
| Campaign Budget | updateMask | String |  | 
| Campaign Budget | créer | Struct |  | 
| Campaign Budget | mise à jour | Struct |  | 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau suivant. 


| Nom de l'entité | Champ de partitionnement | Type de données | 
| --- | --- | --- | 
| Ad Group Ad | date | Date | 
| Ad Group | date | Date | 
| Campaign | date | Date | 
| Campaign Budget | date | Date | 

 **Exemple** 

```
googleads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16",
        "PARTITION_FIELD": "date"
        "LOWER_BOUND": "2024-01-01"
        "UPPER_BOUND": "2024-06-05"
        "NUM_PARTITIONS": "10"
    }
)
```

# Options de connexion Google Ads
<a name="googleads-connection-options"></a>

Les options de connexion pour Google Ads sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Google Ads. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Google Ads que vous souhaitez utiliser. Exemple : v16. 
+  `DEVELOPER_TOKEN`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Nécessaire d’authentifier le développeur ou l’application qui envoie des demandes à l’API. 
+  `MANAGER_ID`(Chaîne) : utilisé pour la lecture/l’écriture. Identifiant unique qui vous permet de gérer plusieurs comptes Google Ads. Il s’agit de l’identifiant client du responsable autorisé. Si vous accédez au compte client par le biais d’un compte de gestion, le `MANAGER_ID` est obligatoire. Pour de plus amples informations, veuillez consulter [login-customer-id](https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid). 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Création d’un compte Google Ads
<a name="googleads-create-account"></a>

1.  Connectez-vous au [compte de développeur Google Ads](https://console.cloud.google.com) à l'aide de vos informations d'identification, puis accédez à \$1MyProject.   
![\[La capture d’écran montre l’écran de bienvenue permettant de se connecter au compte de développeur Google Ads.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-log-in-developer-account.png)

1.  Choisissez **Nouveau projet** et fournissez les informations requises pour créer un projet Google si aucune application n’y est enregistrée.   
![\[La capture d’écran montre la page Sélectionner un projet. Choisissez Nouveau projet dans le coin supérieur droit.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-new-project.png)  
![\[La capture d’écran montre la fenêtre Nouveau projet qui permet de saisir un nom de projet et de choisir un emplacement.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-new-project-name-location.png)

1.  Choisissez l'**onglet Navigation**, puis **API et paramètres**, et **Créer un identifiant client**, **ClientSecret**qui nécessitera une configuration supplémentaire pour créer une connexion entre AWS Glue et GoogleAds. Pour en savoir plus, consultez [Informations d’identification de l’API](https://console.cloud.google.com/apis/credentials).   
![\[La capture d'écran montre la page de configuration des services APIs et.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-apis-and-services.png)

1.  Choisissez **CREATE CREDENTIALS** et choisissez l'**ID OAuth client**.   
![\[La capture d'écran montre la page de configuration APIs et des services avec le menu déroulant Créer des informations d'identification et l'option d'identification du client Oauth surlignée.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-create-credentials.png)

1.  Sélectionnez **Application Web** comme **Type d’application**.   
![\[La capture d'écran montre la page Créer un identifiant OAuth client et le type d'application en tant qu'application Web.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-oauth-client-id-application-type.png)

1.  Sous **Redirection autorisée URIs**, ajoutez la OAuth redirection URIs et choisissez **Créer**. Vous pouvez ajouter plusieurs redirections URIs si nécessaire.   
![\[La capture d'écran montre la page Créer un identifiant OAuth client et la URIs section de redirection autorisée. Ici, ajoutez l'URI URIs et choisissez AJOUTER un URI si nécessaire. Choisissez CRÉER une fois que vous avez terminé.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-oauth-redirect-uris.png)

1.  Votre **identifiant client** et votre **secret client** seront générés lors de la création d'une connexion entre AWS Glue et Google Ads.   
![\[La capture d'écran montre la page Créer un identifiant OAuth client et la URIs section de redirection autorisée. Ici, ajoutez l'URI URIs et choisissez AJOUTER un URI si nécessaire. Choisissez CRÉER une fois que vous avez terminé.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-oauth-client-created.png)

1.  Ajoutez les portées en fonction des besoins de votre application, choisissez **l'écran de OAuth consentement**, fournissez les informations requises et ajoutez les portées en fonction des exigences.   
![\[La capture d’écran montre la page Mettre à jour les portées sélectionnées. Sélectionnez vos portées selon vos besoins.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/google-ads-selected-scopes.png)

# Limitations
<a name="googleads-connector-limitations"></a>

Les restrictions du connecteur Google Ads sont les suivantes :
+ `MANAGER_ID` est une entrée facultative lors de la création d’une connexion. Cependant, lorsque vous souhaitez accéder aux clients sous-jacents à un gestionnaire en particulier, `MANAGER_ID` est alors une entrée obligatoire. Le tableau ci-dessous explique les restrictions d’accès selon que `MANAGER_ID` est inclus ou non dans une connexion.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/googleads-connector-limitations.html)
+ Lorsqu’un compte de gestion est choisi comme objet, seul `Account` s’affichera comme sous-objet. Dans le connecteur Google Ads, les entités telles que les campagnes, les publicités, etc., sont extraites en fonction des comptes client individuels, et non du compte de gestion.
+ Vous ne pouvez pas extraire les métriques pour le compte de gestion. Vous pouvez plutôt extraire des métriques pour des comptes client individuels.
+  Chaque compte peut avoir jusqu’à 10 000 campagnes, y compris des campagnes actives et en suspens. Pour plus d’informations, consultez [Campagne par compte](https://support.google.com/google-ads/answer/6372658). 
+  Lorsque vous créez un rapport, si vous choisissez d’afficher certaines métriques, les lignes dont les métriques sélectionnées sont toutes nulles ne seront pas renvoyées. Pour plus d’informations, consultez [Zéro métrique](https://developers.google.com/google-ads/api/docs/reporting/zero-metrics?hl=en#exclude_zero_metrics_by_segmenting). 
+  Avec les champs suivants, le flux de mappage complet ne fonctionnera pas pour les entités Account, Ad Group et Ad Group Ad Group Ad, en particulier pour ConversionAction,, conversionActionCategory. conversionActionName Pour plus d’informations, consultez [Segment et métriques](https://developers.google.com/google-ads/api/docs/reporting/segmentation?hl=en#selectability_between_segments_and_metrics). 
+ Un filtre de plage de dates est obligatoire lorsque le champ `segments.date` est sélectionné.

# Connexion à Google Analytics 4
<a name="connecting-to-googleanalytics"></a>

 Google Analytics 4 est un service d’analytique qui suit les métriques concernant les interactions des visiteurs avec vos applications et vos sites Web et en génère des rapports. Ces métriques incluent les pages vues, les utilisateurs actifs et les événements. Si vous êtes un utilisateur de Google Analytics 4, vous pouvez vous connecter AWS Glue à votre compte Google Analytics 4. Vous pouvez ensuite utiliser Google Analytics 4 comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données de Google Analytics 4 vers AWS des services ou d'autres applications compatibles. 

**Topics**
+ [AWS Glue support pour Google Analytics 4](googleanalytics-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](googleanalytics-configuring-iam-permissions.md)
+ [Configuration de Google Analytics 4](googleanalytics-configuring.md)
+ [Configuration des connexions Google Analytics 4](googleanalytics-configuring-connections.md)
+ [Lecture à partir d’entités Google Analytics 4](googleanalytics-reading-from-entities.md)
+ [Options de connexion Google Analytics 4](googleanalytics-connection-options.md)
+ [Création d’un compte Google Analytics 4](googleanalytics-create-account.md)
+ [Étapes pour créer une application cliente et des informations d'identification OAuth 2.0](googleanalytics-client-app-oauth-credentials.md)
+ [Limites et considérations](googleanalytics-connector-limitations.md)

# AWS Glue support pour Google Analytics 4
<a name="googleanalytics-support"></a>

AWS Glue prend en charge Google Analytics 4 comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Google Analytics 4.

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

**Versions d’API Google Analytics 4 prises en charge**  
 v1 Bêta. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="googleanalytics-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Google Analytics 4
<a name="googleanalytics-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Google Analytics 4, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="googleanalytics-configuring-min-requirements"></a>
+  Vous disposez d’un compte Google Analytics avec un ou plusieurs flux de données qui collectent les données que vous souhaitez transférer. 
+  Vous disposez d’un compte Google Cloud Platform et d’un projet Google Cloud. 
+  Dans votre projet Google Cloud, vous avez activé les éléments suivants APIs : 
  +  API Google Analytics 
  +  API Google Analytics Admin 
  +  API Google Analytics Data 
+  Dans votre projet Google Cloud, vous avez configuré un écran de OAuth consentement pour les utilisateurs externes. Pour plus d'informations sur l'écran de OAuth consentement, consultez la section [Configuration de votre écran de OAuth consentement](https://support.google.com/cloud/answer/10311615#) dans l'aide de la console Google Cloud Platform. 
+  Dans votre projet Google Cloud, vous avez configuré un identifiant client OAuth 2.0. Pour plus d'informations, voir [Configuration de la OAuth version 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=). 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Google Analytics 4. 

# Configuration des connexions Google Analytics 4
<a name="googleanalytics-configuring-connections"></a>

Pour configurer une connexion à Google Sheet :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour le type de AuthorizationCode subvention : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **Type de connexion**, sélectionnez Google Analytics 4.

   1. Indiquez l’`INSTANCE_URL` de Google Analytics 4 à laquelle vous souhaitez vous connecter.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

 Type d’autorisation `AUTHORIZATION_CODE`. 

 Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirigera l'utilisateur vers Google Analytics 4 où il devra se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Google Analytics 4. 

 Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Google Analytics 4 et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Google Analytics 4 pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 

 Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

 Pour plus d'informations, consultez [Utiliser Auth 2.0 pour accéder à Google APIs](https://developers.google.com/identity/protocols/oauth2). 

# Lecture à partir d’entités Google Analytics 4
<a name="googleanalytics-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Google Analytics 4 à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Real-Time Report | Oui | Oui | Oui | Oui | Non | 
| Core Report | Oui | Oui | Oui | Oui | Oui | 

 **Exemple** 

```
googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
    connection_type="GoogleAnalytics4",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1beta"
    }
```

 **Détails des entités et des champs Google Analytics 4** 


| Entité | Champ | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | --- | 
| Core Report | Dynamic Fields |  |  | 
| Core Report | Champs de dimensions | String | LIKE, = | 
| Core Report | Champs de dimensions | Date | LIKE, = | 
| Core Report | Champs de métriques | String | >, <, >=, <=, = BETWEEN | 
| Core Report | Champs de dimensions et de métriques personnalisés | String | NA | 
| Real-Time Report | appVersion | String | LIKE, = | 
| Real-Time Report | audienceId | String | LIKE, = | 
| Real-Time Report | audienceName | String | LIKE, = | 
| Real-Time Report | city | String | LIKE, = | 
| Real-Time Report | cityId | String | LIKE, = | 
| Real-Time Report | country | String | LIKE, = | 
| Real-Time Report | countryId | String | LIKE, = | 
| Real-Time Report | deviceCategory | String | LIKE, = | 
| Real-Time Report | eventName | String | LIKE, = | 
| Real-Time Report | minutesAgo | String | LIKE, = | 
| Real-Time Report | platform | String | LIKE, = | 
| Real-Time Report | streamId | String | LIKE, = | 
| Real-Time Report | streamName | String | LIKE, = | 
| Real-Time Report | unifiedScreenName | String | LIKE, = | 
| Real-Time Report | activeUsers | String | >, <, >=, <=, = BETWEEN | 
| Real-Time Report | conversions | String | >, <, >=, <=, = BETWEEN | 
| Real-Time Report | eventCount | String | >, <, >=, <=, = BETWEEN | 
| Real-Time Report | screenPageViews | String | >, <, >=, <=, = BETWEEN | 

 **Requêtes de partitionnement** 

1.  **Partition basée sur un filtre** 

    Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
   +  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
   +  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

      Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
   +  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
   +  `NUM_PARTITIONS` : nombre de partitions. 

    **Exemple** 

   ```
   googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
       connection_type="GoogleAnalytics4",
       connection_options={
           "connectionName": "connectionName",
           "ENTITY_NAME": "entityName",
           "API_VERSION": "v1beta",
           "PARTITION_FIELD": "date"
           "LOWER_BOUND": "2022-01-01"
           "UPPER_BOUND": "2024-01-02"
           "NUM_PARTITIONS": "10"
       }
   ```

1.  **Partition basée sur des enregistrements** 

    Les options Spark supplémentaires `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
   +  `NUM_PARTITIONS` : nombre de partitions. 

    **Exemple** 

   ```
   googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
       connection_type="GoogleAnalytics4",
       connection_options={
           "connectionName": "connectionName",
           "ENTITY_NAME": "entityName",
           "API_VERSION": "v1beta",
           "NUM_PARTITIONS": "10"
       }
   ```

# Options de connexion Google Analytics 4
<a name="googleanalytics-connection-options"></a>

Les options de connexion pour Google Analytics 4 sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Google Analytics 4. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Google Analytics 4 que vous souhaitez utiliser. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 
+  `INSTANCE_URL`(Entier) - Utilisé pour la lecture. (Facultatif) 

# Création d’un compte Google Analytics 4
<a name="googleanalytics-create-account"></a>

 Suivez les étapes pour créer un compte Google Analytics 4 : [https://support.google.com/analytics/answer/9304153 ? hl=fr](https://support.google.com/analytics/answer/9304153?hl=en) 

# Étapes pour créer une application cliente et des informations d'identification OAuth 2.0
<a name="googleanalytics-client-app-oauth-credentials"></a>

 Pour plus d’informations, consultez la [documentation de l’API Google Analytics4](https://developers.google.com/analytics/devguides/reporting/data/v1). 

1.  Créez et configurez votre compte en vous connectant à votre [compte Google Analytics](https://analytics.google.com/) à l’aide de vos informations d’identification. Accédez ensuite à **Admin** > **Créer un compte**. 

1.  Créez une propriété pour le compte que vous avez créé en choisissant **Créer une propriété**. Configurez la propriété avec les informations requises. Une fois tous les détails fournis, l’identifiant de propriété correspondant sera généré. 

1.  Ajoutez un flux de données pour la propriété créée en choisissant **Flux de données** > **Ajouter un flux** > **Web** dans le menu déroulant. Indiquez les détails du site Web tels que l’URL et d’autres champs obligatoires. Après avoir fourni tous les détails, l’**identifiant de flux** et l’**identifiant de mesure** correspondants seront générés. 

1.  Configurez Google Analytics sur votre site Web en copiant l’identifiant de mesure et en l’ajoutant à la configuration de votre site Web. 

1.  Créez un rapport à partir de Google Analytics en accédant à **Rapports** et en générant le rapport requis. 

1.  Autorisez votre application en accédant à [console.cloud.google.com]( https://console.cloud.google.com) et en recherchant l’API de données Google Analytics, puis en activant l’API. 

   1.  Accédez à la page API et services et choisissez **Credentials** > **setup OAuth 2.0 Client IDs**. 

   1.  Fournissez l'URL de redirection en ajoutant l'URL de AWS Glue redirection. 

1.  Copiez l’ID client et le secret client, qui nécessiteront des informations supplémentaires pour créer une connexion. 

# Limites et considérations
<a name="googleanalytics-connector-limitations"></a>

Les restrictions du connecteur Google Analytics 4 sont les suivantes :
+  Pour l’entité Core Report, seuls neuf champs de dimension et dix champs de métriques sont autorisés à envoyer une demande. Si le nombre de champs autorisés est dépassé, la demande échouera et le connecteur enverra un message d’erreur. 
+  Pour l’entité Real-Time Report, seuls les champs de quatre dimensions sont autorisés à envoyer une demande. Si le nombre de champs autorisés est dépassé, la demande échouera et le connecteur enverra un message d’erreur. 
+  Google Analytics 4 est un outil gratuit en version bêta. Il y aura donc des mises à jour régulières sur les nouvelles fonctionnalités, l’amélioration des entités, l’ajout de nouveaux champs et le retrait des champs existants. 
+  Les champs Core Report étant remplis de manière dynamique, des champs seront ajoutés, rendus obsolètes et renommés, et l’imposition de nouvelles limites aux champs peut avoir lieu à tout moment. 
+  La date de début par défaut est de 30 jours et la date de fin est hier (un jour avant la date actuelle), et ces dates seront remplacées dans le code d’expression du filtre si l’utilisateur a défini la valeur OU si le flux est incrémentiel. 
+  Selon la documentation, l’entité Real-Time Report renvoie 10 000 enregistrements si la limite n’est pas transmise dans la demande, sinon l’API renvoie un maximum de 250 000 lignes par demande, quel que soit le nombre que vous demandez. Pour plus d'informations, voir [Méthode : propriétés. runRealtimeReport](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport)dans la documentation de Google Analytics. 
+  L’entité Real-Time Report ne prend pas en charge la partition basée sur les enregistrements, car elle ne prend pas en charge la pagination. De plus, elle ne prend pas en charge la partition basée sur les champs, car aucun des champs ne répond aux critères définis. 
+  La raison est la restriction du nombre de champs qui peuvent être transmis dans une demande. Nous définissons les champs de dimension et de métrique par défaut dans les limites indiquées. Si « Tout sélectionner » est sélectionné, seules les données de ces champs prédéterminés seront extraites. 
  +  Core Report 
    +  Conformément aux restrictions de SAAS, les demandes sont autorisées pour un maximum de 9 dimensions et de 10 métriques uniquement (c’est-à-dire qu’une demande peut contenir un maximum de 19 champs [métriques \$1 dimension]). 
    +  Conformément à l’implémentation : si l’utilisateur utilise SELECT\$1ALL ou sélectionne plus de 25 champs, les champs par défaut seront transmis dans la demande. 
    +  Les champs suivants sont considérés comme des champs par défaut pour Core Report : « country », « city », « EventName », « cityID », « browser », « date », « CurrencyCode », « DeviceCategory », « TransactionId », « active1 », « active28 », « active7 », DayUsers « ActiveUsers », « User », DayUsers « Engagement » Sessions », DayUsers « Nombre d'événements », averagePurchaseRevenue « Taux d'engagement »averageRevenuePer. averageSessionDuration 
  +  Real-Time Report 
    +  Conformément aux restrictions de SAAS, les demandes sont autorisées pour un maximum de quatre dimensions. 
    +  Si l’utilisateur transmet SELECT\$1ALL ou si les champs sélectionnés sont supérieurs à 15, les champs par défaut seront transmis dans la demande. 
    +  Les champs suivants sont considérés comme des champs par défaut pour le RealTime rapport : « country », « DeviceCategory », « city », « CityID », « ActiveUsers », « conversions », « EventCount », « ». screenPageViews 
+  Dans l’entité Core-Report, si la partition sur le champ de date et le filtre sur StartDate sont présents simultanément. Dans ce cas, la valeur dateRange est remplacée par la valeur du filtre startDate, mais comme la partition doit toujours être la priorité, le filtre startDate est supprimé si la partition sur le champ de date est déjà présente. 
+  Comme cohortSpecs fait désormais également partie du corps de la demande Core-Report, nous avons amélioré l’entité Core-Report actuelle pour inclure la prise en charge de l’attribut cohortSpec. Dans le corps de la demande cohortSpecs, presque tous les champs nécessitent une saisie par l’utilisateur. Pour résoudre ce problème, nous avons défini des valeurs par défaut pour celles-ci attributes/fields et avons prévu des dispositions permettant à l'utilisateur de remplacer ces valeurs si nécessaire.     
<a name="google-analytics-connector-limitations-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/googleanalytics-connector-limitations.html)
+  Vous pouvez également transmettre tous ces filtres ensemble en une seule fois ou avec d’autres filtres. 
  +  Exemple 1 : filterPredicate : startDate between "2023-05-09" and "2023-05-10" AND startOffset=1 AND endOffset=2 AND granularity="WEEKLY" 
  +  Example 2 : filterPredicate: city=“xyz” AND startOffset=1 AND endOffset=2 AND granularity="WEEKLY" 
+  Dans le cadre d’une demande de cohorte : 
  +  Si « cohortNthMonth » est transmis dans la demande, la valeur de granularité interne sera définie comme « MENSUELLE » 
  +  De même, si « cohortNthWeek » est transmis, la valeur de granularité sera définie comme « HEBDOMADAIRE » 
  +  Et, pour « cohortNthDay », la valeur de granularité sera définie comme « TOUS LES JOURS ». Pour en savoir plus, consultez : 
    +  [ https://developers.google.com/analytics/devguides/reporting/data/v1/advanced ](https://developers.google.com/analytics/devguides/reporting/data/v1/advanced) 
    +  [ https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec ](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec) 
  +  Il est permis à l’utilisateur de remplacer la valeur par défaut dateRange et de granularité. Reportez-vous au tableau suivant. 

# Connexion à Google BigQuery en AWS Glue Studio
<a name="connecting-to-data-bigquery"></a>

**Note**  
  Vous pouvez utiliser Spark AWS Glue pour lire et écrire dans des tables dans Google BigQuery dans les versions AWS Glue 4.0 et ultérieures. Pour configurer Google BigQuery avec des AWS Glue offres d'emploi par programmation, voir [BigQuery connexions](aws-glue-programming-etl-connect-bigquery-home.md).  

 AWS Glue Studiofournit une interface visuelle pour se connecter BigQuery, créer des tâches d'intégration de données et les exécuter sur le runtime Spark AWS Glue Studio sans serveur. 

 Lors de la création d'une connexion à Google BigQuery In AWS Glue Studio, une connexion unifiée est créée. Pour de plus amples informations, veuillez consulter [Considérations](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

 Au lieu de créer un secret avec les informations d'identification dans un format spécifique`{"credentials": "base64 encoded JSON"}`, désormais avec une connexion unifiée à Google BigQuery, vous pouvez créer un secret qui inclut directement le JSON de Google : BigQuery. `{"type": "service-account", ...}` 

**Topics**
+ [Création d'une BigQuery connexion](creating-bigquery-connection.md)
+ [Création d'un nœud BigQuery source](creating-bigquery-source-node.md)
+ [Création d'un nœud BigQuery cible](creating-bigquery-target-node.md)
+ [Options avancées](#creating-bigquery-connection-advanced-options)

# Création d'une BigQuery connexion
<a name="creating-bigquery-connection"></a>

Pour vous connecter à Google BigQuery depuis AWS Glue, vous devez créer et stocker vos informations d'identification Google Cloud Platform dans un AWS Secrets Manager secret, puis associer ce secret à une BigQuery AWS Glue connexion Google.

**Pour configurer une connexion à BigQuery :**

1. Dans Google Cloud Platform, créez et identifiez les ressources pertinentes :
   + Créez ou identifiez un projet GCP contenant des BigQuery tables auxquelles vous souhaitez vous connecter.
   + Activez l' BigQuery API. Pour plus d'informations, voir [Utiliser l'API BigQuery Storage Read pour lire les données des tables](https://cloud.google.com/bigquery/docs/reference/storage/#enabling_the_api).

1. Dans Google Cloud Platform, créez et exportez les informations d’identification du compte de service :

   Vous pouvez utiliser l'assistant BigQuery d'identification pour accélérer cette étape : [créer des informations d'identification](https://console.cloud.google.com/apis/credentials/wizard?api=bigquery.googleapis.com).

   Pour créer un compte de service dans GCP, suivez le didacticiel disponible dans la section [Créer des comptes de service](https://cloud.google.com/iam/docs/service-accounts-create).
   + Lorsque vous sélectionnez **un projet**, sélectionnez le projet contenant votre BigQuery tableau.
   + Lorsque vous sélectionnez des rôles GCP IAM pour votre compte de service, ajoutez ou créez un rôle qui accordera les autorisations appropriées pour exécuter des BigQuery tâches de lecture, d'écriture ou de création BigQuery de tables.

   Pour créer des informations d’identification pour votre compte de service, suivez le didacticiel disponible dans la section [Créer une clé de compte de service](https://cloud.google.com/iam/docs/keys-create-delete#creating).
   + Lorsque vous sélectionnez le type de clé, sélectionnez **JSON**.

   Vous devriez maintenant avoir téléchargé un fichier JSON contenant les informations d’identification de votre compte de service. Il doit ressembler à l’exemple ci-dessous.

   ```
   {
     "type": "service_account",
     "project_id": "*****",
     "private_key_id": "*****",
     "private_key": "*****",
     "client_email": "*****",
     "client_id": "*****",
     "auth_uri": "https://accounts.google.com/o/oauth2/auth",
     "token_uri": "https://oauth2.googleapis.com/token",
     "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
     "client_x509_cert_url": "*****",
     "universe_domain": "googleapis.com"
   }
   ```

1. Dans AWS Secrets Manager, créez un secret à l'aide du fichier d'informations d'identification que vous avez téléchargé. Vous pouvez choisir l’onglet **Texte brut** et coller le contenu du fichier au format JSON. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 

1. Dans le catalogue de AWS Glue données, créez une connexion en suivant les étapes décrites dans[https://docs.aws.amazon.com/glue/latest/dg/console-connections.html](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html). Après avoir créé la connexion, conservez le nom de la connexion pour l'étape suivante. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez Google BigQuery.
   + Lorsque vous sélectionnez un **AWS secret**, fournissez*secretName*.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire*secretName*.

1. Dans la configuration de votre AWS Glue tâche, fournissez *connectionName* une **connexion réseau supplémentaire**.

# Création d'un nœud BigQuery source
<a name="creating-bigquery-source-node"></a>

## Prérequis
<a name="creating-bigquery-source-node-prerequisites"></a>
+ Une connexion BigQuery de type AWS Glue Data Catalog
+ Un AWS Secrets Manager secret pour vos BigQuery informations d'identification Google, utilisées par la connexion.
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Le nom et le jeu de données de la table et du projet Google Cloud correspondant que vous souhaitez lire.

## Ajouter une source BigQuery de données
<a name="creating-bigquery-source-node-add"></a>

**Pour ajouter une **source de données — BigQuery** nœud :**

1.  Choisissez la connexion pour votre source BigQuery de données. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une BigQuery connexion**. Pour en savoir plus, consultez [ Overview of using connectors and connections ](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Identifiez les BigQuery données que vous souhaitez lire, puis choisissez une option **BigQuery Source**
   + Choisissez une seule table : cela vous permet d'extraire toutes les données d'une table.
   + Saisissez une requête personnalisée : cela vous permet de personnaliser les données extraites en fournissant une requête.

1.  Décrivez les données que vous souhaitez lire.

   **(Obligatoire) **Définissez le **Projet parent** sur le projet contenant votre table, ou sur un projet parent de facturation, le cas échéant.

   Si vous avez choisi une seule table, **attribuez à Table** le nom d'une BigQuery table Google au format suivant : `[dataset].[table]` 

   Si vous avez choisi une requête, indiquez-la à **Requête**. Dans votre requête, faites référence aux tables avec leur nom de table complet, au format suivant : `[project].[dataset].[tableName]`.

1.  Fournir des BigQuery propriétés 

   Si vous avez choisi une seule table, vous n'avez pas besoin de fournir de propriétés supplémentaires.

   Si vous avez choisi une requête, vous devez fournir les ** BigQuery propriétés Google personnalisées** suivantes :
   + Définissez `viewsEnabled` sur true.
   + Définissez `materializationDataset` sur un jeu de données. Le principal GCP authentifié par les informations d'identification fournies via la AWS Glue connexion doit être en mesure de créer des tables dans cet ensemble de données.

# Création d'un nœud BigQuery cible
<a name="creating-bigquery-target-node"></a>

## Prérequis
<a name="creating-bigquery-target-node-prerequisites"></a>
+ Une connexion BigQuery de type AWS Glue Data Catalog
+ Un AWS Secrets Manager secret pour vos BigQuery informations d'identification Google, utilisées par la connexion.
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Le nom et le jeu de données de la table et du projet Google Cloud correspondant dans lequel vous souhaitez écrire.

## Ajouter une cible BigQuery de données
<a name="creating-bigquery-target-node-add"></a>

**Pour ajouter une **cible de données — BigQuery** nœud :**

1.  Choisissez la connexion pour votre cible BigQuery de données. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une BigQuery connexion**. Pour en savoir plus, consultez [ Overview of using connectors and connections ](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Identifiez la BigQuery table dans laquelle vous souhaitez écrire, puis choisissez une **méthode d'écriture**.
   + Direct : écrit BigQuery directement sur le site à l'aide de l'API BigQuery Storage Write.
   + Indirect : écrit dans Google Cloud Storage, puis copie dans BigQuery.

   Si vous souhaitez écrire indirectement, indiquez un emplacement GCS de destination avec un **Compartiment GCS temporaire**. Vous devrez fournir une configuration supplémentaire dans votre AWS Glue connexion. Pour plus d'informations, consultez la section [Utilisation de l'écriture indirecte avec Google BigQuery](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html#aws-glue-programming-etl-connect-bigquery-indirect-write).

1.  Décrivez les données que vous souhaitez lire.

   **(Obligatoire) **Définissez le **Projet parent** sur le projet contenant votre table, ou sur un projet parent de facturation, le cas échéant.

   Si vous avez choisi une seule table, **attribuez à Table** le nom d'une BigQuery table Google au format suivant : `[dataset].[table]` 

## Options avancées
<a name="creating-bigquery-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d'un BigQuery nœud. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Voir [ BigQuery la référence des options de connexion](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html) dans le guide du AWS Glue développeur. 

# Connexion à Google Search Console
<a name="connecting-to-data-google-search-console"></a>

Google Search Console est une plateforme gratuite mise à la disposition des propriétaires de sites Web pour surveiller la façon dont Google voit le site et pour optimiser sa présence organique. Cela inclut l’affichage des domaines de référence, des performances des sites mobiles, des résultats de recherche enrichis et des requêtes et pages les plus fréquentées. Si vous utilisez la console de recherche Google, vous pouvez vous connecter AWS Glue à votre compte Google Search Console. Vous pouvez utiliser Google Search Console comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données de la console de recherche Google vers AWS des services ou d'autres applications compatibles.

**Topics**
+ [AWS Glue support pour Google Search Console](google-search-console-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](google-search-console-configuring-iam-permissions.md)
+ [Configuration de Google Search Console](google-search-console-configuring.md)
+ [Configuration des connexions Google Search Console](google-search-console-configuring-connections.md)
+ [Lecture à partir des entités Google Search Console](google-search-console-reading-from-entities.md)
+ [Options de connexion Google Search Console](google-search-console-connection-options.md)
+ [Restrictions de Google Search Console](google-search-console-limitations.md)

# AWS Glue support pour Google Search Console
<a name="google-search-console-support"></a>

AWS Glue prend en charge la console de recherche Google 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 de la console de recherche Google.

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

**Versions de l’API Google Search Console prises en charge**  
Les versions de l’API Google Search Console prises en charge sont les suivantes :
+ v3

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="google-search-console-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Google Search Console
<a name="google-search-console-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis la console de recherche Google, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="google-search-console-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Google Search Console.
+ Vous disposez d’un compte Google Cloud Platform et d’un projet Google Cloud.
+ Dans votre projet Google Cloud, vous avez activé l’API Google Search Console.
+ Dans votre projet Google Cloud, vous avez configuré un écran de OAuth consentement pour les utilisateurs externes. Pour plus d'informations, consultez la section [Configuration de votre écran de OAuth consentement](https://support.google.com/cloud/answer/10311615) dans l'aide de la console Google Cloud Platform.
+ Dans votre projet Google Cloud, vous avez configuré un identifiant client OAuth 2.0. Consultez la section [Configuration OAuth 2.0](https://support.google.com/cloud/answer/6158849) pour connaître les informations d'identification du client AWS Glue qui permettent d'accéder à vos données en toute sécurité lorsqu'il effectue des appels authentifiés vers votre compte.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Google Search Console. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Google Search Console.

# Configuration des connexions Google Search Console
<a name="google-search-console-configuring-connections"></a>

La console de recherche Google prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 Le type de subvention détermine le mode AWS Glue de communication avec la console de recherche Google pour demander l'accès à vos données.
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans la console de recherche Google et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers la console de recherche Google pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter la documentation publique de la console de recherche Google sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir [Utilisation de la OAuth version 2.0 pour accéder à Google APIs](https://developers.google.com/identity/protocols/oauth2).

Pour configurer une connexion Google Search Console :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **Type de connexion**, sélectionnez Google Search Console.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir des entités Google Search Console
<a name="google-search-console-reading-from-entities"></a>

**Prérequis**

Un objet Google Search Console à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Search Analytics | Oui | Oui | Non | Oui | Non | 
| Sites | Non | Non | Non | Oui | Non | 
| Sitemaps | Non | Non | Non | Oui | Non | 

**Exemple :**

```
googleSearchConsole_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesearchconsole",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v3"
    }
```

**Détails des entités et des champs Google Search Console** :

Google Search Console fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique pour les entités prises en charge. Par conséquent, la prise en charge des opérateurs est capturée au niveau du type de données.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/google-search-console-reading-from-entities.html)

**Note**  
Pour obtenir une liste actualisée des valeurs valides pour les filtres, consultez la documentation relative à l’API [Google Search Console](https://developers.google.com/webmaster-tools/v1/searchanalytics/query).  
Le champ `start_end_date` est une combinaison de `start_date` et de `end_date`.

## Requêtes de partitionnement
<a name="google-search-console-reading-partitioning-queries"></a>

Le partitionnement basé sur les filtres et le partitionnement basé sur les enregistrements ne sont pas pris en charge.

# Options de connexion Google Search Console
<a name="google-search-console-connection-options"></a>

Les options de connexion pour Google Search Console sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Google Search Console.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Google Search Console que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : "start\$1end\$1date between <30 days ago from current date> AND <yesterday: that is, 1 day ago from the current date>". Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : "start\$1end\$1date between <30 days ago from current date> AND <yesterday: that is, 1 day ago from the current date>" Utilisé pour la lecture. Requête Spark SQL complète.
+ `INSTANCE_URL`(Chaîne) - Utilisé pour la lecture. URL d’instance Google Search Console valide.

# Restrictions de Google Search Console
<a name="google-search-console-limitations"></a>

Voici les restrictions ou les remarques relatives à Google Search Console :
+ Google Search Console impose des limites d’utilisation à l’API. Pour plus d’informations, consultez [Limites d’utilisation](https://developers.google.com/webmaster-tools/limits).
+ Lorsqu’aucun filtre n’est appliqué à l’entité `Search Analytics`, l’API résume tous les clics, impressions, CTR et autres données pour l’ensemble de votre site dans la plage de dates par défaut spécifiée et les présente sous forme d’enregistrement unique.
+ Pour décomposer les données en segments plus petits, vous devez ajouter des dimensions à votre requête. Les dimensions indiquent à l’API comment vous souhaitez segmenter vos données.
  + Par exemple, si vous ajoutez `filterPredicate: dimensions="country"`, vous obtiendrez un enregistrement pour chaque pays dans lequel votre site a reçu du trafic au cours de la période spécifiée.
  + Exemple pour transmettre plusieurs dimensions : `filterPredicate: dimensions="country" AND dimensions="device" AND dimensions="page"`. Dans ce cas, vous obtiendrez une ligne dans la réponse pour chaque combinaison unique de ces trois dimensions.
+ Les valeurs par défaut sont définies pour les champs `start_end_date` et `dataState`.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/google-search-console-limitations.html)

# Connexion à Google Sheets
<a name="connecting-to-googlesheets"></a>

 Google Sheets est un tableur en ligne qui vous permet d'organiser de grandes quantités de données, de créer des rapports personnalisés, d'automatiser les calculs et de collaborer avec d'autres personnes. Si vous utilisez Google Sheets, vous pouvez vous connecter AWS Glue à votre compte Google Sheets. Vous pouvez ensuite utiliser Google Sheets comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Google Sheets et AWS des services ou d'autres applications compatibles. 

**Topics**
+ [AWS Glue support pour Google Sheets](googlesheets-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](googlesheets-configuring-iam-permissions.md)
+ [Configuration de Google Sheets](googlesheets-configuring.md)
+ [Configuration des connexions Google Sheets](googlesheets-configuring-connections.md)
+ [Lecture à partir d’entités Google Sheets](googlesheets-reading-from-entities.md)
+ [Options de connexion Google Sheets](googlesheets-connection-options.md)
+ [Configurer le OAuth flux de code d'autorisation pour Google Sheets](googlesheets-oauth-authorization.md)
+ [Restrictions du connecteur Google Sheets](googlesheets-connector-limitations.md)

# AWS Glue support pour Google Sheets
<a name="googlesheets-support"></a>

AWS Glue prend en charge Google Sheets comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Google Sheets.

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

**Versions de l’API Google Sheets prises en charge**  
 API Google Sheets v4 et API Google Drive v3 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="googlesheets-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Google Sheets
<a name="googlesheets-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Google Sheets, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="googlesheets-configuring-min-requirements"></a>
+ Vous disposez d’un compte Google Sheets avec e-mail et mot de passe.
+  Votre compte Google Sheets est activé pour accéder à l’API. Toute utilisation de l’API Google Sheets est disponible sans frais supplémentaires. 
+  Votre compte Google Sheets vous permet d’installer des applications connectées. Si vous n’avez pas accès à cette fonctionnalité, contactez votre administrateur Google Sheets. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Google Sheets. 

# Configuration des connexions Google Sheets
<a name="googlesheets-configuring-connections"></a>

Pour configurer une connexion à Google Sheet :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 

   1.  Pour le type de AuthorizationCode subvention : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Google Sheets.

   1. Indiquez l’environnement Google Sheets.

      1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

      1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

------
#### [ JSON ]

****  

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

------

 **Type d’autorisation AUTHORIZATION\$1CODE** 

 Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Google Sheets où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Google Sheets. 

 Les utilisateurs peuvent choisir de créer leur propre application connectée dans Google Sheets et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Google Sheets pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 

 Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

 Pour plus d'informations, consultez la [documentation publique de Google Sheets sur la création d'une application connectée pour le OAuth flux de code d'autorisation](https://developers.google.com/workspace/guides/create-credentials). 

# Lecture à partir d’entités Google Sheets
<a name="googlesheets-reading-from-entities"></a>

 **Conditions préalables** 
+  Un Google SpreadSheet que vous aimeriez lire. Vous aurez besoin de l' SpreadSheet ID et du TabName de la feuille de calcul. 

 **Détails des entités et des champs Google Sheets :** 


| Entité | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | 
| Feuille de calcul | String | N/A (le filtre n’est pas pris en charge) | 

 **Exemple** 

```
googleSheets_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesheets",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "{SpreadSheetID}#{SheetTabName}",
        "API_VERSION": "v4"
    }
```

 **Requêtes de partitionnement** 

 Pour Record Base Partitioning uniquement, vous pouvez fournir `NUM_PARTITIONS` en tant qu’options Spark supplémentaires si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 

 **Exemple avec `NUM_PARTITIONS`** 

```
googlesheets_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesheets",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "{SpreadSheetID}#{SheetTabName}",
        "API_VERSION": "v4",
        "NUM_PARTITIONS": "10"
    }
```

# Options de connexion Google Sheets
<a name="googlesheets-connection-options"></a>

Les options de connexion pour Google Sheets sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Les éléments `SpreadSheet ID` et `sheetTabName` dans Google Sheets. Exemple: `{SpreadSheetID}#{SheetTabName}`. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Google Sheets que vous souhaitez utiliser. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Configurer le OAuth flux de code d'autorisation pour Google Sheets
<a name="googlesheets-oauth-authorization"></a>

 **Conditions préalables** 
+  Un compte Google auquel vous pouvez vous connecter pour utiliser l’application Google Sheets. Dans votre compte Google, Google Sheets contient les données que vous souhaitez transférer. 
+  Un compte Google Cloud Platform et un projet Google Cloud. Consultez [Create Google Cloud Project](https://developers.google.com/workspace/guides/create-project) pour plus de détails. 

**Pour configurer votre compte Google et obtenir des informations d'identification OAuth 2.0 :**

1.  Une fois le projet Google Cloud configuré, activez l'API Google Sheets et Google Drive APIs dans le projet. Pour connaître les étapes permettant de les activer, consultez la section [Activer et désactiver APIs](https://support.google.com/googleapi/answer/6158841) dans l'aide de la console API pour Google Cloud Platform. 

1.  Configurez ensuite un écran de OAuth consentement pour les utilisateurs externes. Pour plus d'informations sur l'écran de OAuth consentement, consultez la section [Configuration de votre écran de OAuth consentement](https://support.google.com/cloud/answer/10311615#) dans l'aide de la console Google Cloud Platform. 

1.  Dans l'écran de OAuth consentement, ajoutez les champs d'application suivants : 
   +  [Le champ d’application en lecture seule de l’API Google Sheets](https://www.googleapis.com/auth/spreadsheets.readonly) 
   +  [Le champ d’application en lecture seule de l’API Google Drive](ttps://www.googleapis.com/auth/drive.readonly) 

    Pour plus d'informations sur ces étendues, consultez la section [Scopes OAuth 2.0 pour Google APIs](https://developers.google.com/identity/protocols/oauth2/scopes) dans la documentation de Google Identity. 

1.  Générez un identifiant client OAuth 2.0 et un secret. Pour connaître les étapes de création de cet ID client, consultez la section [Configuration de la OAuth version 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=) dans l'aide de la console Google Cloud Platform. 

    L'ID client OAuth 2.0 doit comporter une ou plusieurs redirections autorisées URLs. 

    URLs Les redirections ont le format suivant : 
   + https ://<aws-region>.console.aws.amazon. com/gluestudio/oauth 

1.  Notez l'ID client et le secret du client dans les paramètres de votre ID client OAuth 2.0. 

# Restrictions du connecteur Google Sheets
<a name="googlesheets-connector-limitations"></a>

Les restrictions du connecteur Google Sheets sont les suivantes :
+  Le connecteur Google Sheets ne prend pas en charge les filtres. Par conséquent, le partitionnement basé sur des filtres n’est pas pris en charge. 
+  Dans Record Base Partitioning, aucune disposition ne permet de renvoyer le nombre exact d’enregistrements par SAAS. Par conséquent, il peut exister des scénarios dans lesquels des fichiers contenant des enregistrements vides sont créés.
+  Étant donné que le connecteur Google Sheets ne prend pas en charge le partitionnement basé sur des filtres, `partitionField`, `lowerbound` et `upperbound` ne sont pas des options de connexion valides. Si ces options sont fournies, la AWS Glue tâche est censée échouer. 
+  Il est essentiel de désigner la première ligne de la feuille comme ligne d’en-tête pour éviter les problèmes de traitement des données. 
  +  Si elle n’est pas fournie, la ligne d’en-tête sera remplacée par `Unnamed:1`, `Unnamed:2`, `Unnamed:3`, etc., si la feuille contient des données dont la première ligne est vide. 
  +  Si une ligne d’en-tête est fournie, les noms de colonnes vides seront remplacés par `Unnamed:<number of column>`. Par exemple, si la ligne d’en-tête est `['ColumnName1', 'ColumnName2', '', '', 'ColumnName5', 'ColumnName6']`, elle deviendra `['ColumnName1', 'ColumnName2', 'Unnamed:3', 'Unnamed:4', 'ColumnName5', 'ColumnName6'].` 
+  Le connecteur Google Sheets ne prend pas en charge le transfert incrémentiel. 
+  Le connecteur Google Sheets ne prend en charge que le type de données String. 
+  Les en-têtes dupliqués d’une feuille seront renommés de manière itérative avec un suffixe numérique. Les noms d’en-tête fournis par l’utilisateur auront priorité lors du changement de nom des en-têtes dupliqués. Par exemple, si la ligne d’en-tête est ["Name", "", "Name", null, "Unnamed:6", ""], elle deviendra : ["Name", "Unnamed:2", "Name1", "Unnamed:4", "Unnamed:6", "Unnamed:61"]. 
+  Le connecteur Google Sheets ne prend pas en charge les espaces pour un élément tabName. 
+  Un nom de dossier ne peut pas contenir les caractères spéciaux suivants : 
  + \$1
  + /

# Connexion à HubSpot
<a name="connecting-to-data-hubspot"></a>

HubSpotLa plateforme CRM dispose de tous les outils et intégrations dont vous avez besoin pour le marketing, les ventes, la gestion de contenu et le service client.
+ Marketing Hub : un logiciel de marketing qui vous aide à augmenter le trafic, à convertir plus de visiteurs et à exécuter des campagnes de marketing entrant complètes à grande échelle.
+ Sales Hub : un logiciel CRM pour les ventes qui vous aide à obtenir des informations détaillées sur les prospects, à automatiser vos tâches et à conclure plus de ventes plus rapidement.
+ Service Hub : un logiciel de service client qui vous aide à entrer en contact avec les clients, à dépasser leurs attentes et à en faire des promoteurs capables de développer votre activité.
+ Operations Hub : un logiciel d’exploitation qui synchronise vos applications, nettoie et crée les données client, et qui automatise les processus, afin que tous vos systèmes et équipes fonctionnent mieux ensemble.

**Topics**
+ [AWS Glue support pour HubSpot](hubspot-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](hubspot-configuring-iam-permissions.md)
+ [Configuration HubSpot](hubspot-configuring.md)
+ [Configuration des HubSpot connexions](hubspot-configuring-connections.md)
+ [Lecture à partir d' HubSpot entités](hubspot-reading-from-entities.md)
+ [Écrire à des HubSpot entités](hubspot-writing-to-entities.md)
+ [HubSpot options de connexion](hubspot-connection-options.md)
+ [Limitations et remarques relatives au HubSpot connecteur](hubspot-connector-limitations.md)

# AWS Glue support pour HubSpot
<a name="hubspot-support"></a>

AWS Glue prend en charge HubSpot les éléments suivants :

**Prise en charge en tant que source ?**  
Oui : synchrone et asynchrone. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de HubSpot.

**Prise en charge en tant que cible ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour y écrire des données HubSpot.

**Versions HubSpot d'API prises en charge**  
Les versions HubSpot d'API suivantes sont prises en charge :
+ v1
+   v2
+ v3
+ v4

Pour la prise en charge des entités par version spécifique, consultez [Entités prises en charge pour la source de synchronisation](hubspot-reading-from-entities.md#sync-table) et [Entités prises en charge pour la source asynchrone](hubspot-reading-from-entities.md#async-table).

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="hubspot-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration HubSpot
<a name="hubspot-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis HubSpot, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Tu as un HubSpot compte. Pour de plus amples informations, veuillez consulter [Création d'un HubSpot compte](#hubspot-configuring-creating-hubspot-account).
+ Votre HubSpot compte est activé pour accéder à l'API.
+ Vous devez disposer d'une application sous votre compte de HubSpot développeur qui fournit les informations d'identification du client qui AWS Glue permettent d'accéder à vos données en toute sécurité lorsqu'il passe des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Création d'une application HubSpot pour développeurs](#hubspot-configuring-creating-hubspot-developer-app).

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre HubSpot compte. Pour les connexions classiques, vous n'avez rien d'autre à faire HubSpot.

## Création d'un HubSpot compte
<a name="hubspot-configuring-creating-hubspot-account"></a>

Pour créer un HubSpot compte, procédez comme suit :

1. Accédez à l'[ SignUp URL du HubSpot CRM](https://app.hubspot.com/login).

1. Saisissez votre adresse e-mail et choisissez **Vérifier l’adresse e-mail** (vous pouvez également choisir de vous inscrire avec un compte Google, Microsoft ou Apple).

1. Vérifiez dans votre boîte de réception le code de vérification provenant de HubSpot.

1. Saisissez le code de vérification à six chiffres et cliquez sur **Suivant**.

1. Saisissez un mot de passe et cliquez sur **Suivant**.

1. Saisissez votre prénom et votre nom de famille et cliquez sur **Suivant**, ou inscrivez-vous en utilisant le lien **S’inscrire avec Google**.

1. Saisissez votre secteur d’activité et cliquez sur **Suivant**.

1. Saisissez votre fonction et cliquez sur **Suivant**.

1. Saisissez le nom de votre entreprise et cliquez sur **Suivant**.

1. Sélectionnez la taille de votre entreprise (nombre d’employés) et cliquez sur **Suivant**.

1. Saisissez le site Web de votre entreprise et cliquez sur **Suivant**.

1. Sélectionnez l’endroit où vos données doivent être hébergées (États-Unis ou Europe) et cliquez sur **Créer un compte**.

1. Sélectionnez le but de la création de votre compte et cliquez sur **Suivant**.

1. Choisissez **Connect Google Account** ou choisissez d'ajouter vous-même des contacts pour les associer à votre HubSpot compte.

1. Connectez-vous à votre compte Google si vous avez choisi l'option **Connect Google Account** pour associer vos contacts et commencer à utiliser votre HubSpot compte.

## Création d'une application HubSpot pour développeurs
<a name="hubspot-configuring-creating-hubspot-developer-app"></a>

Les comptes de développeur d’applications servent à créer et à gérer des applications, des intégrations et des comptes de test pour développeurs. Vous pouvez également y créer et gérer des listes de la marketplace d’applications. Toutefois, les comptes de développeur d'applications et leurs comptes de test associés ne sont pas connectés à un HubSpot compte standard. Ils ne peuvent pas synchroniser les données ou les actifs depuis ou vers un autre HubSpot compte. Pour obtenir l’ID client et le secret client, vous devez créer un compte de développeur.

1. Accédez à https://developers.hubspot.com/

1. Choisissez **Créer un compte de développeur** et faites défiler l’écran vers le bas.

1. Il vous sera demandé si vous souhaitez créer un compte de développeurs d’applications, un compte d’application privé ou un compte d’environnement de test (sandbox) CMS Developer. Choisissez **Créer un compte de développeurs d’applications**.

1. Puisque vous avez déjà créé un compte auprès de cet utilisateur HubSpot, vous pouvez choisir **Continuer avec cet utilisateur**.

1. Cliquez sur **Démarrer l’inscription**.

1. Saisissez votre fonction et cliquez sur **Suivant**.

1. Donnez un nom à votre compte de développeur et cliquez sur **Suivant**, puis sur **Ignorer**.

1. Sélectionnez **Create App (Créer une application)**.

1. Une fois votre application créée, choisissez **Auth**.

1. Sous Auth, notez l’ID client et le secret client.

1. Ajoutez l'**URL de redirection** spécifique à votre région sous la forme https : *//<aws-region>* .console.aws.amazon. com/gluestudio/oauth. For example, add https://us-east-1.console.aws.amazon.com/gluestudio/oauthpour la région us-east-1.

1. Faites défiler la page vers le bas et trouvez des portées. Il existe deux types de portées que vous devez sélectionner sous les rubriques « CRM » et « Standard ».

1. Ajoutez les portées suivantes :

   ```
   content
   automation
   oauth
   crm.objects.owners.read
   forms
   tickets
   crm.objects.contacts.write
   e-commerce
   crm.schemas.custom.read
   crm.objects.custom.read
   sales-email-read
   crm.objects.custom.write
   crm.objects.companies.write
   crm.lists.write
   crm.objects.companies.read
   crm.lists.read
   crm.objects.deals.read
   crm.objects.deals.write
   crm.objects.contacts.read
   ```

1. Cliquez sur **Enregistrer** et votre compte de développeur est maintenant prêt à être utilisé.

1. Faites défiler la page ci-dessus pour trouver l’**ID client**.

1. Sur la même page, cliquez sur **Afficher** pour obtenir le **secret client**.

## Création d'un compte test pour HubSpot développeurs
<a name="hubspot-configuring-creating-hubspot-developer-test-account"></a>

Dans les comptes de développement d'applications, vous pouvez créer des comptes de test pour développeurs afin de tester des applications et des intégrations sans affecter les HubSpot données réelles. Les comptes de test pour développeurs ne reflètent pas les comptes de production, mais ont plutôt accès à un essai de 90 jours des versions Enterprise de Marketing, Sales, Service, CMS et Operations Hub, ce qui permet de tester la plupart des HubSpot outils et APIs.

1. Cliquez sur **Accueil**.

1. Cliquez sur **Créer un compte de test**.

1. Cliquez sur **Créer un compte de test d’application**.

1. Une nouvelle fenêtre s’affiche. Saisissez le nom du compte de test d’application et cliquez sur **Créer**.

   Votre compte de test d’application est à présent créé.

**Note**  
Le compte de développeur est lié aux activités de développement telles que l’intégration d’API, tandis que le compte de test d’application est utilisé pour voir les données créées ou extraites par le compte de développeur.

# Configuration des HubSpot connexions
<a name="hubspot-configuring-connections"></a>

HubSpot prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion doit fournir les informations OAuth associées telles que l'ID client et le secret client pour son application HubSpot cliente. La AWS Glue console redirigera l'utilisateur vers l' HubSpot endroit où il doit se connecter et autorisera AWS Glue les autorisations demandées pour accéder à son HubSpot instance.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée HubSpot et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés HubSpot vers pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter HubSpot la documentation publique sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez la section [Applications publiques](https://developers.hubspot.com/docs/api/creating-an-app).

Pour configurer une HubSpot connexion, procédez comme suit :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : Vous devez créer un secret pour la connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez HubSpot.

   1. Fournissez l' HubSpot environnement.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

1. Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**.

# Lecture à partir d' HubSpot entités
<a name="hubspot-reading-from-entities"></a>

**Prérequis**

Un HubSpot objet que vous aimeriez lire. Vous aurez besoin du nom de l’objet, comme contact ou task. Le tableau suivant présente les entités prises en charge pour la source de synchronisation.

## Entités prises en charge pour la source de synchronisation
<a name="sync-table"></a>


| Entité | Version de l’API | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | --- | 
| Campagnes | v1 | Non | Oui | Non | Oui | Non | 
| Companies | v3 | Oui | Oui | Oui | Oui | Oui | 
| Contacts | v3 | Oui | Oui | Oui | Oui | Oui | 
| Contact Lists | v1 | Non | Oui | Non | Oui | Non | 
| Deals | v3 | Oui | Oui | Oui | Oui | Oui | 
| CRM Pipeline (Deal Pipelines) | v1 | Non | Non | Non | Oui | Non | 
| Événements d'e-mail | v1 | Non | Oui | Non | Oui | Non | 
| Appels | v3 | Oui | Oui | Oui | Oui | Oui | 
| Remarques | v3 | Oui | Oui | Oui | Oui | Oui | 
| Emails | v3 | Oui | Oui | Oui | Oui | Oui | 
| Meetings | v3 | Oui | Oui | Oui | Oui | Oui | 
| Tâches | v3 | Oui | Oui | Oui | Oui | Oui | 
| Postal Mails | v3 | Oui | Oui | Oui | Oui | Oui | 
| Custom Objects | v3 | Oui | Oui | Oui | Oui | Oui | 
| Forms |   v2 | Non | Non | Non | Oui | Non | 
| Owners | v3 | Non | Oui | Non | Oui | Non | 
| Produits | v3 | Oui | Oui | Oui | Oui | Oui | 
| Tickets | v3 | Oui | Oui | Oui | Oui | Oui | 
| Flux de travail | v3 | Non | Non | Non | Oui | Non | 
| Associations | v4 | Oui | Non | Non | Oui | Non | 
| Associations Labels | v4 | Non | Non | Non | Oui | Non | 

**Exemple :**

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3"
    }
```

## Entités prises en charge pour la source asynchrone
<a name="async-table"></a>


| Entité | Version de l’API | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | --- | 
| Companies | v3 | Oui | Non | Oui | Oui | Non | 
| Contacts | v3 | Oui | Non | Oui | Oui | Non | 
| Deals | v3 | Oui | Non | Oui | Oui | Non | 
| Appels | v3 | Oui | Non | Oui | Oui | Non | 
| Remarques | v3 | Oui | Non | Oui | Oui | Non | 
| Emails | v3 | Oui | Non | Oui | Oui | Non | 
| Meetings | v3 | Oui | Non | Oui | Oui | Non | 
| Tâches | v3 | Oui | Non | Oui | Oui | Non | 
| Postal Mails | v3 | Oui | Non | Oui | Oui | Non | 
| Custom Objects | v3 | Oui | Non | Oui | Oui | Non | 
| Produits | v3 | Oui | Non | Oui | Oui | Non | 
| Tickets | v3 | Oui | Non | Oui | Oui | Non | 

**Exemple :**

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3",
        "TRANSFER_MODE": "ASYNC"
    }
```

**HubSpot détails de l'entité et du champ** :

**HubSpot API v4** : 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/hubspot-reading-from-entities.html)

**Note**  
Pour l'`Associations`objet, pour récupérer les associations entre deux objets, vous devez fournir le « from Id » (l'ID du premier objet) via un filtre obligatoire lors de la création d'une tâche. AWS Glue Si vous souhaitez récupérer des associations pour plusieurs IDs dans ce cas, vous devez en fournir plusieurs IDs dans la `where` clause. Par exemple : pour récupérer `Associations` les contacts IDs « 1 » et « 151 », vous devez fournir un filtre sous `where id=1 AND id=151` la forme.

**HubSpot API version 3** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/hubspot-reading-from-entities.html)

Pour les entités suivantes, HubSpot fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique, afin que le support des opérateurs soit capturé au niveau du type de données pour chaque entité.

**Note**  
`DML_STATUS` est un champ virtuel ajouté à chaque enregistrement lors de l’exécution afin de déterminer son état (CRÉÉ/MIS À JOUR) en mode de synchronisation. L’opérateur `CONTAINS/LIKE` n’est pas pris en charge en mode asynchrone.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/hubspot-reading-from-entities.html)

**HubSpot API v2** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/hubspot-reading-from-entities.html)

**HubSpot API v1** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/hubspot-reading-from-entities.html)

## Requêtes de partitionnement
<a name="hubspot-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons la valeur au format ISO.

  Exemples de valeurs valides :

  ```
  “2024-01-01T10:00:00.115Z" 
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Le tableau suivant décrit les détails de prise en charge dans les champs de partitionnement d’entités :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/hubspot-reading-from-entities.html)

Exemple :

```
hubspot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "v3",
        "PARTITION_FIELD": "hs_object_id"
        "LOWER_BOUND": "50"
        "UPPER_BOUND": "16726619290"
        "NUM_PARTITIONS": "10"
    }
```

# Écrire à des HubSpot entités
<a name="hubspot-writing-to-entities"></a>

## Conditions préalables
<a name="hubspot-writing-prerequisites"></a>
+ Un HubSpot objet sur lequel vous souhaitez écrire. Vous aurez besoin du nom de l’objet, comme contact ou ticket.
+ Le HubSpot connecteur prend en charge les opérations d'écriture suivantes :
  + INSERT
  + UPDATE
+ Lorsque vous utilisez l’opération d’écriture `UPDATE`, vous devez proposer l’option `ID_FIELD_NAMES` afin de spécifier le champ d’ID pour les enregistrements.

## Entités prises en charge pour la destination de la synchronisation
<a name="hubspot-supported-entities"></a>


| Entité | Version de l'API | Sera pris en charge en tant que connecteur de destination | Peut être inséré | Peut être mis à jour | 
| --- | --- | --- | --- | --- | 
| Companies | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Contacts | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Deals | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Produits | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Appels | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Meetings | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Remarques | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Emails | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Tâches | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Postal Mails | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Custom Objects | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Tickets | v3 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 
| Associations | v4 | Oui | Oui (Unique, en bloc) | Non | 
| Associations Labels | v4 | Oui | Oui (Unique, en bloc) | Oui (Unique, en bloc) | 

**Exemples :**

**Opération INSERT**

```
hubspot_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "contact",
        "API_VERSION": "v3",
        "WRITE_OPERATION": "INSERT"
    }
)
```

**Opération UPDATE**

```
hubspot_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="hubspot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deal",
        "API_VERSION": "v3",
        "WRITE_OPERATION": "UPDATE",
        "ID_FIELD_NAMES": "hs_object_id"
    }
)
```

# HubSpot options de connexion
<a name="hubspot-connection-options"></a>

Les options de connexion suivantes sont disponibles pour HubSpot :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans HubSpot.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. HubSpot Version de l'API Rest que vous souhaitez utiliser. Par exemple : v1, v2, v3, v4.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `TRANSFER_MODE`(Chaîne) - Utilisé pour indiquer si la requête doit être exécutée en mode asynchrone.
+ `WRITE_OPERATION`(Chaîne) - Par défaut : INSERT. Utilisé pour l’écriture La valeur doit être INSERT ou UPDATE.
+ `ID_FIELD_NAMES`(Chaîne) - Valeur par défaut : null. Nécessaire pour UPDATE.

# Limitations et remarques relatives au HubSpot connecteur
<a name="hubspot-connector-limitations"></a>

Les limitations ou remarques suivantes concernent le HubSpot connecteur :
+ Les points de terminaison de recherche sont limités à 10 000 résultats au total pour une requête donnée. Toute partition contenant plus de 10 000 enregistrements provoquera une erreur 400.
+ Les autres restrictions importantes du connecteur sont décrites dans [Restrictions](https://developers.hubspot.com/docs/api/crm/search#limitations).
+ Un maximum de trois instructions de filtrage sont acceptées par HubSpot.
+ Actuellement, HubSpot prend en charge les associations entre HubSpot des objets standard (par exemple, contact, entreprise, offre ou ticket) et des objets personnalisés.
  + Pour un compte gratuit : vous ne pouvez créer que 10 types d’associations entre chaque appariement d’objets (par exemple, contacts et companies).
  + Pour un compte de superadministrateur : vous ne pouvez créer que 50 types d’associations au maximum entre chaque appariement d’objets.
  + Pour plus d’informations, consultez [Associations v4](https://developers.hubspot.com/docs/api/crm/) et [Create and use association labels](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels).
+ Les objets « Quote » et « Communications » ne sont pas présents pour Associations, car ils ne sont actuellement pas pris en charge dans le connecteur.
+ Pour le mode asynchrone, SaaS trie les valeurs par ordre croissant uniquement.
+ Pour l’entité `Ticket`, SaaS ne renvoie pas le champ `hs_object_id` en mode asynchrone.

# Connexion à Instagram Ads
<a name="connecting-to-data-instagram-ads"></a>

Instagram est une application populaire de partage de photos qui vous permet d’interagir avec des marques, des célébrités, des leaders d’opinion, des amis, des membres de votre famille, etc. Il s’agit d’un service de partage de photos et de réseaux sociaux. Les utilisateurs peuvent prendre des photos ou de courtes vidéos et les partager avec leurs followers. Les publicités Instagram sont des publications pour lesquelles les entreprises peuvent payer afin qu’elles soient diffusées aux utilisateurs de l’application.

**Topics**
+ [AWS Glue support pour Instagram Ads](instagram-ads-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](instagram-ads-configuring-iam-permissions.md)
+ [Configuration d’Instagram Ads](instagram-ads-configuring.md)
+ [Configuration des connexions Instagram Ads](instagram-ads-configuring-connections.md)
+ [Lecture à partir d’entités Instagram Ads](instagram-ads-reading-from-entities.md)
+ [Options de connexion Instagram Ads](instagram-ads-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Instagram Ads](instagram-ads-connector-limitations.md)

# AWS Glue support pour Instagram Ads
<a name="instagram-ads-support"></a>

AWS Glue prend en charge les publicités Instagram comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données d'Instagram Ads.

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

**Versions de l’API Instagram Ads prises en charge**  
Les versions suivantes de l’API Instagram Ads sont prises en charge :
+ v17.0
+ v18.0
+ v19.0
+ v20.0

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="instagram-ads-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration d’Instagram Ads
<a name="instagram-ads-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Instagram Ads, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="instagram-ads-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Les comptes Instagram standard sont accessibles indirectement via Facebook.
+ L’authentification de l’utilisateur est nécessaire pour générer le jeton d’accès.
+ Le connecteur du SDK Instagram Ads implémentera le OAuth flux de *jetons d'accès utilisateur*.
+ Nous utilisons OAuth2 .0 pour authentifier nos demandes d'API auprès d'Instagram Ads. Cette authentification Web s’inscrit dans le cadre de l’architecture d’authentification multifactorielle (MFA), qui est un sur-ensemble de l’authentification à deux facteurs.
+ L’utilisateur doit accorder des autorisations pour accéder aux points de terminaison. Pour accéder aux données de l’utilisateur, l’autorisation du point de terminaison est gérée par le biais d’[autorisations](https://developers.facebook.com/docs/permissions) et de [fonctionnalités](https://developers.facebook.com/docs/features-reference).

## Obtenir des informations d'identification OAuth 2.0
<a name="instagram-ads-configuring-creating-instagram-ads-oauth2-credentials"></a>

Pour obtenir des informations d’identification d’API afin de pouvoir effectuer des appels authentifiés vers votre instance, consultez [API de graphe](https://developers.facebook.com/docs/graph-api/).

# Configuration des connexions Instagram Ads
<a name="instagram-ads-configuring-connections"></a>

Instagram Ads prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2
+ Ce type de subvention est considéré comme tridimensionnel OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console.
+ Les utilisateurs peuvent choisir de créer leur propre application connectée dans Instagram Ads et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Instagram Ads pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’accès. Un jeton d’utilisateur système qui arrive à expiration est valide pendant 60 jours à compter de la date de génération ou d’actualisation. Pour assurer la continuité, le développeur doit actualiser le jeton d’accès dans les 60 jours. À défaut, cela entraîne la perte du jeton d’accès et oblige le développeur à en obtenir un nouveau pour retrouver l’accès à l’API. Consultez [Actualiser un token d’accès](https://developers.facebook.com/docs/marketing-api/system-users/install-apps-and-generate-tokens/).

Pour configurer une connexion à Instagram Ads :

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Instagram Ads.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires à cet effet :

------
#### [ JSON ]

****  

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

------

   1. Indiquez l’ID client de l’application du client gérée par l’utilisateur.

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. Le secret sélectionné doit comporter une clé `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` dont la valeur est le secret client de l’application connectée.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Instagram Ads
<a name="instagram-ads-reading-from-entities"></a>

**Prérequis**

Un objet Instagram Ads à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet. Les tableaux suivants présentent les entités prises en charge.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Oui | Oui | Non | Oui | Oui | 
| Ad Set | Oui | Oui | Non | Oui | Oui | 
| Ads | Oui | Oui | Non | Oui | Oui | 
| Ad Creative | Non | Oui | Non | Oui | Non | 
| Insights - Account | Non | Oui | Non | Oui | Non | 
| Ad Image | Oui | Oui | Non | Oui | Non | 
| Insights - Ad | Oui | Oui | Non | Oui | Oui | 
| Perspectives - AdSet | Oui | Oui | Non | Oui | Oui | 
| Insights - Campaign | Oui | Oui | Non | Oui | Oui | 

**Exemple :**

```
instagramAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="instagramads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0"
    }
```

## Détails des entités et des champs Instagram Ads
<a name="instagram-ads-reading-entity-and-field-details"></a>

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Campaign](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group)
+ [Ad Set](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign)
+ [Ad](https://developers.facebook.com/docs/marketing-api/reference/adgroup)
+ [Ad Creative](https://developers.facebook.com/docs/marketing-api/reference/ad-creative)
+ [Ad Account Insight](https://developers.facebook.com/docs/marketing-api/reference/ad-account/insights)
+ [Ad Image](https://developers.facebook.com/docs/marketing-api/reference/ad-image)
+ [Ad Insights](https://developers.facebook.com/docs/marketing-api/reference/adgroup/insights/)
+ [AdSets Perspectives](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign/insights)
+ [Campaigns Insights](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group/insights)

Pour plus d’informations, consultez [API Marketing](https://developers.facebook.com/docs/marketing-api/reference/v21.0).

**Note**  
Les types de données Struct et List sont convertis en type de données String dans la réponse des connecteurs.

## Requêtes de partitionnement
<a name="instagram-ads-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons le format d'horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemple de valeur valide :

  ```
  "2022-01-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.

  Exemple de valeur valide :

  ```
  "2024-01-02T00:00:00.000Z"
  ```
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
instagramADs_read = glueContext.create_dynamic_frame.from_options(
    connection_type="instagramads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v20.0",
        "PARTITION_FIELD": "created_time"
        "LOWER_BOUND": "2022-01-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-01-02T00:00:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Options de connexion Instagram Ads
<a name="instagram-ads-connection-options"></a>

Les options de connexion pour Instagram Ads sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Instagram Ads.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version de l’API de graphe Instagram Ads que vous souhaitez utiliser. Par exemple : v21.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Restrictions et remarques relatives au connecteur Instagram Ads
<a name="instagram-ads-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Instagram Ads :
+ Le nombre d’appels d’une application est le nombre d’appels qu’un utilisateur peut passer pendant une période d’une heure continue, 200 multiplié par le nombre d’utilisateurs. Pour plus de détails sur les plafonds, consultez [Plafonds](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/) et [Plafonds Business Use Case](https://developers.facebook.com/docs/graph-api/overview/rate-limiting/#buc-rate-limits).

# Connexion à Intercom dans AWS Glue Studio
<a name="connecting-to-data-intercom"></a>

 Intercom est le système d’exploitation d’Engagement, un canal ouvert entre votre entreprise et vos clients, sur le plan du produit, sur le moment et selon leurs conditions, qui crée un dialogue permanent qui vous permet de tirer le meilleur parti de chaque engagement tout au long du parcours client. 

**Topics**
+ [AWS Glue support pour Intercom](intercom-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](intercom-configuring-iam-permissions.md)
+ [Configuration d’Intercom](intercom-configuring.md)
+ [Configuration de connexions Intercom](intercom-configuring-connections.md)
+ [Lecture à partir d’entités Intercom](intercom-reading-from-entities.md)
+ [Options de connexion Intercom](intercom-connection-options.md)
+ [Limitations](intercom-limitations.md)
+ [Création d’un compte Intercom et configuration de l’application client](intercom-new-account-creation.md)

# AWS Glue support pour Intercom
<a name="intercom-support"></a>

AWS Glue prend en charge Intercom comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données d'Intercom.

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

**Versions d’API Intercom prises en charge**  
 v2.5. Pour la prise en charge des entités par version spécifique, consultez [Lecture à partir d’entités Intercom](intercom-reading-from-entities.md). 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="intercom-configuring-iam-permissions"></a>

 L’exemple de politique suivant décrit les autorisations IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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 et Amazon EC2. Amazon CloudWatch Logs 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. 

# Configuration d’Intercom
<a name="intercom-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Intercom, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="intercom-configuring-min-requirements"></a>
+  Vous disposez d’un compte Intercom. Pour de plus amples informations, veuillez consulter [Création d’un compte Intercom et configuration de l’application client](intercom-new-account-creation.md). 
+  Votre compte Intercom est activé pour accéder à l’API. 
+  Vous devez disposer d'une application sous le compte développeur Intercom qui fournit les informations d'identification du client qui permettent AWS Glue d'accéder à vos données en toute sécurité lorsqu'il passe des appels authentifiés vers votre compte. Pour plus d’informations, consultez Intercom - Étapes de création d’un compte et d’une application client. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Intercom. 

# Configuration de connexions Intercom
<a name="intercom-configuring-connections"></a>

 Intercom prend en charge le type de `AUTHORIZATION_CODE` subvention pour OAuth 2. 

 Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirigera l'utilisateur vers Google Ads où il devra se connecter et accorder AWS Glue les autorisations demandées pour accéder à son instance d'intercom. 

 Les utilisateurs doivent fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Intercom pour se connecter et autoriser l'accès AWS Glue à leurs ressources. 

 Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

 Pour plus d'informations sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez la section [API des annonces](https://developers.intercom.com/building-apps/docs/setting-up-oauth). 

Pour configurer une connexion Intercom :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour les applications connectées gérées par le client : le secret doit contenir le jeton d’accès à l’application connectée, le jeton d’actualisation, ainsi que les valeurs client\$1id et client\$1secret. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Intercom.

   1. Indiquez l’environnement Intercom.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Intercom
<a name="intercom-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Intercom à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | API\$1Vversion | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | --- | 
| Admins | v2.5 | Non | Non | Non | Oui | Non | 
| Companies | v2.5 | Non | Oui | Non | Oui | Non | 
| Conversations | v2.5 | Oui | Oui | Oui | Oui | Oui | 
| Attributs des données | v2.5 | Non | Non | Non | Oui | Non | 
| Contacts | v2.5 | Oui | Oui | Oui | Oui | Oui | 
| Segments | v2.5 | Non | Non | Non | Oui | Non | 
| Étiquettes | v2.5 | Non | Non | Non | Oui | Non | 
| Équipes | v2.5 | Non | Non | Non | Oui | Non | 

 **Exemple** 

```
Intercom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Intercom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "V2.5"
    }
)
```

 **Détails des entités et des champs Intercom** 


| Entité | Champ | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | --- | 
| Admins | type | String | NA | 
| Admins | id | String | NA | 
| Admins | avatar | Struct | NA | 
| Admins | name | String | NA | 
| Admins | e-mail | String | NA | 
| Admins | away\$1mode\$1enabled | Booléen | NA | 
| Admins | away\$1mode\$1reassign | Booléen | NA | 
| Admins | has\$1inbox\$1seat | Booléen | NA | 
| Admins | teams\$1ids | List | NA | 
| Admins | job\$1title | String | NA | 
| Companies | type | String | NA | 
| Companies | id | String | NA | 
| Companies | app\$1id | String | NA | 
| Companies | created\$1at | DateTime | NA | 
| Companies | remote\$1created\$1at | DateTime | NA | 
| Companies | updated\$1at | DateTime | NA | 
| Companies | last\$1request\$1at | DateTime | NA | 
| Companies | plan | Struct | NA | 
| Companies | company\$1id | String | NA | 
| Companies | name | String | NA | 
| Companies | custom\$1attributes | Struct | NA | 
| Companies | session\$1count | Entier | NA | 
| Companies | monthly\$1spend | Entier | NA | 
| Companies | user\$1count | Entier | NA | 
| Companies | industry | String | NA | 
| Companies | size | Entier | NA | 
| Companies | website | String | NA | 
| Companies | tags | Struct | NA | 
| Companies | segments | Struct | NA | 
| Contacts | id | String | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contacts | type | String | NA | 
| Contacts | workspace\$1id | String | NA | 
| Contacts | external\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | rôle | String | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contacts | e-mail | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | phone | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | avatar | String | NA | 
| Contacts | owner\$1id | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | social\$1profiles | Struct | NA | 
| Contacts | has\$1hard\$1bounced | Booléen | EQUAL\$1TO | 
| Contacts | marked\$1email\$1as\$1spam | Booléen | EQUAL\$1TO | 
| Contacts | unsubscribed\$1from\$1emails | Booléen | EQUAL\$1TO | 
| Contacts | created\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | updated\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | signed\$1up\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1seen\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1replied\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1contacted\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1email\$1opened\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1email\$1clicked\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | language\$1override | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | browser | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | browser\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | browser\$1language | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | os | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | location | Struct | NA | 
| Contacts | location\$1country | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | location\$1region | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | location\$1city | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | android\$1app\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | android\$1app\$1version | String | NA | 
| Contacts | android\$1device | String | NA | 
| Contacts | android\$1os\$1version | String | NA | 
| Contacts | android\$1sdk\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | android\$1last\$1seen\$1at | Date | NA | 
| Contacts | ios\$1app\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | ios\$1app\$1version | String | NA | 
| Contacts | ios\$1device | String | NA | 
| Contacts | ios\$1os\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | ios\$1sdk\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | ios\$1last\$1seen\$1at | DateTime | NA | 
| Contacts | custom\$1attributes | Struct | NA | 
| Contacts | tags | Struct | NA | 
| Contacts | notes | Struct | NA | 
| Contacts | companies | Struct | NA | 
| Contacts | unsubscribed\$1from\$1sms | Booléen | NA | 
| Contacts | sms\$1consent | Booléen | NA | 
| Contacts | opted\$1out\$1subscription\$1types | Struct | NA | 
| Contacts | referrer | String | NA | 
| Contacts | utm\$1campaign | String | NA | 
| Contacts | utm\$1content | String | NA | 
| Contacts | utm\$1medium | String | NA | 
| Contacts | utm\$1source | String | NA | 
| Contacts | utm\$1term | String | NA | 
| Conversations | type | String | NA | 
| Conversations | id | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | created\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | updated\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | source | Struct | NA | 
| Conversations | source\$1id | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1type | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversations | source\$1delivered\$1as | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversations | source\$1subject | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1body | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1type | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1email | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1url | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | contacts | Struct | NA | 
| Conversations | teammates | Struct | NA | 
| Conversations | title | String | NA | 
| Conversations | admin\$1assignee\$1id | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | team\$1assignee\$1id | Entier | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | custom\$1attributes | Struct | NA | 
| Conversations | ouvrir | Booléen | EQUAL\$1TO | 
| Conversations | state | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | lire | Booléen | EQUAL\$1TO | 
| Conversations | waiting\$1since | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | snoozed\$1until | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | tags | Struct | NA | 
| Conversations | first\$1contact\$1reply | Struct | NA | 
| Conversations | priority | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | topics | Struct | NA | 
| Conversations | sla\$1applied | Struct | NA | 
| Conversations | conversation\$1rating | Struct | NA | 
| Conversations | conversation\$1rating\$1requested\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1rating\$1replied\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1rating\$1score | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1rating\$1remark | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | conversation\$1rating\$1contact\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | conversation\$1rating\$1admin\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | statistics | Struct | NA | 
| Conversations | statistics\$1time\$1to\$1assignment | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1time\$1to\$1admin\$1reply | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1time\$1to\$1first\$1close | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1time\$1to\$1last\$1close | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1median\$1time\$1to\$1reply | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1assignment\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1closed\$1by\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | statistics\$1count\$1reopens | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1count\$1assignments | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1count\$1conversation\$1parts | Entier | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1parts | List | NA | 
| Attributs des données | id | Entier | NA | 
| Attributs des données | type | String | NA | 
| Attributs des données | modèle | String | NA | 
| Attributs des données | name | String | NA | 
| Attributs des données | full\$1name | String | NA | 
| Attributs des données | étiquette | String | NA | 
| Attributs des données | description | String | NA | 
| Attributs des données | data\$1type | String | NA | 
| Attributs des données | options | List | NA | 
| Attributs des données | api\$1writable | Booléen | NA | 
| Attributs des données | ui\$1writable | Booléen | NA | 
| Attributs des données | personnalisé | Booléen | NA | 
| Attributs des données | archived | Booléen | NA | 
| Attributs des données | created\$1at | Booléen | NA | 
| Attributs des données | updated\$1at | DateTime | NA | 
| Attributs des données | admin\$1id | String | NA | 
| Segments | type | String | NA | 
| Segments | id | String | NA | 
| Segments | name | String | NA | 
| Segments | created\$1at | DateTime | NA | 
| Segments | updated\$1at | DateTime | NA | 
| Segments | person\$1type | String | NA | 
| Segments | count | Entier | NA | 
| Étiquettes | type | String | NA | 
| Étiquettes | id | String | NA | 
| Étiquettes | name | String | NA | 
| Équipes | type | String | NA | 
| Équipes | id | String | NA | 
| Équipes | name | String | NA | 
| Équipes | admin\$1ids | List | NA | 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau suivant. 


| Nom de l'entité | Champ de partitionnement | Type de données | 
| --- | --- | --- | 
| Contacts | created\$1at, updated\$1at,last\$1seen\$1at | DateTime | 
| Conversations | id | Entier | 
| Conversations | created\$1at, updated\$1at | DateTime | 

 **Exemple** 

```
Intercom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Intercom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversation",
        "API_VERSION": "V2.5",
        "PARTITION_FIELD": "created_at"
        "LOWER_BOUND": "2022-07-13T07:55:27.065Z"
        "UPPER_BOUND": "2022-08-12T07:55:27.065Z"
        "NUM_PARTITIONS": "2"
    }
)
```

# Options de connexion Intercom
<a name="intercom-connection-options"></a>

Les options de connexion pour Intercom sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Intercom. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Intercom que vous souhaitez utiliser. Exemple : v2.5. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 
+  `INSTANCE_URL`(Chaîne) - URL de l’instance sur laquelle l’utilisateur souhaite exécuter les opérations. Par exemple : [https://api.intercom.io](https://api.intercom.io). 

# Limitations
<a name="intercom-limitations"></a>

Les restrictions du connecteur Intercom sont les suivantes :
+  Lorsque vous utilisez l’entité Company, il existe une limite de 10 000 entreprises pouvant être renvoyées. Pour plus d’informations, consultez [List all companies API](https://developers.intercom.com/docs/references/2.5/rest-api/companies/list-companies). 
+  Lors de l’application de la clause Order by, le filtre est obligatoire pour les entités **Contact** et **Conversation**. 
+  MCA est pris en charge par le fournisseur de SaaS. Cependant, sur la base des limites de débit des API mentionnées dans la documentation, nous n'hébergerons pas MCA sur d'autres charges de travail AWS Glue car cela pourrait avoir un impact sur d'autres charges de travail et entraîner des problèmes de performances en raison de la contention des ressources. 

# Création d’un compte Intercom et configuration de l’application client
<a name="intercom-new-account-creation"></a>

**Création d’un compte Intercom**

1. Choisissez l’[URL Intercom](https://app.intercom.com/) et choisissez **Commencer mon essai gratuit** dans le coin supérieur droit de la page.

1. Cliquez sur le bouton **Essayer gratuitement** dans le coin supérieur droit de la page.

1. Choisissez le type d’activité dont vous avez besoin. 

1. Sur la page, saisissez toutes les informations demandées.

1. Après avoir saisi toutes les informations, choisissez **Enregistrer**.



**Création d’une application de développeur Intercom**

Pour obtenir l’**ID client** et le **secret client**, vous devez créer un compte développeur.

1. Accédez à [https://app.intercom.com/](https://app.intercom.com/).

1. Saisissez l’adresse e-mail et le mot de passe/Ouvrez une session à l’aide de Google et connectez-vous.

1. Choisissez le **profil utilisateur** dans le coin inférieur gauche et choisissez les paramètres.

1. Choisissez **Applications et intégration**.

1. Choisissez l’onglet **Hub développeur** sous **Applications et intégration**.

1. Choisissez **Nouvelle application** et créez l’application ici.

1. Indiquez le nom de l’application et choisissez **Créer l’application**.

1. Dans l’application, accédez à la section **Authentification**.

1. Choisissez l'**édition** et ajoutez une redirection URIs. Ajoutez l’URL de redirection spécifique à votre région en tant que `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth`. Par exemple, ajoutez `https://us-east-1.console.aws.amazon.com/gluestudio/oauth for the us-east-1 region`.

1. Obtenez l’**ID client** et le **secret client** générés dans la section Informations de base.

# Connexion à Jira Cloud
<a name="connecting-to-data-jira-cloud"></a>

Jira Cloud est une plateforme développée par Atlassian. La plateforme inclut des produits de suivi des problèmes qui aident les équipes à planifier et à suivre leurs projets Agile. En tant qu’utilisateur de Jira Cloud, votre compte contient des données relatives à vos projets, telles que des problèmes, des flux de travail et des événements. Vous pouvez l'utiliser AWS Glue pour transférer vos données Jira Cloud vers certains AWS services ou d'autres applications compatibles.

**Topics**
+ [AWS Glue prise en charge de Jira Cloud](jira-cloud-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](jira-cloud-configuring-iam-permissions.md)
+ [Configuration de Jira Cloud](jira-cloud-configuring.md)
+ [Configuration des connexions Jira Cloud](jira-cloud-configuring-connections.md)
+ [Lecture depuis les entités Jira Cloud](jira-cloud-reading-from-entities.md)
+ [Options de connexion Jira Cloud](jira-cloud-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Jira Cloud](jira-cloud-connector-limitations.md)

# AWS Glue prise en charge de Jira Cloud
<a name="jira-cloud-support"></a>

AWS Glue prend en charge Jira Cloud comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données depuis Jira Cloud.

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

**Versions d’API Jira Cloud prises en charge**  
Les versions d’API Jira Cloud suivantes sont prises en charge :
+ v3

Pour la prise en charge des entités par version spécifique, consultez [Lecture depuis les entités Jira Cloud](jira-cloud-reading-from-entities.md). 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="jira-cloud-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Jira Cloud
<a name="jira-cloud-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Jira Cloud vers des destinations prises en charge, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="jira-cloud-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Atlassian dans lequel vous pouvez utiliser le produit logiciel Jira dans Jira Cloud. Pour de plus amples informations, veuillez consulter [Création d’un compte Jira Cloud](#jira-cloud-configuring-creating-jira-cloud-account).
+ Vous devez avoir créé un AWS compte avec l'accès au service à AWS Glue.
+ Cette application fournit les informations d'identification du client qui AWS Glue permettent d'accéder à vos données en toute sécurité lorsqu'elle passe des appels authentifiés vers votre compte. Pour plus d'informations, consultez [Enabling OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-) dans la documentation Atlassian Developer.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Jira Cloud.

## Création d’un compte Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-account"></a>

Pour créer un compte Jira Cloud :

1. Accédez à [URL d’inscription Atlassian](https://id.atlassian.com/signup).

1. Saisissez votre adresse e-mail professionnelle et votre nom, puis choisissez **Accepter**. Vous recevez un e-mail de vérification.

1. Après avoir vérifié votre adresse e-mail, vous pouvez créer un mot de passe et choisir **S’inscrire**.

1. Saisissez votre nom d’utilisateur et votre mot de passe, puis choisissez **Se connecter**.

1. Vous êtes redirigé vers une page sur laquelle vous devez accéder à votre site. Saisissez le nom du site et choisissez **Accepter**.

Une fois votre site Atlassian Cloud démarré, vous pouvez configurer votre Jira en répondant à quelques questions selon vos préférences en matière de type de projet.

Pour vous connecter à un compte existant :

1. Accédez à l’[URL de connexion Atlassian](https://id.atlassian.com/login) et saisissez vos informations d’identification.

1. Saisissez votre e-mail et votre mot de passe, puis cliquez sur **Se connecter**. Vous êtes redirigé vers le tableau de bord Jira.

## Création d’une application dans Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-app"></a>

Pour créer une application dans Jira Cloud et obtenir l’ID client et le secret client auprès de l’application client gérée :

1. Accédez à l’[URL Jira Cloud](https://id.atlassian.com/login) et saisissez vos informations d’identification.

1. Choisissez **Create** et sélectionnez l'option **d'intégration OAuth 2.0**.

1. Saisissez le nom de l’application, consultez les **conditions générales** et choisissez **Créer**.

1. Accédez à la section **Distribution** dans le menu de gauche et choisissez **Modifier**.

1. Dans la section **Modifier les contrôles de distribution** :

   1. Pour **ÉTAT DE DISTRIBUTION**, sélectionnez **Partage**.

   1. Saisissez le nom du fournisseur.

   1. Saisissez l’URL de votre **politique de confidentialité**. Par exemple, https://docs.aws.amazon.com/glue/ latest/dg/security -iam-awsmanpol.html

   1. Saisissez l’URL de vos **conditions d’utilisation** (facultatif).

   1. Saisissez l’URL de votre **contact du service client** (facultatif).

   1. Sélectionnez dans la **DÉCLARATION Yes/No DE DONNÉES PERSONNELLES** et choisissez **Enregistrer les modifications**.

1. Accédez à **Autorisations** dans le menu de gauche de l’application correspondante.

1. Pour **API Jira**, choisissez **Ajouter**. Une fois ajoutée, choisissez l’option **Configuration**.

1. Dans la section **Portées classique** > **API REST de la plateforme Jira**, choisissez **Modifier les portées** et cochez toutes les portées. Cliquez sur **Sauvegarder**

1. Sous **Portées granulaires**, choisissez **Modifier les portées** et sélectionnez les portées suivantes :

1. Faites défiler la page vers le bas et trouvez des portées. Il existe deux types de portées que vous devez sélectionner sous les rubriques « CRM » et « Standard ».

1. Ajoutez les portées suivantes :

   ```
   read:application-role:jira
   read:audit-log:jira
   read:avatar:jira
   read:field:jira
   read:group:jira
   read:instance-configuration:jira
   read:issue-details:jira
   read:issue-event:jira
   read:issue-link-type:jira
   read:issue-meta:jira
   read:issue-security-level:jira
   read:issue-security-scheme:jira
   read:issue-type-scheme:jira
   read:issue-type-screen-scheme:jira
   read:issue-type:jira
   read:issue.time-tracking:jira
   read:label:jira
   read:notification-scheme:jira
   read:permission:jira
   read:priority:jira
   read:project:jira
   read:project-category:jira
   read:project-role:jira
   read:project-type:jira
   read:project-version:jira
   read:project.component:jir
   read:project.property:jira
   read:resolution:jira
   read:screen:jira
   read:status:jira
   read:user:jira
   read:workflow-scheme:jira
   read:workflow:jira
   read:field-configuration:jira
   read:issue-type-hierarchy:jira
   read:webhook:jira
   ```

1. Accédez à **Authentification** dans le menu de gauche, puis choisissez **Ajouter**.

1. Entrez une **URL de rappel** telle que oauth https://us-east-1.console.aws.amazon.com/gluestudio/

1. Accédez à **Paramètres** dans le menu de gauche et faites défiler la page vers le bas pour les détails de **l’authentification**. Notez l’ID client et le secret client.

# Configuration des connexions Jira Cloud
<a name="jira-cloud-configuring-connections"></a>

Jira Cloud prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Jira Cloud où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Jira Cloud.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Jira Cloud et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Jira Cloud pour se connecter et autoriser l'accès AWS Glue à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter la documentation publique de Jira Cloud sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez [Enabling OAuth 2.0 (3LO](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-)).

Pour configurer une connexion Jira Cloud :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : Vous devez créer un secret pour la connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Jira Cloud.

   1. Indiquez l’environnement Jira Cloud.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture depuis les entités Jira Cloud
<a name="jira-cloud-reading-from-entities"></a>

**Prérequis**

Un objet Jira Cloud à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme Audit Record ou Issue. Le tableau suivant présente les entités prises en charge.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Audit Record | Oui | Oui | Non | Oui | Oui | 
| Problème | Oui | Oui | Non | Oui | Oui | 
| Issue Field | Non | Non | Non | Oui | Non | 
| Issue Field Configuration | Oui | Oui | Non | Oui | Oui | 
| Issue Link Type | Non | Non | Non | Oui | Non | 
| Issue Notification Scheme | Oui | Oui | Non | Oui | Oui | 
| Issue Security Scheme | Non | Non | Non | Oui | Non | 
| Issue Type Scheme | Oui | Oui | Oui | Oui | Oui | 
| Issue Type Screen Scheme | Oui | Oui | Oui | Oui | Oui | 
| Issue Type | Non | Non | Non | Oui | Non | 
| Jira Setting | Oui | Non | Non | Oui | Non | 
| Jira Setting Advanced | Non | Non | Non | Oui | Non | 
| Jira Setting Global | Non | Non | Non | Oui | Non | 
| Étiquette | Non | Non | Non | Oui | Oui | 
| Myself | Oui | Non | Non | Oui | Non | 
| Autorisations | Non | Non | Non | Oui | Non. | 
| Project | Oui | Oui | Oui | Oui | Oui | 
| Project Category | Non | Non | Non | Oui | Non | 
| Type de projet | Non | Non | Non | Oui | Non | 
| Server Info | Non | Non | Non | Oui | Non | 
| Utilisateurs | Non | Non | Non. | Oui | Non | 
| Flux de travail | Oui | Oui | Oui | Oui | Oui | 
| Workflow Scheme | Non | Oui | Non | Oui | Oui | 
| Workflow Scheme Project Association | Oui | Non | Non | Oui | Non | 
| Workflow Status | Non | Non | Non | Oui | Non | 
| Workflow Status Category | Non | Non | Non | Oui | Non | 

**Exemple :**

```
jiracloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "audit-record",
        "API_VERSION": "v3"
    }
```

**Détails des entités et des champs Jira Cloud** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/jira-cloud-reading-from-entities.html)

## Requêtes de partitionnement
<a name="jira-cloud-reading-partitioning-queries"></a>

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
jiraCloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "issue",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# Options de connexion Jira Cloud
<a name="jira-cloud-connection-options"></a>

Les options de connexion pour Jira Cloud sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Jira Cloud.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Jira Cloud que vous souhaitez utiliser. Par exemple : v3.
+ `DOMAIN_URL`(Chaîne) - (Obligatoire) L’ID Jira Cloud que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Restrictions et remarques relatives au connecteur Jira Cloud
<a name="jira-cloud-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Jira Cloud :
+  L'`Contains`opérateur ne travaille pas avec le `resourceName` champ, qui est de type `String` donnée. 
+  Par défaut, si aucun filtre explicite n'est appliqué, seuls les problèmes des 30 derniers jours seront analysés. Les utilisateurs ont la possibilité de remplacer ce filtre par défaut en spécifiant un filtre personnalisé. 

# Connexion à Kustomer
<a name="connecting-to-data-kustomer"></a>

Kustomer est une puissante plateforme d'expérience client qui réunit tout ce dont vous avez besoin pour mieux servir vos clients dans un seul easy-to-use outil.

**Topics**
+ [AWS Glue support pour Kustomer](kustomer-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](kustomer-configuring-iam-permissions.md)
+ [Configuration de Kustomer](kustomer-configuring.md)
+ [Configuration de connexions Kustomer](kustomer-configuring-connections.md)
+ [Lecture à partir d’entités Kustomer](kustomer-reading-from-entities.md)
+ [Options de connexion Kustomer](kustomer-connection-options.md)
+ [Restrictions de Kustomer](kustomer-connection-limitations.md)

# AWS Glue support pour Kustomer
<a name="kustomer-support"></a>

AWS Glue prend en charge Kustomer comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Kustomer.

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

**Versions de l’API Kustomer prises en charge**  
Les versions d’API Kustomer suivantes sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="kustomer-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Kustomer
<a name="kustomer-configuring"></a>

Avant de pouvoir AWS Glue transférer des données de Kustomer vers des destinations prises en charge, vous devez répondre aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Kustomer qui contient les données que vous souhaitez transférer. 
+ Dans les paramètres utilisateur de votre compte, vous avez créé une clé d’API. Pour de plus amples informations, veuillez consulter [Création d’une clé d’API](#kustomer-configuring-creating-an-api-key).
+ Vous fournissez la clé d'API AWS Glue lors de la création de la connexion.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Kustomer.

## Création d’une clé d’API
<a name="kustomer-configuring-creating-an-api-key"></a>

Pour créer une clé d'API que vous utiliserez pour créer une connexion pour le connecteur Kustomer dans AWS Glue Studio :

1. Connectez-vous au [tableau de bord Kustomer à l’aide de vos informations d’identification](https://amazon-appflow.kustomerapp.com/login).

1. Sélectionnez l’icône **Paramètres** dans le menu de gauche.

1. Développez le menu déroulant **Sécurité** et sélectionnez **Clés d’API**.

1. Sur la page de création d’une clé d’API, sélectionnez **Ajouter une clé d’API** dans le coin supérieur droit.

1. Renseignez les entrées obligatoires pour la clé d’API en cours de création.
   + Nom : n’importe quel nom à donner à votre clé d’API.
   + Rôles : « org » doit être sélectionné pour que le APIs Kustomer fonctionne.
   + Expire (en jours) : le nombre de jours pendant lesquels vous souhaitez que la clé d’API soit valide. Vous pouvez conserver la valeur **N’expire jamais**, si cela convient à votre cas d’utilisation.

1. Choisissez **Créer**.

1. Stockez la valeur de la clé API (jeton) pour une utilisation ultérieure afin de créer une connexion pour le connecteur Kustomer dans AWS Glue Studio.

# Configuration de connexions Kustomer
<a name="kustomer-configuring-connections"></a>

Pour configurer une connexion Kustomer :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `apiKey` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Sous **Connexions**, choisissez **Créer une connexion**.

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Kustomer.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Kustomer
<a name="kustomer-reading-from-entities"></a>

**Prérequis**

Un objet Kustomer à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme Brands ou Cards. Le tableau suivant présente les entités prises en charge.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Brands | Non | Oui | Non | Oui | Non | 
| Cards | Non | Oui | Non | Oui | Non | 
| Chat Settings | Non | Non | Non | Oui | Non | 
| Companies | Oui | Oui | Oui | Oui | Oui | 
| Conversations | Oui | Oui | Oui | Oui | Oui | 
| Customers | Oui | Oui | Oui | Oui | Oui | 
| Customer Searches Pinned | Non | Oui | Non | Oui | Non | 
| Customer Searches Position | Non | Non | Non | Oui | Non | 
| Email Hooks | Non | Oui | Non | Oui | Non | 
| Web Hooks | Non | Oui | Non | Oui | Non | 
| KB Articles | Non | Oui | Non | Oui | Non | 
| KB Categories | Non | Oui | Non | Oui | Non | 
| KB Forms | Non | Oui | Non | Oui | Non | 
| KB Routes | Non | Oui | Non | Oui | Non | 
| KB Tags | Non | Oui | Non | Oui | Non | 
| KB Templates | Non | Oui | Non | Oui | Non | 
| KB Themes | Non | Oui | Non | Oui | Non | 
| Klasses | Non | Oui | Non | Oui | Non | 
| KViews | Non | Oui | Non | Oui | Non | 
| Messages | Oui | Oui | Oui | Oui | Oui | 
| Remarques | Oui | Oui | Oui | Oui | Oui | 
| Notifications | Non | Oui | Non | Oui | Non | 

**Exemple :**

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "brands",
        "API_VERSION": "v1"
    }
```

## Détails des entités et des champs Kustomer
<a name="kustomer-reading-from-entities-field-details"></a>

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Brands](https://api.kustomerapp.com/v1/brands)
+ [Cards](https://api.kustomerapp.com/v1/cards)
+ [Chat Settings](https://api.kustomerapp.com/v1/chat/settings)
+ [Companies](https://api.kustomerapp.com/v1/companies)
+ [Conversations](https://api.kustomerapp.com/v1/conversations)
+ [Customers](https://api.kustomerapp.com/v1/customers)
+ [Customers Searches Pinned](https://api.kustomerapp.com/v1/customers/searches/pinned)
+ [Customer Searches Positions](https://api.kustomerapp.com/v1/customers/searches/positions)
+ [Hooks Email](https://api.kustomerapp.com/v1/hooks/email)
+ [Hooks Web](https://api.kustomerapp.com/v1/hooks/web)
+ [KB Articles](https://api.kustomerapp.com/v1/kb/articles)
+ [KB Categories](https://api.kustomerapp.com/v1/kb/categories)
+ [KB Forms]( https://api.kustomerapp.com/v1/kb/forms)
+ [KB Routes](https://api.kustomerapp.com/v1/kb/routes)
+ [KB Tags](https://api.kustomerapp.com/v1/kb/tags)
+ [KB Templates](https://api.kustomerapp.com/v1/kb/templates)
+ [KB Themes](https://api.kustomerapp.com/v1/kb/themes)
+ [Klasses](https://api.kustomerapp.com/v1/klasses)
+ [KViews](https://api.kustomerapp.com/v1/kviews)
+ [Messages](https://api.kustomerapp.com/v1/messages)
+ [Remarques](https://api.kustomerapp.com/v1/notes)
+ [Notifications](https://api.kustomerapp.com/v1/notifications)

API Kustomer v1

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/kustomer-reading-from-entities.html)

## Requêtes de partitionnement
<a name="kustomer-reading-from-partitioning"></a>

**Partitionnement basé sur les champs**

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2023-01-15T11:18:39.205Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau suivant :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/kustomer-reading-from-entities.html)

Exemple :

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversation",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

# Options de connexion Kustomer
<a name="kustomer-connection-options"></a>

Les options de connexion pour Kustomer sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Kustomer.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Kustomer que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. URL de l’instance Kustomer.

# Restrictions de Kustomer
<a name="kustomer-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent Kustomer :
+ L’entité `Customer Searches` n’est pas prise en charge, car la documentation de l’API Kustomer n’a déclaré aucun point de terminaison pour elle.
+ La prise en charge de la filtration et du transfert incrémentiel sur l’entité `Klasses` n’est pas prise en charge.
+ Order by peut être prise en charge sur plusieurs champs applicables dans une seule demande.

  Cependant, il a été observé sur plusieurs champs que la fonctionnalité Order by se comportait de manière incohérente du côté de SaaS pour certaines combinaisons. Elle est imprévisible, car il peut y avoir « n » combinaisons susceptibles d’afficher des résultats de tri incorrects. Par exemple :

  Pour l’entité `Customers`, Order by `progressiveStatus desc, name asc` ne donne pas le résultat de tri correct. Le tri se fait uniquement en fonction de l’ordre `progressiveStatus`. Si un tel comportement est observé, vous pouvez utiliser un seul champ pour effectuer le tri.
+ La fonctionnalité Order by sur le champ « id » n’est prise en charge que par les entités `Conversations` et `Messages` en tant que paramètre de requête. Par exemple : https://api.kustomerapp.com/v1/ des conversations ? sort=desc (Ceci trie les résultats par « id » dans l'ordre décroissant.)

  De plus, tout autre filtre ou commande sur un autre champ est traduit dans un corps de requête POST dont le point de terminaison de l'API est POST https://api.kustomerapp.com/v1/ clients/search. Pour permettre la prise en charge de la commande par « identifiant » dans `Conversations` et`Messages`, soit seul l'ordre par identifiant doit être présent, soit tout autre filtre and/or commandé par un autre champ applicable.
+ Kustomer permet de récupérer un maximum de 10 000 enregistrements, qu’il s’agisse d’une demande filtrée ou non filtrée. En raison de cette restriction, toute entité détenant plus de 10 000 enregistrements subira une perte de données. Il existe deux solutions possibles pour atténuer partiellement ce problème :
  + Appliquez des filtres pour récupérer un ensemble d’enregistrements spécifique.
  + Si un filtre est appliqué à plus de 10 000 enregistrements, appliquez une valeur de filtre successive dans une nouvelle demande ultérieure ou appliquez des plages dans les filtres. Par exemple : 

    filterExpression de la première demande : `modifiedAt >= 2022-03-15T05:26:23.000Z and modifiedAt < 2023-03-15T05:26:23.000Z`

    Supposons que la limite de 10 000 enregistrements est dépassée.

    Une autre requête peut être déclenchée avec filterExpression : `modifiedAt >= 2023-03-15T05:26:23.000Z`
+ En tant que comportement SaaS, l’opérateur `CONTAINS` de Kustomer prend en charge la mise en correspondance uniquement sur des mots complets et non sur des correspondances partielles au sein d’un mot. Par exemple : « body CONTAINS ’test record’ » correspondra à un enregistrement ayant « test » dans le champ « body ». Cependant, « body CONTAINS 'test' » ne correspondra pas à un enregistrement contenant testAnotherRecord « » dans le champ « body ».

# Connexion à LinkedIn
<a name="connecting-to-linkedin"></a>

LinkedIn est un outil de marketing payant qui permet d'accéder aux réseaux LinkedIn sociaux par le biais de diverses publications sponsorisées et d'autres méthodes. LinkedIn est un puissant outil marketing permettant aux entreprises B2B de créer des prospects, de se faire reconnaître en ligne, de partager du contenu, etc.

**Topics**
+ [AWS Glue support pour LinkedIn](linkedin-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](linkedin-configuring-iam-permissions.md)
+ [Configuration LinkedIn](linkedin-configuring.md)
+ [Configuration des LinkedIn connexions](linkedin-configuring-connections.md)
+ [Lecture à partir d' LinkedIn entités](linkedin-reading-from-entities.md)
+ [LinkedIn options de connexion](linkedin-connection-options.md)
+ [Création d'un LinkedIn compte](linkedin-create-account.md)
+ [Limitations](linkedin-connector-limitations.md)

# AWS Glue support pour LinkedIn
<a name="linkedin-support"></a>

AWS Glue prend en charge LinkedIn les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de LinkedIn.

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

**Versions LinkedIn d'API prises en charge**  
**202406 (Juin 2024)**

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="linkedin-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration LinkedIn
<a name="linkedin-configuring"></a>

Avant de pouvoir AWS Glue utiliser le transfert depuis LinkedIn, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="linkedin-configuring-min-requirements"></a>
+ Tu as un LinkedIn compte. Pour plus d'informations sur la création d'un compte, consultez la section [Création d'un LinkedIn compte](linkedin-create-account.md). 
+ Votre LinkedIn compte est activé pour accéder à l'API. 
+ Vous avez créé une `OAuth2 API` intégration dans votre LinkedIn compte. Cette intégration fournit les informations d'identification du client qui AWS Glue permettent d'accéder à vos données en toute sécurité lorsqu'il effectue des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Création d'un LinkedIn compte](linkedin-create-account.md).

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre LinkedIn compte. Pour les connexions classiques, vous n'avez rien d'autre à faire dans LinkedIn.

# Configuration des LinkedIn connexions
<a name="linkedin-configuring-connections"></a>

 LinkedIn prend en charge le type de `AUTHORIZATION_CODE` subvention pour OAuth2. 

Ce type d’autorisation est considéré comme `OAuth` tridimensionnel, car il repose sur la redirection des utilisateurs vers le serveur d’autorisation tiers pour authentifier l’utilisateur. Les utilisateurs peuvent choisir de créer leur propre application connectée LinkedIn et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés LinkedIn vers pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 

Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès expire 60 jours après sa création. Un nouveau jeton d’accès peut être obtenu à l’aide du jeton d’actualisation.

Pour consulter LinkedIn la documentation publique sur la création d'une application connectée pour `Authorization Code OAuth` Flow, consultez [Authorization Code Flow (à 3 étapes). OAuth](https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?toc=%2Flinkedin%2Fmarketing%2Ftoc.json&bc=%2Flinkedin%2Fbreadcrumb%2Ftoc.json&view=li-lms-2024-07&tabs=HTTPS1)

**Configuration d'une LinkedIn connexion**

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 
   + Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 
   + Pour l'application connectée AWS gérée : secret vide ou secret avec une valeur temporaire.
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans le AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez **LinkedIn**.

   1. Fournissez l' LinkedIn environnement.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1. Sélectionnez les **options réseau** si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d' LinkedIn entités
<a name="linkedin-reading-from-entities"></a>

**Conditions préalables** 

Un LinkedIn objet que vous aimeriez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Ad Accounts | Oui | Oui | Oui | Oui | Non | 
| Campagnes | Oui | Oui | Oui | Oui | Non | 
| Campaign Groups | Oui | Oui | Oui | Oui | Non | 
| Creatives | Oui | Oui | Oui | Oui | Non | 
| Ad Analytics | Oui | Non | Non | Oui | Non | 
| Toutes les analyses publicitaires AdAcocunts | Oui | Non | Non | Oui | Non | 
| Ad Analytics All Campaigns | Oui | Non | Non | Oui | Non | 
| Toutes les analyses publicitaires CampaignGroups | Oui | Non | Non | Oui | Non | 
| Toutes les analyses publicitaires AdCreatives | Oui | Non | Non | Oui | Non | 
| Share Statistics | Oui | Non | Non | Oui | Non | 
| Page Statistics | Oui | Non | Non | Oui | Non | 
| Follower Statistics | Oui | Non | Non | Oui | Non | 

 **Exemple** 

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="linkedin",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "adaccounts",
        "API_VERSION": "202406"
    }
)
```


**LinkedIn détails de l'entité et du champ**  

|  **Type de données de champs**  |  **Opérateurs de filtre pris en charge**  | 
| --- | --- | 
|  String  |  =  | 
|  DateTime  |  BETWEEN, =  | 
|  Numérique  |  =  | 
|  Booléen  |  =  | 

# LinkedIn options de connexion
<a name="linkedin-connection-options"></a>

Les options de connexion suivantes sont disponibles pour LinkedIn :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans LinkedIn. Par exemple, adAccounts. 
+ `API_VERSION`(Chaîne) — (Obligatoire) Utilisé pour la lecture/écriture. LinkedIn Version de l'API Rest que vous souhaitez utiliser. La valeur sera 202406, car seule la version 202406 LinkedIn est actuellement prise en charge.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’entité sélectionnée. 
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 

# Création d'un LinkedIn compte
<a name="linkedin-create-account"></a>

**Création d'une LinkedIn application et d' OAuth informations d'identification**

1. Accédez à la page de votre **réseau de LinkedIn développeurs** et connectez-vous à l'aide des informations d'identification de votre LinkedIn compte. 

1. Accédez à la page **Mes applications** et choisissez **Créer une application** pour créer une nouvelle LinkedIn application.

1. Saisissez les informations suivantes dans le formulaire d’inscription à l’application :
   + **Nom de l’entreprise** : sélectionnez une entreprise existante ou créez-en une.
   + **Nom** : saisissez le nom de l’application.
   + **Description** : saisissez la description de l’application.
   + **Logo de l’application** : sélectionnez un fichier image comme logo de votre application.
   + **Utilisation de l’application** : sélectionnez l’utilisation de votre application.
   + **URL du site Web** : saisissez l’URL du site Web qui contient des informations détaillées sur votre application.
   + **Adresse e-mail professionnelle** : saisissez votre adresse e-mail professionnelle.
   + **Numéro de téléphone professionnel** : saisissez votre numéro de téléphone professionnel.
   + **LinkedIn Conditions d'utilisation de l'API** — Lisez et acceptez.

1. Après avoir rempli le formulaire d’inscription à l’application, choisissez **Soumettre**.

   Vous serez redirigé vers la page **Authentification**, où les clés d’authentification (ID client et secret client) et d’autres informations pertinentes seront affichées.

1. Si votre application Web nécessite l'accès à l'adresse e-mail de l'utilisateur depuis son LinkedIn compte, sélectionnez l'`r_emailaddress`autorisation. En outre, vous pouvez spécifier la redirection autorisée URLs pour votre LinkedIn application. 

**Création d'une page dans le LinkedIn compte**

1. Accédez aux [produits pour LinkedIn développeurs](https://developer.linkedin.com/).

1. Dans le coin supérieur droit de la page **Produits pour LinkedIn développeurs**, sélectionnez **Mes** applications.

1. Dans le coin supérieur droit de la page **Mes applications**, sélectionnez **Créer une application**.

1. Sur la page **Créer une application**, dans le champ **Nom de l’application**, saisissez un nom pour votre application.

1. Dans le champ **LinkedIn Page**, saisissez le nom ou l'URL de la page de votre entreprise.
**Note**  
Si vous n'avez pas de LinkedIn page, vous pouvez en créer une en sélectionnant **Créer une nouvelle LinkedIn**. 

1. Dans le champ **URL de la politique de confidentialité**, saisissez l’URL de votre politique de confidentialité.

1. Choisissez **Charger un logo** pour charger une image à afficher aux utilisateurs lorsqu’ils se connectent à votre application.

1. Dans la section **Accord juridique**, sélectionnez **J’ai lu et j’accepte les présentes conditions**.

1. Sélectionnez **Créer une application**. 

   Votre application sera créée et sera disponible sous l’onglet **Mes applications**.

**Publier des annonces de campagne dans LinkedIn**

1. Connectez-vous à **Gestionnaire de campagnes**. 

1. Sélectionnez un **groupe de campagnes** existant ou choisissez **Créer** pour en créer un.

1. Sélectionnez votre objectif.

1. Sélectionnez votre groupe, votre budget et votre calendrier.

1. Développez votre public cible.

1. Sélectionnez le format de votre annonce.

1. Sélectionnez votre budget et votre calendrier.

1. Configurez vos annonces.

1. Procédez à la vérification et au lancement.

# Limitations
<a name="linkedin-connector-limitations"></a>

Pour les champs Analytique `ad_analytics_all_adAccounts`, `ad_analytics_all_campaigns`, `ad_analytics_all_campaign_groups` et `ad_analytics_all_adCreatives`, un filtre est obligatoire pour récupérer les enregistrements.

# Connexion à Mailchimp.
<a name="connecting-to-mailchimp"></a>

Mailchimp est une plateforme all-in-one marketing qui vous aide à gérer et à communiquer avec vos clients, clients et autres parties intéressées. Leur approche du marketing met l’accent sur des pratiques saines de gestion des contacts, des e-mails très bien conçus, des flux de travail automatisés uniques et une analyse de données performante. Si vous utilisez Mailchimp, vous pouvez vous connecter AWS Glue à votre compte Mailchimp. Vous pouvez ensuite utiliser Mailchimp comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Mailchimp et des AWS services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Mailchimp](mailchimp-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](mailchimp-configuring-iam-permissions.md)
+ [Configuration de Mailchimp](mailchimp-configuring.md)
+ [Configuration de connexions Mailchimp](mailchimp-configuring-connections.md)
+ [Lecture à partir d’entités Mailchimp](mailchimp-reading-from-entities.md)
+ [Options de connexion Mailchimp](mailchimp-connection-options.md)
+ [Création d’un compte Mailchimp](mailchimp-create-account.md)
+ [Limitations](mailchimp-connector-limitations.md)

# AWS Glue support pour Mailchimp
<a name="mailchimp-support"></a>

AWS Glue supporte Mailchimp comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Mailchimp.

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

**Versions de l’API Mailchimp prises en charge**  
 3.0 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="mailchimp-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration de Mailchimp
<a name="mailchimp-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Mailchimp, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="mailchimp-configuring-min-requirements"></a>
+ Vous disposez d’un compte Mailchimp avec adresse e-mail et mot de passe. Pour plus d’informations sur la création d’un compte, consultez [Creating a Mailchimp account](mailchimp-create-account.md). 
+  Vous devez avoir créé AWS un compte avec l'accès au service à AWS Glue. 
+ Assurez-vous d’avoir créé l’une des ressources suivantes. Ces ressources fournissent des informations d'identification qui AWS Glue permettent d'accéder en toute sécurité à vos données lorsque vous passez des appels authentifiés vers votre compte :
  + Une application pour développeurs qui prend en charge l'authentification OAuth 2.0. Pour plus d’informations sur la création d’une application pour développeur, consultez [Creating a Mailchimp account](mailchimp-create-account.md). 

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Mailchimp. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Mailchimp.

# Configuration de connexions Mailchimp
<a name="mailchimp-configuring-connections"></a>

 Mailchimp prend en charge les deux types de mécanismes d’authentification suivants : 
+ Mailchimp prend en charge le type d’autorisation `AUTHORIZATION_CODE`.
  + Ce type d’autorisation est considéré comme `OAuth` tridimensionnel, car il repose sur la redirection des utilisateurs vers le serveur d’autorisation tiers pour authentifier l’utilisateur. Il est utilisé lors de la création de connexions via la console AWS Glue . L’utilisateur qui crée une connexion peut par défaut s’appuyer sur une application appartenant à AWS Glue connectée dans laquelle il n’a pas besoin de fournir d’informations relatives à `OAuth`, à l’exception de son ID client et de son secret client Mailchimp. La AWS Glue console redirige l'utilisateur vers Mailchimp où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Mailchimp.
  + Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Mailchimp et de fournir leur propre ID client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Mailchimp pour se connecter et autoriser l'accès AWS Glue à leurs ressources.
  + Pour consulter la documentation publique de Mailchimp sur la création d'une application connectée pour `AUTHORIZATION_CODE OAuth` Flow, voir [Accès aux données pour le compte d'autres utilisateurs avec OAuth 2](https://mailchimp.com/developer/marketing/guides/access-user-data-oauth-2/?msockid=141ebf9ffb4d619525c3ad27fad660d6). 
+ **Authentification personnalisée** : pour consulter la documentation publique de Mailchimp sur la génération des clés d’API requises pour une autorisation personnalisée, consultez [About API Keys](https://mailchimp.com/en/help/about-api-keys/?msockid=310fd0fe09d16afe034fc5de08d76b01). 



Pour configurer une connexion Mailchimp :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 
   + Authentification `OAuth` : pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 
   + Authentification personnalisée : pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec « api\$1key » comme clé. 
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous :

   1. Sous **Connexions**, sélectionnez **Créer une connexion**. 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Mailchimp.

   1. Indiquez l’`instanceUrl` Mailchimp.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez le type d’authentification pour vous connecter à Mailchimp :
      + Pour `OAuth` l'authentification : fournissez l'URL du jeton, l'application cliente gérée par l'utilisateur ClientId du Mailchimp auquel vous souhaitez vous connecter.
      + Pour une authentification personnalisée : sélectionnez le type d’authentification CUSTOM pour vous connecter à Mailchimp.

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

1. Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une connexion réseau supplémentaire.

# Lecture à partir d’entités Mailchimp
<a name="mailchimp-reading-from-entities"></a>

 **Conditions préalables** 

Un objet Mailchimp à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 
+ [Abuse-reports](https://mailchimp.com/developer/marketing/api/campaign-abuse/)
+ [Automation](https://mailchimp.com/developer/marketing/api/automation/list-automations/)
+ [Campagnes](https://mailchimp.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Click-details](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Lists](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Membres](https://mailchimp.com/developer/marketing/api/list-segment-members/)
+ [Open-details](https://mailchimp.com/developer/marketing/api/list-members/)
+ [Segments](https://mailchimp.com/developer/marketing/api/list-segments/)
+ [Stores](https://mailchimp.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Unsubscribed](https://mailchimp.com/developer/marketing/api/unsub-reports/)


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
|  Automatisation | Oui | Oui | Oui | Oui | Oui | 
| Campagnes | Non | Non | Non | Non | Non | 
| Lists | Oui | Oui | Non | Oui | Oui | 
| Reports Abuse | Non | Oui | Non | Oui | Oui | 
| Reports Open | Non | Oui | Non | Oui | Oui | 
| Reports Click | Oui | Oui | Non | Oui | Oui | 
| Reports Unsubscribe | Non | Oui | Non | Oui | Oui | 
| Segment | Non | Oui | Non | Oui | Oui | 
| Segment Members | Oui | Oui | Non | Oui | Non | 
| Stores | Oui | Oui | Oui | Oui | Non | 

 **Exemple** 

```
mailchimp_read = glueContext.create_dynamic_frame.from_options(                    
            connection_type="mailchimp",                                           
            connection_options={                                                        
                  "connectionName": "connectionName",                                   
                  "ENTITY_NAME": "stores",  
"INSTANCE_URL": "https://us14.api.mailchimp.com",                     
                  "API_VERSION": "3.0"                                                
               })
```

 **Détails des entités et des champs Mailchimp** 
+ [Abuse-reports](https://mailchimp.com/developer/marketing/api/campaign-abuse/)
+ [Automation](https://mailchimp.com/developer/marketing/api/automation/list-automations/)
+ [Campagnes](https://mailchimp.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Click-details](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Lists](https://mailchimp.com/developer/marketing/api/link-clickers/)
+ [Membres](https://mailchimp.com/developer/marketing/api/list-segment-members/)
+ [Open-details](https://mailchimp.com/developer/marketing/api/list-members/)
+ [Segments](https://mailchimp.com/developer/marketing/api/list-segments/)
+ [Stores](https://mailchimp.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Unsubscribed](https://mailchimp.com/developer/marketing/api/unsub-reports/)

## Requêtes de partitionnement
<a name="mailchimp-engage-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Le tableau suivant décrit les détails de prise en charge dans les champs de partitionnement d’entités :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/mailchimp-reading-from-entities.html)

Exemple :

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="mailchimp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "automations",
        "API_VERSION": "3.0",
        "INSTANCE_URL": "https://us14.api.mailchimp.com",
        "PARTITION_FIELD": "create_time",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```

# Options de connexion Mailchimp
<a name="mailchimp-connection-options"></a>

Les options de connexion pour Mailchimp sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Mailchimp. 
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Une URL d’instance Mailchimp valide.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest de Mailchimp Engage que vous souhaitez utiliser. Par exemple : 3.0.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Création d’un compte Mailchimp
<a name="mailchimp-create-account"></a>

1. Accédez à la [page de connexion à Mailchimp](https://login.mailchimp.com/?locale=en), saisissez votre adresse e-mail et votre mot de passe, puis choisissez **S’inscrire**.

1. Ouvrez l’e-mail de confirmation envoyé par Mailchimp et cliquez sur le lien de confirmation pour vérifier votre compte.
**Note**  
Le délai de réception de l’e-mail d’activation peut varier. Si vous n’avez pas reçu l’e-mail d’activation, consultez votre dossier de courrier indésirable et lisez nos conseils de résolution des problèmes liés à l’e-mail d’activation. Mailchimp bloque les inscriptions provenant d’adresses e-mail basées sur des rôles, telles que [admin@pottedplanter.com](mailto:admin@pottedplanter.com) ou [security@example.com](mailto:security@example.com).  


   La première fois que vous vous connectez à votre compte, Mailchimp vous demande les informations requises. Mailchimp utilise ces informations pour s’assurer que votre compte est conforme à ses Conditions d’utilisation et pour fournir des conseils adaptés à vos besoins et à ceux de votre entreprise.

1. Saisissez vos informations, suivez les instructions pour terminer le processus d’activation et lancez-vous dans votre nouveau compte Mailchimp.

**Enregistrement d’une application `OAuth2.0`**

1. Accédez à la [page de connexion à Mailchimp](https://login.mailchimp.com/?locale=en), saisissez votre adresse e-mail et votre mot de passe, puis choisissez **Se connecter**. 

1. Sélectionnez l’icône **Utilisateur** dans le coin supérieur droit, puis choisissez **Compte et facturation** dans le menu déroulant.

1. Sélectionnez **Extras** et choisissez **Applications enregistrées** dans le menu déroulant.

1. Recherchez et choisissez **Enregistrer une application**.

1. Entrez les détails suivants :
   + **Nom de l’application** : nom de l’application. 
   + **Entreprise/organisation** : nom de votre entreprise ou organisation.
   + **Site Web de l’application** : site Web de l’application.
   + **URI de redirection** : un modèle d’URI de redirection est un chemin d’URI (ou une liste de chemins séparés par des virgules) vers lequel Mailchimp peut rediriger (si demandé) une fois le flux de connexion terminé. Par exemple, `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Choisissez **Créer**. 

1. L’**ID client** et le **secret client** seront désormais visibles. Copiez-les et enregistrez-les dans un endroit sûr. Ensuite, choisissez **Terminé**. 
**Note**  
Vos chaînes d'ID client et de secret client sont des informations d'identification utilisées pour établir une connexion avec ce connecteur lors de l'utilisation de AppFlow ou AWS Glue.

**Génération d’une clé d’API**

1. Accédez à la [page de connexion à Mailchimp](https://login.mailchimp.com/?locale=en), saisissez votre adresse e-mail et votre mot de passe, puis choisissez **Se connecter**. 

1. Sélectionnez l’icône **Utilisateur** dans le coin supérieur droit, puis choisissez **Compte et facturation** dans le menu déroulant.

1. Sélectionnez **Extras** et choisissez **Clés d’API** dans le menu déroulant.

1. Sélectionnez **Créer une clé**.

1. Saisissez un nom pour la clé, puis choisissez **Générer une clé**.

   La page suivante affiche la clé d’API générée. 

1. Copiez votre clé, stockez-la en toute sécurité et choisissez **OK**.

# Limitations
<a name="mailchimp-connector-limitations"></a>

Les restrictions du connecteur Mailchimp sont les suivantes :
+ La filtration n’est prise en charge que par les entités `Campaigns`, `Automations`, `Lists`, `Open Details`, `Members` et `Segments`.
+ Lorsque vous utilisez un filtre sur un champ de type de données `DateTime`, vous devez transmettre des valeurs au format suivant : `yyyy-mm-ddThh:MM:ssZ`.

# Connexion à Microsoft Dynamics 365 CRM
<a name="connecting-to-microsoft-dynamics-365"></a>

 Microsoft Dynamics 365 est une gamme de produits d’applications métier intelligentes de planification des ressources d’entreprise et de gestion de la relation client. 

**Topics**
+ [AWS Glue support pour Microsoft Dynamics 365](microsoft-dynamics-365-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](microsoft-dynamics-365-configuring-iam-permissions.md)
+ [Configuration de Microsoft Dynamics 365 CRM](microsoft-dynamics-365-configuring.md)
+ [Configuration des connexions Microsoft Dynamics 365 CRM](microsoft-dynamics-365-configuring-connections.md)
+ [Lecture à partir d’entités Microsoft Dynamics 365 CRM](microsoft-dynamics-365-reading-from-entities.md)
+ [Référence des options de connexion Microsoft Dynamics 365 CRM](microsoft-dynamics-365-connection-options.md)
+ [Limitations](microsoft-dynamics-365-connector-limitations.md)

# AWS Glue support pour Microsoft Dynamics 365
<a name="microsoft-dynamics-365-support"></a>

AWS Glue prend en charge Microsoft Dynamics 365 comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger les données de Microsoft Dynamics 365.

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

**Versions de l’API Microsoft Dynamics 365 CRM prises en charge**  
 v9.2. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="microsoft-dynamics-365-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Microsoft Dynamics 365 CRM, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="microsoft-dynamics-365-configuring-min-requirements"></a>
+  Vous disposez d'un compte de développeur Microsoft Dynamics 365 CRM avec ClientId et Secret. 
+  Votre compte Microsoft Dynamics 365 CRM dispose d’un accès à l’API avec une licence valide. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Microsoft Dynamics 365 CRM. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Microsoft Dynamics 365 CRM. 

# Configuration des connexions Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-configuring-connections"></a>

 **Type d’autorisation AUTHORIZATION\$1CODE** 
+  Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Microsoft Dynamics 365 CRM où il doit se connecter et accorder AWS Glue les autorisations demandées pour accéder à son instance Microsoft Dynamics 365 CRM. 
+  Les utilisateurs peuvent choisir de créer leur propre application connectée dans Microsoft Dynamics 365 CRM et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Microsoft Dynamics 365 CRM pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 
+  Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 
+  Pour consulter la documentation publique de Microsoft Dynamics 365 CRM sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir \$1 Microsoft Learn. [Enregistrement des applications Microsoft](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/authenticate-oauth#app-registration). 

Microsoft Dynamics 365 CRM prend en charge l'authentification OAuth2 2.0.

Pour configurer une connexion Microsoft Dynamics 365 CRM :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 
   +  Pour le type de AuthorizationCode subvention : 

      Pour l’application connectée gérée par le client : le secret doit contenir le secret du client de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Microsoft Dynamics 365 CRM.

   1. Sélectionnez la valeur **INSTANCE\$1URL** de l’instance Microsoft Dynamics 365 CRM à laquelle vous souhaitez vous connecter.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer et qui dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez **URL du jeton** et **URL du code d’autorisation** pour accéder à votre espace de travail Microsoft Dynamics 365 CRM. 

   1.  Fournissez une **application client gérée par l'utilisateur ClientId** de votre application Microsoft Dynamics 365 CRM. 

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. Choisissez **Suivant**. 

1.  Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**. 

# Lecture à partir d’entités Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Microsoft Dynamics 365 CRM à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme contacts ou accounts. Le tableau suivant présente les entités prises en charge. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Entité dynamique | Oui | Oui | Oui | Oui | Oui | 

 **Exemple** 

```
dynamics365_read = glueContext.create_dynamic_frame.from_options(
    connection_type="microsoftdynamics365crm",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dynamic_entity",
        "API_VERSION": "v9.2",
        "INSTANCE_URL": "https://{tenantID}.api.crm.dynamics.com"
    }
```

## Détails des entités et des champs Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-entity-and-field-details"></a>

 **Entités avec métadonnées dynamiques :** 

Microsoft Dynamics 365 CRM fournit des points de terminaison pour récupérer les métadonnées de manière dynamique. Par conséquent, pour les entités dynamiques, la prise en charge des opérateurs est capturée au niveau du type de données.

<a name="microsoft-dynamics-365-metadata-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/microsoft-dynamics-365-reading-from-entities.html)

 **Requêtes de partitionnement** 

Microsoft Dynamics 365 CRM prend uniquement en charge le partitionnement basé sur les champs.

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être fournies si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-01-30T06:47:51.000Z"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau ci-dessous : 


| Nom de l'entité | Champs de partitionnement | DataType | 
| --- | --- | --- | 
| Entité dynamique (entité standard) |  DateTime Champs dynamiques interrogeables | createdon, modifiedon | 
| Entité dynamique (entité personnalisée) | createdon, modifiedon | createdon, modifiedon | 

 **Exemple** 

```
dynamics365_read = glueContext.create_dynamic_frame.from_options(
    connection_type="microsoftdynamics365crm",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dynamic_entity",
        "API_VERSION": "v9.2",
        "instanceUrl": "https://{tenantID}.api.crm.dynamics.com"
        "PARTITION_FIELD": "createdon"
        "LOWER_BOUND": "2024-01-30T06:47:51.000Z"
        "UPPER_BOUND": "2024-06-30T06:47:51.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Référence des options de connexion Microsoft Dynamics 365 CRM
<a name="microsoft-dynamics-365-connection-options"></a>

Les options de connexion pour Microsoft Dynamics 365 CRM sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Microsoft Dynamics 365 CRM. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version de l’API Rest Microsoft Dynamics 365 CRM que vous souhaitez utiliser. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `INSTANCE_URL`(Chaîne) - (Obligatoire) Une URL d’instance Microsoft Dynamics 365 CRM valide au format : `https://{tenantID}.api.crm.dynamics.com` 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. Exemple: `2024-01-30T06:47:51.000Z`. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. Exemple: `2024-06-30T06:47:51.000Z`. 

# Limitations
<a name="microsoft-dynamics-365-connector-limitations"></a>

Les restrictions pour Microsoft Dynamics 365 CRM sont les suivantes :
+  Dans Microsoft Dynamics 365 CRM, le partitionnement basé sur les enregistrements n’est pas pris en charge, car il ne prend pas en charge de paramètre de décalage. 
+  La pagination est fixée à un maximum de 500 enregistrements par page afin d’éviter les exceptions liées au serveur interne du SaaS en raison de la combinaison de limites de taille des données et de débit. 
  + [Documentation SaaS sur la pagination](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query/page-results?view=dataverse-latest)
  + [Documentation SaaS sur les limites de débit](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits?tabs=sdk)
+  Microsoft Dynamics 365 CRM prend `order by` en charge uniquement sur les champs parent pour toutes les entités. `order by` n’est pas pris en charge dans les sous-champs. 
  + Les directions ASC et DESC sont prises en charge.
  + `order by` sur plusieurs champs est pris en charge.
+  Le filtrage sur le champ « createddatetime » de l’entité standard `aadusers` génère une erreur de requête incorrecte de la part de SaaS, même s’il prend en charge la filtration. Il n’existe aucune identification spécifique d’une autre entité rencontrant un problème similaire en raison de la nature dynamique des métadonnées et la cause première n’est pas connue non plus. Elle ne peut donc pas être traitée. 
+  Les types d’objets complexes, tels que Struct, List et Map, ne prennent pas en charge le filtrage. 
+  Dans de nombreux champs pouvant être extraits d’une réponse, `isRetrievable` est marqué comme `false` dans une réponse de métadonnées dynamiques. Afin d’éviter toute perte de données, `isRetrievable` est défini sur `true` pour tous les champs. 
+  Le partitionnement basé sur les champs est pris en charge sur toutes les entités s’il répond aux critères suivants : 
  + DateTime les champs interrogeables doivent être présents dans les entités standard ou `createdon` les `modifiedon` champs (générés par le système) dans les entités personnalisées. 
  + Il n'existe aucune identification exclusive des champs générés par le système ou de la propriété nullable à partir des métadonnées SaaS APIs, mais il est courant que seuls les champs disponibles par défaut soient filtrables et non nullables. Par conséquent, le critère de sélection de champ ci-dessus est considéré comme protégé des valeurs Null et s’il est filtrable, il sera éligible au partitionnement.

# Connexion à Microsoft Teams
<a name="connecting-to-microsoft-teams"></a>

 Microsoft Teams est un espace de travail collaboratif au sein de Microsoft 365 qui sert de plateforme centrale pour les conversations sur le lieu de travail, le travail d’équipe collaboratif, les chats vidéo et le partage de documents, le tout conçu pour améliorer la productivité des employés grâce à une suite d’outils unifiée. 

**Topics**
+ [AWS Glue support pour Microsoft Teams](microsoft-teams-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](microsoft-teams-configuring-iam-permissions.md)
+ [Configuration de Microsoft Teams](microsoft-teams-configuring.md)
+ [Configuration des connexions Microsoft Teams](microsoft-teams-configuring-connections.md)
+ [Lecture à partir d’entités Microsoft Teams](microsoft-teams-reading-from-entities.md)
+ [Référence des options de connexion Microsoft Teams](microsoft-teams-connection-options.md)
+ [Limitations](microsoft-teams-connector-limitations.md)
+ [Créez un compte Microsoft Teams :](#microsoft-teams-account-creation)

# AWS Glue support pour Microsoft Teams
<a name="microsoft-teams-support"></a>

AWS Glue prend en charge Microsoft Teams comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Microsoft Teams.

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

**Versions de l’API Microsoft Teams prises en charge**  
 v1. Pour connaître la prise en charge des entités par version, consultez la section Entités prises en charge pour Source. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="microsoft-teams-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Microsoft Teams
<a name="microsoft-teams-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Microsoft Teams, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="microsoft-teams-configuring-min-requirements"></a>
+  Vous disposez d’un compte de développeur Microsoft Teams avec e-mail et mot de passe. Pour de plus amples informations, veuillez consulter [Créez un compte Microsoft Teams :](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 
+  Vous devez avoir configuré une OAuth2 application dans votre compte Microsoft qui fournit l'identifiant client et les informations d'identification secrètes qui permettent d' AWS Glue accéder à vos données en toute sécurité lorsqu'elle effectue des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Créez un compte Microsoft Teams :](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Microsoft Teams. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Microsoft Teams. 

# Configuration des connexions Microsoft Teams
<a name="microsoft-teams-configuring-connections"></a>

Microsoft Teams prend en charge les deux types de mécanismes d’authentification suivants :

1.  OAuth Auth : Microsoft Teams prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 
   +  Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée AWS Glue détenue par lui, dans laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'URL de l'instance Microsoft Teams. La AWS Glue console redirige l'utilisateur vers Microsoft Teams où il doit se connecter et accorder AWS Glue les autorisations demandées pour accéder à son instance Microsoft Teams. 
   +  Les utilisateurs peuvent choisir de créer leur propre application connectée dans Microsoft Teams et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Microsoft Teams pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 
   +  Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est actif pendant une heure et pourra être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 
   +  Pour consulter la documentation publique de Microsoft Teams sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir \$1 Microsoft Learn. [Enregistrez une application auprès de la plateforme d’identité Microsoft : Microsoft Graph](https://learn.microsoft.com/en-us/graph/auth-register-app-v2). 

Pour configurer une connexion Microsoft Teams :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l' OAuth authentification : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET comme clé. 

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1.  Sous Connexions de données, choisissez **Créer une connexion**. 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Microsoft Teams.

   1. Indiquez votre **identifiant de locataire** Microsoft Teams.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour celles-ci : 

------
#### [ JSON ]

****  

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

------

   1.  Fournir une application client gérée par l'utilisateur ClientId de l'application Microsoft Teams. 

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. Choisissez **Suivant**. 

1.  Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**. 

# Lecture à partir d’entités Microsoft Teams
<a name="microsoft-teams-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Microsoft Teams à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme team ou channel-message. Le tableau suivant présente les entités prises en charge. 

 **Entités prises en charge pour la source** 

 Toutes les entités sont prises en charge par la version 1.0 de l’API. 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Équipes | Non | Non | Non | Oui | Non | 
| Team Members | Oui | Oui | Non | Oui | Oui | 
| Groupes | Oui | Oui | Oui | Oui | Oui | 
| Group Members | Oui | Oui | Non | Oui | Non | 
| Canaux | Oui | Non | Non | Oui | Oui | 
| Channel Messages | Non | Oui | Non | Oui | Non | 
| Channel Message Replies | Non | Oui | Non | Oui | Non | 
| Channel Tabs | Oui | Non | Non | Oui | Non | 
| Chats | Oui | Oui | Oui | Oui | Oui | 
| Calendar Events | Oui | Oui | Oui | Oui | Oui | 

 **Exemple** 

```
MicrosoftTeams_read = glueContext.create_dynamic_frame.from_options(
    connection_type="MicrosoftTeams",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "v1.0"
    }
```

## Détails des entités et des champs Microsoft Teams
<a name="microsoft-teams-entity-and-field-details"></a>

 Liste des entités : 
+  Équipe : [https://docs.microsoft.com/en-us/graph/api/user-list-joinedteams ? view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/user-list-joinedteams?view=graph-rest-1.0) 
+  [Membre de l'équipe : -list-members ? https://docs.microsoft.com/en-us/ graph/api/team view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/team-list-members?view=graph-rest-1.0) 
+  Groupe : [https://docs.microsoft.com/en-us/graph/api/group-list ? view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0) 
+  [Membre du groupe : -list-members ? https://docs.microsoft.com/en-us/ graph/api/group view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0) 
+  Chaîne : [https://docs.microsoft.com/en-us/graph/api/channel-list ? view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/channel-list?view=graph-rest-1.0) 
+  [Message du canal : -list-messages ? https://docs.microsoft.com/en-us/ graph/api/channel view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/channel-list-messages?view=graph-rest-1.0) 
+  [Channel-Message-Reply : -list-replies ? https://docs.microsoft.com/en-us/ graph/api/chatmessage view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/chatmessage-list-replies?view=graph-rest-1.0) 
+  [Channel-Tab : https://docs.microsoft.com/en-us/ graph/api/channel -list-tabs ? view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/channel-list-tabs?view=graph-rest-1.0) 
+  Chat : [https://docs.microsoft.com/en-us/graph/api/chat-liste ? view=graph-rest-1.0]( https://docs.microsoft.com/en-us/graph/api/chat-list?view=graph-rest-1.0) 
+  [Calendrier-événement : -liste-événements ? https://docs.microsoft.com/en-us/ graph/api/group view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/group-list-events?view=graph-rest-1.0) 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau ci-dessous : 


| Nom de l'entité | Champs de partitionnement | Type de données | 
| --- | --- | --- | 
| Team Members | visibleHistoryStartDateTime | DateTime | 
| Groupes | createdDateTime | DateTime | 
| Canaux | createdDateTime | DateTime | 
| Chats | createdDateTime, lastModifiedDate Heure | DateTime | 
| Calendar Events | createdDateTime, lastModifiedDate Heure, Début initial | DateTime | 

 **Exemple** 

```
microsoftteams_read = glueContext.create_dynamic_frame.from_options(
    connection_type="MicrosoftTeams",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "group",
        "API_VERSION": "v1.0",
        "PARTITION_FIELD": "createdDateTime"
        "LOWER_BOUND": "2022-07-13T07:55:27.065Z"
        "UPPER_BOUND": "2022-08-12T07:55:27.065Z"
        "NUM_PARTITIONS": "2"
    }
```

# Référence des options de connexion Microsoft Teams
<a name="microsoft-teams-connection-options"></a>

Les options de connexion pour Microsoft Teams sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Microsoft Teams. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version de l’API Rest Microsoft Teams que vous souhaitez utiliser. Exemple : v1.0. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Limitations
<a name="microsoft-teams-connector-limitations"></a>

Les restrictions pour le connecteur Microsoft Teams sont les suivantes :
+  L’API Microsoft Teams renvoie un nombre d’enregistrements inférieur à celui spécifié pour les entités Chat et Team Member. Ce problème a été signalé au support Microsoft Teams et fait actuellement l’objet d’une enquête. 

## Créez un compte Microsoft Teams :
<a name="microsoft-teams-account-creation"></a>

1.  Accédez à la page d'accueil de Microsoft Teams, [https://account.microsoft.com/account/](https://account.microsoft.com/account/)puis choisissez **Se connecter**. 

1.  Sélectionnez **Créer un compte**. 

1.  Entrez les informations requises pour la création du compte et créez un compte. 

1.  Accédez au site Web de Microsoft Teams à l'adresse [https://www.microsoft.com/en-in/microsoft-teams/log-in](https://www.microsoft.com/en-in/microsoft-teams/log-in). 

1.  Inscrivez-vous à l’aide du compte Microsoft que vous venez de créer. 

1.  Une fois votre inscription réussie sur Teams, accédez à [https://account.microsft.com/services](https://account.microsft.com/services). 

1.  Choisissez **Essayer Microsoft 365**. 

1.  Activez l’un des abonnements Microsoft 365 ou Microsoft Teams ci-dessous pour accéder à toutes les fonctionnalités requises du connecteur Microsoft Teams : 
   + Microsoft Teams Essentials
   + Microsoft 365 Business
   + Microsoft 365 Business Basic
   + Microsoft 365 Business Standard
   + Microsoft 365 Business Premium

**Créez une application client gérée :**

1.  Pour créer une application gérée, vous devez enregistrer une nouvelle OAuth application sur Microsoft Entra (anciennement Azure Active Directory) : 

1.  Connectez-vous au [centre d’administration Microsoft Entra](https://entra.microsoft.com). 

1.  Si vous avez accès à plusieurs locataires, utilisez l’icône Paramètres dans le menu supérieur pour passer au client dans lequel vous souhaitez enregistrer l’application depuis le menu Répertoires \$1 abonnements. 

1.  Accédez à Identité > Applications > Enregistrements d’applications et sélectionnez **Nouvel enregistrement**. 

1. Saisissez un nom d’affichage pour votre application.

1.  Indiquez qui peut utiliser l’application dans la section Types de comptes pris en charge. Pour que cette application soit globale, sélectionnez « Comptes dans n’importe quel répertoire d’organisation » ou « Comptes dans n’importe quel répertoire d’organisation et comptes Microsoft personnels ». 

1.  Entrez l’URI de redirection `https://{region}.console.aws.amazon.com/appflow/oauth`. Par exemple, pour la `us-west-2 region`, ajoutez `https://us-west-2.console.aws.amazon.com/appflow/oauth`. Vous pouvez en ajouter plusieurs URLs pour les différentes régions que vous souhaitez utiliser.

1.  Enregistrez l’application. 

1.  Notez l’ID client pour un usage ultérieur. 

1.  Choisissez **Ajouter un certificat ou un secret** dans la section Essentials. 

1.  Choisissez **Nouveau secret client**. 

1.  Entrez la description et la durée d’expiration. 

1.  Copiez et enregistrez le secret client pour une utilisation future. 

1.  Dans la liste du menu de gauche, sélectionnez **Autorisations d’API**. 

1.  Choisissez **Ajouter une autorisation**. 

1.  Sélectionnez « Microsoft Graph ». 

1.  Sélectionnez « Autorisations déléguées ». 

1.  Vérifiez toutes les autorisations suivantes : 
   + User.Read
   + Offline\$1access
   + User.Read.All
   + Utilisateur. ReadWrite.Tout
   + TeamsTab.ReadWriteForTeam
   + TeamsTab.ReadWriteForChat
   + TeamsTab. ReadWrite.Tout
   + TeamsTab. Lisez. Tout
   + TeamSettings. ReadWrite.Tout
   + TeamSettings. Lisez. Tout
   + TeamMember. ReadWrite.Tout
   + TeamMember. Lisez. Tout
   + L'équipe. ReadBasic.Tout
   + GroupMember. ReadWrite.Tout
   + GroupMember. Lisez. Tout
   + Groupe. ReadWrite.Tout
   + Group.Read.All
   + Annuaire. ReadWrite.Tout
   + Directory.Read.All
   + Annuaire. AccessAsUser.Tout
   + Discuter. ReadWrite
   + Discuter. ReadBasic
   + Chat.Read
   + ChannelSettings. ReadWrite.Tout
   + ChannelSettings. Lisez. Tout
   + ChannelMessage. Lisez. Tout
   + Canal. ReadBasic.Tout

1.  Choisissez **Ajouter des autorisations**. Votre application est maintenant correctement configurée. Vous pouvez utiliser l’ID et le secret client pour créer une connexion. Pour plus d'informations, voir [https://learn.microsoft.com/en-us/graph/ auth-register-app-v 2.](https://learn.microsoft.com/en-us/graph/auth-register-app-v2) 

# Connexion à Mixpanel
<a name="connecting-to-mixpanel"></a>

Mixpanel est une plateforme analytique en temps réel performante qui aide les entreprises à mesurer et à optimiser l’engagement des utilisateurs. Mixpanel est une application utilisée pour suivre le comportement des clients. Cela vous permet de suivre la manière dont les utilisateurs interagissent avec votre produit et d’analyser ces données à l’aide de rapports interactifs qui vous permettent de consulter et de visualiser les résultats en quelques clics. En tant qu'utilisateur de Mixpanel, vous pouvez vous connecter AWS Glue à votre compte Mixpanel. Vous pouvez ensuite utiliser Mixpanel comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Mixpanel et AWS des services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Mixpanel](Mixpanel-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](mixpanel-configuring-iam-permissions.md)
+ [Configuration de Mixpanel](mixpanel-configuring.md)
+ [Configuration de connexions Mixpanel](mixpanel-configuring-connections.md)
+ [Lecture à partir d’entités Mixpanel](mixpanel-reading-from-entities.md)
+ [Options de connexion Mixpanel](mixpanel-connection-options.md)
+ [Création d’un compte Mixpanel et configuration de l’application client](mixpanel-create-account.md)
+ [Limitations](mixpanel-connector-limitations.md)

# AWS Glue support pour Mixpanel
<a name="Mixpanel-support"></a>

AWS Glue supporte Mixpanel comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Mixpanel.

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

**Versions de l’API Mixpanel prises en charge**  
 2.0 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="mixpanel-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration de Mixpanel
<a name="mixpanel-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Mixpanel, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="mixpanel-configuring-min-requirements"></a>
+  Vous disposez d’un compte Mixpanel. Pour plus d’informations sur la création d’un compte, consultez [Creating a Mixpanel account](mixpanel-create-account.md). 
+  Votre compte Mixpanel est activé pour accéder à l’API. L’accès à l’API est activé par défaut pour les éditions Enterprise, Unlimited, Developer et Performance. 

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Mixpanel. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Mixpanel.

# Configuration de connexions Mixpanel
<a name="mixpanel-configuring-connections"></a>

Mixpanel prend en charge le nom d’utilisateur et le mot de passe pour `BasicAuth`. L'authentification de base est une méthode d'authentification simple dans laquelle les clients fournissent des informations d'identification directement pour accéder aux ressources protégées. AWS Glue est capable d'utiliser le nom d'utilisateur et le mot de passe pour authentifier APIs Mixpanel. 

Pour découvrir la documentation publique de Mixpanel sur le flux `BasicAuth`, consultez [Mixpanel Service Accounts](https://developer.mixpanel.com/reference/service-accounts). 

Pour configurer une connexion Mixpanel :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 
   +  Pour l’authentification de base, le secret doit contenir le secret du consommateur de l’application connectée avec `USERNAME` et `PASSWORD` comme clé. 
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans le AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez **Mixpanel**.

   1. Indiquez l’`INSTANCE_URL` de Mixpanel à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez **Options réseau** si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Mixpanel
<a name="mixpanel-reading-from-entities"></a>

 **Conditions préalables** 

Vous devez disposer d’un objet Mixpanel, tel que `Funnels`, `Retention` ou `Retention Funnels`, à partir duquel vous souhaitez lire des données. En outre, vous devez connaître le nom de l’objet.

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Funnels | Oui | Non | Non | Oui | Non | 
| Retention | Oui | Non | Non | Oui | Non | 
| Segmentation | Oui | Non | Non | Oui | Non | 
| Segmentation Sum | Oui | Non | Non | Oui | Non | 
| Segmentation Average | Oui | Non | Non | Oui | Non | 
| Cohorts | Oui | Non | Non | Oui | Non | 
| Engage | Non | Oui | Non | Oui | Non | 
| Événements | Oui | Non | Non | Oui | Non | 
| Events Top | Oui | Non | Non | Oui | Non | 
| Events Names | Oui | Non | Non | Oui | Non | 
| Events Properties | Oui | Non | Non | Oui | Non | 
| Events Properties Top | Oui | Non | Non | Oui | Non | 
| Events Properties Values | Oui | Non | Non | Oui | Non | 
| Annotations | Oui | Non | Non | Oui | Non | 
| Profile Event Activity | Oui | Non | Non | Oui | Non | 

 **Exemple** 

```
mixpanel_read = glueContext.create_dynamic_frame.from_options(
    connection_type="mixpanel",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/cohorts/list?project_id=2603353",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://www.mixpanel.com/api/app/me"
    }
```

 **Détails des entités et des champs Mixpanel** 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/mixpanel-reading-from-entities.html)

# Options de connexion Mixpanel
<a name="mixpanel-connection-options"></a>

Les options de connexion pour Mixpanel sont les suivantes :
+  `ENTITY_NAME` (Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Mixpanel. 
+  `API_VERSION` (Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Mixpanel que vous souhaitez utiliser. Par exemple : v2.0. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 

# Création d’un compte Mixpanel et configuration de l’application client
<a name="mixpanel-create-account"></a>

**Création d’un compte Mixpanel**

1. Accédez à la [page d’accueil de Mixpanel](https://mixpanel.com/). 

1. Sur la page d’accueil de **Mixpanel**, choisissez **S’inscrire** dans le coin supérieur droit de la page. 

1. Sur la page **Démarrer**, effectuez les actions suivantes : 
   + Dans la zone prévue à cet effet, saisissez votre adresse e-mail.
   + Cochez la case requise pour accepter les conditions.
   + Choisissez **Démarrer** pour continuer.

     Une fois l’opération terminée, vous recevrez un e-mail de vérification. 

1. Vérifiez la présence d’un message de vérification dans votre boîte de réception, ouvrez l’e-mail et suivez les instructions pour vérifier votre adresse e-mail. 

1. Sur la page de vérification, choisissez **Vérifier l’adresse e-mail** pour terminer la vérification de votre adresse e-mail. 

1. Sur la page **Nommer votre organisation**, saisissez le nom de votre organisation et choisissez **Suivant**. 

1. Sur la page **Votre premier projet**, entrez les détails de votre projet et choisissez **Créer**.

1. Sur la page suivante, choisissez **Démarrer** pour terminer la création de votre compte. 

**Connexion à un compte Mixpanel**

1. Accédez à la [page de connexion de Mixpanel](https://mixpanel.com/login/). 

1. Entrez votre adresse e-mail, puis choisissez **Continuer**. 

1. Vérifiez la présence d’un message de vérification dans votre boîte de réception, ouvrez l’e-mail et suivez les instructions pour vérifier votre adresse e-mail. 

1. Sur la page suivante, cliquez sur le bouton **Se connecter** pour vous connecter à votre compte. 

**Achat d’une offre Mixpanel**

1. Sur la page Mixpanel, sélectionnez l’icône **Paramètres** dans l’angle supérieur droit.

1. Dans la liste des options, sélectionnez **Détails de l’offre et facturation**. 

1. Sur la page **Détails de l’offre et facturation**, sélectionnez **Mettre à niveau ou Modifier**.

1. Sur la page suivante, sélectionnez l’offre que vous souhaitez acheter.

   Ceci termine le processus de création de compte et d’achat de l’offre.

**Création d’un nom d’utilisateur et d’un secret client (pour enregistrer votre application)**

1. Sur la page Mixpanel, sélectionnez l’icône **Paramètres** dans le coin supérieur droit. 

1. Dans la liste des options, sélectionnez **Paramètres du projet**. 

1. Sur la page **Paramètres du projet**, sélectionnez **Comptes de service**, puis **Ajouter un compte de service**.

1. Dans la liste déroulante **Comptes de service**, sélectionnez le **compte de service ou entrez le nom à créer**, ajoutez le **rôle du projet**, spécifiez les **dates d’expiration** et sélectionnez **Ajouter**. 
**Important**  
Une fois l’étape précédente terminée, la page suivante affiche la clé secrète du compte de service. Assurez-vous de sauvegarder la clé secrète du compte de service. Passé ce point, vous ne pourrez pas y accéder à nouveau.

# Limitations
<a name="mixpanel-connector-limitations"></a>

Les restrictions du connecteur Mixpanel sont les suivantes :
+ Pour l’entité `Segmentation Numeric`, l’API Mixpanel génère une erreur `400 (Bad Request)` si aucune donnée numérique n’est trouvée pour les filtres obligatoires. Nous traitons cela comme une réponse `OK` visant à prévenir les pannes de débit.
+ Le champ interrogeable `limit` a été supprimé des entités prises en charge pour les raisons suivantes :
  + Il provoquait des erreurs, car il était interprété comme la fonctionnalité de limite du kit SDK.
  + Le filtre n’avait aucune utilité pratique.
  + Une fonctionnalité équivalente est désormais couverte par l’implémentation de la fonctionnalité de limite.
+ Le partitionnement basé sur les champs ne peut pas être pris en charge en raison de l’absence d’opérateurs requis (`>=`, `<=`, `<`, `>`, `between`) pour le partitionnement depuis la plateforme SaaS. Bien qu’il prenne en charge l’opérateur `between`, les champs pour lesquels il prend en charge cet opérateur ne sont pas récupérables. Par conséquent, les critères de partitionnement basé sur les champs ne sont pas satisfaits.
+  Comme il n’existe aucune disposition permettant d’obtenir une valeur de « décalage » pour les entités prenant en charge la pagination, il n’est pas possible de prendre en charge le partitionnement basé sur les enregistrements pour Mixpanel.
+ L’entité `Cohorts` ne prend en charge que le champ `CreatedDate/Time` et il n’y a aucun champ pour identifier `UpdatedDate/Time`. Par conséquent, `DML_Status` ne peut pas être identifié. De plus, il n’existe aucun point de terminaison pour identifier les enregistrements supprimés. Par conséquent, la pris en charge de CDC n’est pas possible.
+  Pour exécuter une AWS Glue tâche pour les entités mentionnées ci-dessous, des filtres obligatoires sont requis. Reportez-vous au tableau ci-dessous pour obtenir les noms d’entités et leurs filtres requis.  
**Nom de l’entité et filtres requis**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/mixpanel-connector-limitations.html)

# Connexion à Monday
<a name="connecting-to-monday"></a>

 Monday.com est un système d’exploitation de travail polyvalent qui rationalise la gestion de projet et la collaboration en équipe. Il propose des flux de travail personnalisables, des tableaux de bord visuels et des outils d’automatisation pour améliorer la productivité. Les utilisateurs peuvent suivre les tâches, gérer les ressources et communiquer efficacement sur une plateforme intégrée. 

**Topics**
+ [AWS Glue support pour le lundi](monday-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](monday-configuring-iam-permissions.md)
+ [Configuration de Monday](monday-configuring.md)
+ [Configuration de connexions Monday](monday-configuring-connections.md)
+ [Lecture à partir d’entités Monday](monday-reading-from-entities.md)
+ [Référence des options de connexion Monday](monday-connection-options.md)
+ [Limitations](monday-connector-limitations.md)
+ [Créer un compte Monday :](#monday-account-creation)

# AWS Glue support pour le lundi
<a name="monday-support"></a>

AWS Glue prend en charge le lundi comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données à partir du lundi.

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

**Versions d’API Monday prises en charge**  
 v2. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="monday-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Monday
<a name="monday-configuring"></a>

Avant de pouvoir transférer AWS Glue des données à partir du lundi, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="monday-configuring-min-requirements"></a>
+  Vous disposez d’un compte de développeur Monday avec e-mail et mot de passe. Pour de plus amples informations, veuillez consulter [Créer un compte Monday :](connecting-to-monday.md#monday-account-creation). 
+  Votre compte de développeur Monday est activé pour accéder à l’API. Toute utilisation du lundi APIs est disponible sans frais supplémentaires pendant la période d'essai. Une fois la période d’essai terminée, vous devez acheter un abonnement pour créer des données et y accéder. Pour plus d’informations, consultez la [page des licences de Monday](https://developer.monday.com/api-reference/reference/about-the-api-reference). 

 Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Monday. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Monday. 

# Configuration de connexions Monday
<a name="monday-configuring-connections"></a>

Monday prend en charge les deux types de mécanismes d’authentification suivants :

1.  OAuth Auth : Monday prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 
   +  Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée AWS Glue détenue par lui, dans laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'URL de l'instance du lundi. La AWS Glue console redirigera l'utilisateur vers Monday, où il devra se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Monday. 
   +  Les utilisateurs doivent choisir de créer leur propre application connectée le lundi et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers le lundi pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 
   +  Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est actif pendant une heure et pourra être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 
   +  Pour plus d'informations, consultez [la documentation sur la création d'une application connectée pour le flux AUTHORIZATION\$1CODE OAuth ](https://developers.Monday.com/docs/api/v1/Oauth). 

1.  Authentification personnalisée : 
   +  Pour consulter la documentation publique du lundi sur la génération des clés d'API requises pour une autorisation personnalisée, voir [https://developer.monday.com/api-reference/api-token-permissionsdocs/authentication\$1](https://developer.monday.com/api-reference/docs/authentication#api-token-permissions). 

Pour configurer une connexion Monday :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l' OAuth authentification : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET comme clé. 

   1.  Pour l’authentification personnalisée : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `personalAccessToken` comme clé. 

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1.  Sous Connexions de données, choisissez **Créer une connexion**. 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Monday.

   1. Indiquez l’**URL de votre instance** Monday.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour celles-ci : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez le type d’authentification pour vous connecter à Monday 
      +  Pour OAuth l'authentification : indiquez l'**URL du jeton** et **l'application client gérée par l'utilisateur ClientId ** du lundi auquel vous souhaitez vous connecter. 
      +  Pour une authentification personnalisée : sélectionnez le type d’authentification **CUSTOM** pour vous connecter à Monday. 

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. Choisissez **Suivant**. 

1.  Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**. 

# Lecture à partir d’entités Monday
<a name="monday-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Monday à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge pour la source** 

 Liste des entités : 
+  Compte : [https://developer.monday.com/api-reference/docs/account \$1queries](https://developer.monday.com/api-reference/docs/account#queries) 
+  Forum : [https://developer.monday.com/api-reference/docs/boards \$1queries](https://developer.monday.com/api-reference/docs/boards#queries) 
+  Colonne : [https://developer.monday.com/api-reference/docs/columns \$1queries](https://developer.monday.com/api-reference/docs/columns#queries) 
+  Documents : [https://developer.monday.com/api-reference/docs/docs](https://developer.monday.com/api-reference/docs/docs#queries) \$1queries 
+  Bloc de documents : [https://developer.monday.com/api-reference/docs/blocks \$1queries](https://developer.monday.com/api-reference/docs/blocks#queries) 
+  Fichiers : [https://developer.monday.com/api-reference/docs/files](https://developer.monday.com/api-reference/docs/files#queries) \$1queries 
+  Dossiers : [https://developer.monday.com/api-reference/docs/folders](https://developer.monday.com/api-reference/docs/folders#queries) \$1queries 
+  Groupes : [https://developer.monday.com/api-reference/docs/groups](https://developer.monday.com/api-reference/docs/groups#queries) \$1queries 
+  Numéro d'objet : [https://developer.monday.com/api-reference/docs/items \$1queries](https://developer.monday.com/api-reference/docs/items#queries) 
+  Sous-éléments : [https://developer.monday.com/api-reference/docs/subitems](https://developer.monday.com/api-reference/docs/subitems#queries) \$1queries 
+  Mots clés : [https://developer.monday.com/api-reference/docs/tags-queries \$1queries](https://developer.monday.com/api-reference/docs/tags-queries#queries) 
+  Équipes : [https://developer.monday.com/api-reference/docs/teams](https://developer.monday.com/api-reference/docs/teams#queries) \$1queries 
+  Mises à jour : [https://developer.monday.com/api-reference/docs/updates](https://developer.monday.com/api-reference/docs/updates#queries) \$1queries 
+  Utilisateurs : [https://developer.monday.com/api-reference/docs/users \$1queries](https://developer.monday.com/api-reference/docs/users#queries) 
+  Espaces de travail : [https://developer.monday.com/api-reference/docs/espaces](https://developer.monday.com/api-reference/docs/workspaces#queries) de travail \$1queries 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Compte | Non | Non | Non | Oui | Non | 
| Boards | Oui | Oui | Non | Oui | Non | 
| Columns | Non | Non | Non | Oui | Non | 
| Docs | Oui | Oui | Non | Oui | Non | 
| Document Blocks | Non | Oui | Non | Oui | Non | 
| Fichiers | Oui | Non | Non | Oui | Non | 
| Groupes | Non | Non | Non | Oui | Non | 
| Élément | Oui | Oui | Non | Oui | Non | 
| Subitems | Non | Non | Non | Oui | Non | 
| Étiquettes | Oui | Non | Non | Oui | Oui | 
| Équipes | Oui | Non | Non | Oui | Non | 
| Mises à jour | Non | Oui | Non | Oui | Non | 
| Utilisateurs | Oui | Oui | Non | Oui | Non | 
| Espaces de travail | Oui | Oui | Non | Oui | Non | 
| Dossiers | Oui | Oui | Non | Oui | Non | 

 **Exemple** 

```
monday_read = glueContext.create_dynamic_frame.from_options(
     connection_type="monday",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "account",
         "API_VERSION": "v2"
     }
```

# Référence des options de connexion Monday
<a name="monday-connection-options"></a>

Les options de connexion pour Monday sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Monday. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Monday que vous souhaitez utiliser. Exemple : v2. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 

# Limitations
<a name="monday-connector-limitations"></a>

Les restrictions du connecteur Monday sont les suivantes :
+  La réponse de métadonnées dynamiques présente certains conflits avec la documentation, comme indiqué ci-dessous : 
  +  L’entité Group, Column prend en charge les opérations de filtrage, mais elle n’est pas présente dans le point de terminaison des métadonnées dynamiques et est donc conservée en tant qu’entité non filtrable. 
  +  Le point de terminaison dynamique comprend environ 15 000 lignes et renvoie les métadonnées de toutes les entités en une seule réponse. De ce fait, le chargement des champs prend en moyenne 10 secondes, ce qui nécessiterait un certain temps supplémentaire lors de l’exécution d’une tâche. 
  +  Consultez le tableau ci-dessous pour connaître la limite de débit de Monday. La taille importante des données de réponse de l’entité dynamique entraîne un retard notable, les champs nécessitant en moyenne 10 secondes pour se charger.     
<a name="monday-rate-limit-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/monday-connector-limitations.html)

## Créer un compte Monday :
<a name="monday-account-creation"></a>

1.  Accédez à la page d'accueil de Monday, [https://monday.com/](https://monday.com/)et choisissez **Login**. 

1.  Vous serez redirigé vers la page de connexion. Au bas de la page, cliquez sur **S’inscrire**. 

1.  Entrez votre adresse e-mail, puis choisissez **Continuer**. Vous pouvez également vous connecter avec Google. 

1.  Saisissez les détails requis, puis choisissez **Continuer**. 

1.  Répondez aux questions de l’enquête et suivez les étapes pour terminer le processus de création de compte. 

**Enregistrez une OAuth application :**

1.  Connectez-vous à votre compte monday.com. Cliquez sur votre avatar (icône d’image) dans le coin inférieur gauche de votre écran. 

1.  Choisissez **Développeur**. 

1.  Sélectionnez **Créer une application**. 

1.  Renseignez les champs obligatoires pour le nom et la description. 

1. Accédez à la section « OAuth » présente sur le côté droit, ajoutez les portées et choisissez « Enregistrer la fonctionnalité ».

1.  Accédez à l’onglet « URL de redirection » à côté de la portée, ajoutez l’URL de redirection et choisissez « Enregistrer la fonctionnalité ». 

1.  Dans l'** URLsonglet Redirection**, indiquez l'URL de votre application. Cela devrait être https://\$1region-code\$1.console.aws.amazon.com/appflow/ OAuth. Par exemple, si vous utilisez `us-east-1 `, vous pouvez ajouter `https://us-east-1.console.aws.amazon.com/appflow/oauth`. 

1.  L’application est maintenant prête à être utilisée. Vous trouverez vos informations d’identification dans la section « Informations de base ». Notez vos chaînes d’ID client et de secret client. Ces chaînes sont utilisées pour établir une connexion avec cette application à l'aide d'un AppFlow connecteur. 

**Générer un jeton d’accès personnel :**

 Actuellement, monday.com ne propose que nos jetons API V2, qui sont tous des jetons personnels. Pour accéder à vos jetons d’API, vous pouvez utiliser l’une des deux méthodes suivantes en fonction de votre niveau d’utilisateur. Les utilisateurs administrateurs peuvent utiliser les deux méthodes pour acquérir leurs jetons d’API. Les utilisateurs membres peuvent accéder à leurs jetons d’API depuis leurs onglets Développeur. 

 Administrateurs : si vous êtes un utilisateur administrateur de votre compte monday.com, vous pouvez accéder à vos jetons d’API depuis l’onglet « Admin » en procédant comme suit : 

1.  Connectez-vous à votre compte monday.com. Cliquez sur votre avatar (icône d’image) dans le coin inférieur gauche de votre écran. 

1.  Sélectionnez « Administration » dans le menu qui s’affiche (vous devez disposer des autorisations d’administrateur). 

1.  Accédez à la section « API » et générez un « jeton d’API V2 ». Vous pouvez copier votre jeton et l’utiliser. 

 Développeur : si vous êtes un utilisateur membre de votre compte monday.com, vous pouvez accéder à vos jetons d’API depuis l’onglet Développeur en procédant comme suit : 

1.  Connectez-vous à votre compte monday.com. Cliquez sur votre avatar (icône d’image) dans le coin inférieur gauche de votre écran. 

1.  Sélectionnez « Développeurs » dans le menu qui s’affiche. 

1.  Dans le menu supérieur, choisissez le menu déroulant « Développeur ». Sélectionnez la première option dans le menu déroulant intitulé « Mes jetons d’accès ». 

# Connexion à MongoDB dans AWS Glue Studio
<a name="connecting-to-data-mongodb"></a>

 AWS Glue fournit une prise en charge intégrée pour MongoDB. AWS Glue Studio fournit une interface visuelle pour se connecter à MongoDB, créer des tâches d'intégration de données et les exécuter sur l'exécution Spark AWS Glue Studio sans serveur. 

**Topics**
+ [Création d'une connexion MongoDB](creating-mongodb-connection.md)
+ [Création d'un nœud source MongoDB](creating-mongodb-source-node.md)
+ [Création d'un nœud cible MongoDB](creating-mongodb-target-node.md)
+ [Options avancées](#creating-mongodb-connection-advanced-options)

# Création d'une connexion MongoDB
<a name="creating-mongodb-connection"></a>

**Prérequis :**
+ Si votre instance MongoDB se trouve dans un Amazon VPC, configurez Amazon VPC pour permettre à votre AWS Glue tâche de communiquer avec l'instance MongoDB sans que le trafic ne transite par l'Internet public. 

  Dans Amazon VPC, identifiez ou créez un **VPC**, un **sous-réseau** et un **groupe de sécurité** qui AWS Glue seront utilisés lors de l'exécution de la tâche. En outre, vous devez vous assurer qu'Amazon VPC est configuré pour autoriser le trafic réseau entre votre instance MongoDB et cet emplacement. Selon la configuration de votre réseau, cela peut nécessiter des modifications des règles du groupe de sécurité, du réseau ACLs, des passerelles NAT et des connexions d'appairage.

**Pour configurer une connexion à MongoDB :**

1. Vous pouvez éventuellement créer un secret à AWS Secrets Manager l'aide de vos informations d'identification MongoDB. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `username` contenant la valeur. *mongodbUser*

     Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `password` contenant la valeur. *mongodbPass*

1. Dans la AWS Glue console, créez une connexion en suivant les étapes décrites dans[Ajouter une AWS Glue connexion](console-connections.md). Après avoir créé la connexion, conservez le nom de la connexion pour une utilisation future dans AWS Glue. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez **MongoDB** ou **MongoDB Atlas**.
   + Lorsque vous sélectionnez une **URL MongoDB** ou une **URL MongoDB Atlas**, indiquez le nom d'hôte de votre instance MongoDB.

     Une URL MongoDB est fournie au format `mongodb://mongoHost:mongoPort/mongoDBname`.

     Une URL MongoDB Atlas est fournie au format `mongodb+srv://mongoHost/mongoDBname`.
   + Si vous avez choisi de créer un secret Secrets Manager, choisissez le **type AWS Secrets Manager d'identifiant**.

     Ensuite, dans **AWS Secret**, fournissez*secretName*.
   + Si vous choisissez de fournir un **nom d'utilisateur et un mot de passe**, fournissez *mongodbUser* et*mongodbPass*.

1. Dans les situations suivantes, vous pouvez avoir besoin d'une configuration supplémentaire :
   + 

     Pour les instances MongoDB hébergées AWS dans un Amazon VPC
     + Vous devrez fournir les informations de connexion Amazon VPC à la AWS Glue connexion qui définit vos informations d'identification de sécurité MongoDB. Lorsque vous créez ou mettez à jour votre connexion, définissez le **VPC**, le **sous-réseau** et les **groupes de sécurité** dans les **options réseau**.

Après avoir créé une connexion AWS Glue MongoDB, vous devez effectuer les étapes suivantes avant d'exécuter votre AWS Glue tâche :
+ Lorsque vous travaillez avec des AWS Glue tâches dans l'éditeur visuel, vous devez fournir les informations de connexion Amazon VPC pour que votre tâche se connecte à MongoDB. Identifiez un emplacement approprié dans Amazon VPC et fournissez-le à votre connexion AWS Glue MongoDB.
+ Si vous avez choisi de créer un secret Secrets Manager, accordez au rôle IAM associé à votre AWS Glue tâche l'autorisation de lecture*secretName*.

# Création d'un nœud source MongoDB
<a name="creating-mongodb-source-node"></a>

## Prérequis
<a name="creating-mongodb-source-node-prerequisites"></a>
+ Une connexion AWS Glue MongoDB, comme décrit dans la section précédente,. [Création d'une connexion MongoDB](creating-mongodb-connection.md)
+ Si vous choisissez de créer un secret Secrets Manager, allouez des autorisations pour votre tâche pour lire le secret utilisé par la connexion.
+ Une collection MongoDB à partir de laquelle vous souhaitez lire. Vous aurez besoin des informations d'identification pour la collection.

  Une collection MongoDB est identifiée par un nom de base de données et un nom de collection,,*mongodbName*. *mongodbCollection*

## Ajout d'une source de données MongoDB
<a name="creating-mongodb-source-node-add"></a>

**Pour ajouter un nœud **Source de données – MongoDB** :**

1.  Choisissez la connexion pour votre source de données MongoDB. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion MongoDB**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion MongoDB](creating-mongodb-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Choisissez une **Base de données**. Saisissez *mongodbName*.

1. Choisissez une **Collection**. Saisissez *mongodbCollection*.

1. Choisissez votre **Partitionneur**, la **Taille de partition (Mo)** et la **Clé de partition**. Pour plus d'informations sur les paramètres de partition, consultez [« connectionType »: « mongodb » comme source](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source).

1.  Dans les **Propriétés MongoDB personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible MongoDB
<a name="creating-mongodb-target-node"></a>

## Prérequis
<a name="creating-mongodb-target-node-prerequisites"></a>
+ Une connexion AWS Glue MongoDB, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,. [Création d'une connexion MongoDB](creating-mongodb-connection.md)
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table MongoDB dans laquelle vous souhaitez écrire,. *tableName*

## Ajout d'une cible de données MongoDB
<a name="creating-mongodb-target-node-add"></a>

**Pour ajouter un nœud **Cible de données – MongoDB** :**

1.  Choisissez la connexion pour votre source de données MongoDB. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion MongoDB**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion MongoDB](creating-mongodb-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Choisissez une **Base de données**. Saisissez *mongodbName*.

1. Choisissez une **Collection**. Saisissez *mongodbCollection*.

1. Choisissez votre **Partitionneur**, la **Taille de partition (Mo)** et la **Clé de partition**. Pour plus d'informations sur les paramètres de partition, consultez [« connectionType »: « mongodb » comme source](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source).

1. Choisissez **Réessayer les écritures** si vous le souhaitez.

1.  Dans les **Propriétés MongoDB personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

## Options avancées
<a name="creating-mongodb-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d'un nœud MongoDB. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Consultez [Référence des options de connexion MongoDB](aws-glue-programming-etl-connect-mongodb-home.md#aws-glue-programming-etl-connect-mongodb). 

# Connexion à Oracle NetSuite
<a name="connecting-to-data-oracle-netsuite"></a>

Oracle NetSuite est une solution de gestion d'entreprise all-in-one dans le cloud qui aide les entreprises à fonctionner plus efficacement en automatisant les processus de base et en fournissant une visibilité en temps réel sur les performances opérationnelles et financières. Grâce à une suite unique et intégrée d'applications pour la gestion de la comptabilité, du traitement des commandes, de la gestion des stocks, de la production, de la chaîne d'approvisionnement et des opérations d'entrepôt, Oracle NetSuite donne aux entreprises une visibilité claire sur leurs données et un contrôle plus strict de leurs activités.

**Topics**
+ [AWS Glue support pour Oracle NetSuite](oracle-netsuite-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](oracle-netsuite-configuring-iam-permissions.md)
+ [Configuration d'Oracle NetSuite](oracle-netsuite-configuring.md)
+ [Configuration des NetSuite connexions Oracle](oracle-netsuite-configuring-connections.md)
+ [Lecture à partir d' NetSuite entités Oracle](oracle-netsuite-reading-from-entities.md)
+ [Options de NetSuite connexion Oracle](oracle-netsuite-connection-options.md)
+ [Limitations et remarques relatives au NetSuite connecteur Oracle](oracle-netsuite-connector-limitations.md)

# AWS Glue support pour Oracle NetSuite
<a name="oracle-netsuite-support"></a>

AWS Glue prend en charge Oracle NetSuite comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger les données d'Oracle NetSuite.

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

**Versions d' NetSuite API Oracle prises en charge**  
Les versions suivantes de NetSuite l'API Oracle sont prises en charge :
+ v1

Pour connaître la prise en charge des entités par version, consultez la section Entités prises en charge pour Source.

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="oracle-netsuite-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration d'Oracle NetSuite
<a name="oracle-netsuite-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Oracle NetSuite, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="oracle-netsuite-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous avez un NetSuite compte Oracle. Pour de plus amples informations, veuillez consulter [Création d'un NetSuite compte Oracle](#oracle-netsuite-configuring-creating-oracle-netsuite-account).
+ Votre NetSuite compte Oracle est activé pour accéder à l'API.
+ Vous avez créé une intégration d'API OAuth 2.0 dans votre compte de NetSuite développeur Oracle. Cette intégration fournit les informations d'identification du client qui AWS Glue permettent d'accéder à vos données en toute sécurité lorsqu'il effectue des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Création d'une application NetSuite cliente Oracle et d'informations d'identification OAuth 2.0](#oracle-netsuite-configuring-creating-oracle-netsuite-client-app).

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre NetSuite compte Oracle.

## Création d'un NetSuite compte Oracle
<a name="oracle-netsuite-configuring-creating-oracle-netsuite-account"></a>

Accédez à [Oracle NetSuite](https://www.netsuite.com/portal/home.shtml), puis choisissez **Free Product Tour**. Renseignez les informations requises pour bénéficier d’une présentation guidée gratuite du produit, grâce à laquelle vous pourrez contacter un fournisseur. La procédure pour obtenir un compte est la suivante :
+ L'achat d'un NetSuite compte se fait par l'intermédiaire d'un fournisseur, qui fournit un compte form/quote qui doit être légalement révisé.
+ Le compte à acheter pour le NetSuite connecteur Oracle est un compte **Standard Cloud Service**.
+ Ce compte est créé par le fournisseur et les informations d’identification temporaires sont partagées par celui-ci. Vous recevrez un e-mail de bienvenue NetSuite < billing@notification.netsuite.com > < system@sent-via.netsuite.com > contenant des informations telles que votre nom d'utilisateur et un lien pour définir votre mot de passe.
+ Utilisez le lien **Définir votre mot de passe** pour définir le mot de passe du nom d’utilisateur indiqué par le fournisseur.

## Création d'une application NetSuite cliente Oracle et d'informations d'identification OAuth 2.0
<a name="oracle-netsuite-configuring-creating-oracle-netsuite-client-app"></a>

Pour obtenir l'ID client et le secret du client, vous devez créer une application NetSuite client Oracle :

1. Connectez-vous à votre NetSuite compte via l'[identifiant NetSuite client](https://system.netsuite.com/pages/customerlogin.jsp).

1. Choisissez **Configuration** > **Entreprise** > **Activer les fonctionnalités**.

1. Accédez à la **SuiteCloud**section et cochez la case **REST WEB SERVICES** sous **SuiteTalk (Web Services).**

1. Cochez la case **OAUTH 2.0** sous **Gérer l’authentification.** Cliquez sur **Sauvegarder**

1. Accédez à **Configuration** > **Intégration** > **Gérer les intégrations** et choisissez **Nouveau** pour créer une application OAuth2 .0.

1. Saisissez le nom de votre choix et conservez le paramètre **ÉTAT** Activé.

1. Si cette case est cochée, décochez les cases **TBA : FLUX D’AUTORISATION** et **AUTHENTIFICATION BASÉE SUR LES JETONS** affichées sous **Authentification basée sur les jetons**.

1. Cochez les cases **AUTHORIZATION CODE GRANT** et **PUBLIC CLIENT** sous **OAuth 2.0**.

1. Sous Auth, notez l’ID client et le secret client.

1. Saisissez un **URI DE REDIRECTION**. Par exemple, https://us-east-1.console.aws.amazon.com/gluestudio/ oauth

1. Cochez la case **SERVICES WEB REST** sous **PORTÉE**.

1. Cochez la case **INFORMATIONS D’IDENTIFICATION DE L’UTILISATEUR** sous **Informations d’identification de l’utilisateur**. Choisissez **Enregistrer**.

1. Notez l' KEY/CLIENT ID DU CONSOMMATEUR et le SECRET/CLIENT SECRET DU CONSOMMATEUR sous **Identifiants du client**. Ces valeurs ne sont affichées qu’une seule fois.

1. Créez un rôle ADMINISTRATEUR au besoin en accédant à **Utilisateur/Rôles** > **Gérer les rôles** > **Nouveau**.

1. Lors de la création d’un rôle personnalisé, ajoutez un accès complet sous l’onglet **Autorisations** pour les entités/fonctionnalités suivantes :
   + « Dépôt », « Articles », « Livraison des articles », « Inscription au journal », « Bon de commande », « Filiales », « Fournisseurs », « Factures », « Autorisation de retour du fournisseur », « Suivi du temps », « Paiement client », « Entrées d'enregistrement personnalisées », « Types d'enregistrements personnalisés », « Gestion des applications autorisées OAuth 2.0 », « Champs d'entité personnalisés », « Connectez-vous à l'aide de jetons d'accès OAuth 2.0 ».

Pour plus d'informations, consultez la [OAuth version 2.0](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_157769826287.html) dans la documentation d' NetSuite Applications Suite.

# Configuration des NetSuite connexions Oracle
<a name="oracle-netsuite-configuring-connections"></a>

Oracle NetSuite prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 Le type de subvention détermine le AWS Glue mode de communication avec Oracle NetSuite pour demander l'accès à vos données.
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée lui AWS Glue appartenant (application client AWS Glue gérée) sur laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'URL de son NetSuite instance Oracle. La AWS Glue console redirige l'utilisateur vers Oracle NetSuite où il doit se connecter et accorder AWS Glue les autorisations demandées pour accéder à son NetSuite instance Oracle.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Oracle NetSuite et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Oracle pour NetSuite se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter NetSuite la documentation Oracle publique sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir [Applications publiques](https://developers.oracle-netsuite.com/docs/api/creating-an-app).

Pour configurer une NetSuite connexion Oracle, procédez comme suit :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : Vous devez créer un secret pour votre connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Oracle NetSuite.

   1. Fournissez l' NetSuite environnement Oracle.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d' NetSuite entités Oracle
<a name="oracle-netsuite-reading-from-entities"></a>

**Prérequis**

Un NetSuite objet Oracle dont vous souhaitez lire un extrait. Vous aurez besoin du nom de l’objet, comme `deposit` ou `timebill`. Le tableau suivant présente les entités prises en charge.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Order by prise en charge | Limit prise en charge | SELECT prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Deposit | Oui | Non | Oui | Oui | Oui | 
| Description Item | Oui | Non | Oui | Oui | Oui | 
| Inventory Item | Oui | Non | Oui | Oui | Oui | 
| Item Fulfillment | Oui | Non | Oui | Oui | Oui | 
| Item Group | Oui | Non | Oui | Oui | Oui | 
| Journal Entry | Oui | Non | Oui | Oui | Oui | 
| Non-Inventory Purchase Item | Oui | Non | Oui | Oui | Oui | 
| Non-Inventory Resale Item | Oui | Non | Oui | Oui | Oui | 
| Non-Inventory Sale Item | Oui | Non | Oui | Oui | Oui | 
| Bon de commande | Oui | Non | Oui | Oui | Oui | 
| Subsidiary | Oui | Non | Oui | Oui | Oui | 
| Vendor | Oui | Non | Oui | Oui | Oui | 
| Vendor Bill | Oui | Non | Oui | Oui | Oui | 
| Vendor Return Authorization | Oui | Non | Oui | Oui | Oui | 
| Time Bill | Oui | Non | Oui | Oui | Oui | 
| Customer Payment | Oui | Non | Oui | Oui | Oui | 
| Fulfillment Request | Oui | Non | Oui | Oui | Oui | 
| Élément | Oui | Oui | Oui | Oui | Oui | 
| Transaction Line | Oui | Oui | Oui | Oui | Oui | 
| Transaction Accounting Line | Oui | Oui | Oui | Oui | Oui | 
| Custom Record Types (Dynamic) | Oui | Oui | Oui | Oui | Oui | 

**Exemple :**

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1"
    }
)
```

**Détails de NetSuite l'entité et du champ Oracle** :

Oracle charge NetSuite dynamiquement les champs disponibles sous l'entité sélectionnée. Les opérateurs de filtrage suivants sont pris en charge en fonction du type de données du champ.


| Type de données de champs | Opérateurs de filtre pris en charge | 
| --- | --- | 
| String | LIKE, =, \$1= | 
| Date | BETWEEN, =, <, >, <=, >= | 
| DateTime | BETWEEN, <, <=, >, >= | 
| Numérique |  =, \$1=, <, <=, >, >= | 
| Booléen |  =, \$1= | 

**Format de saisie attendu pour les valeurs booléennes dans Expression de filtre** :


| Entité | Format de valeur booléenne « true » | Format de valeur booléenne « false » | Exemple | 
| --- | --- | --- | --- | 
| Entités Item, Transaction Line, Transaction Accounting Line, and Custom Record Type | T ou t | F ou f | isinactive = "T" ou isinactive = "t" | 
| Toutes les autres entités | vrai | false | isinactive = true | 

## Requêtes de partitionnement
<a name="oracle-netsuite-reading-partitioning-queries"></a>

**Partitionnement basé sur les champs**

Le NetSuite connecteur Oracle possède des métadonnées dynamiques afin que les champs pris en charge pour le partitionnement basé sur les champs soient choisis de manière dynamique. Le partitionnement basé sur les champs est pris en charge sur les champs de type Integer BigInteger, Date ou DateTime.

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Timestamp, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "TIMESTAMP \"1707256978123\""
  "TIMESTAMP \"1702600882\""
  "TIMESTAMP '2024-02-06T22:00:00:00.000Z'"
  "TIMESTAMP '2024-02-06T22:00:00:00Z'"
  "TIMESTAMP '2024-02-06'"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "id",
        "LOWER_BOUND": "1",
        "UPPER_BOUND": "10000",
        "NUM_PARTITIONS": "10"
    }
```

**Partitionnement basé sur les enregistrements**

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.

Dans le partitionnement basé sur les enregistrements, le nombre total d'enregistrements présents est demandé à partir de NetSuite l'API Oracle, puis divisé par le `NUM_PARTITIONS` nombre fourni, le nombre d'enregistrements qui en résulte est ensuite extrait simultanément par chaque sous-requête.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="netsuiteerp",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "deposit",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "3"
    }
```

# Options de NetSuite connexion Oracle
<a name="oracle-netsuite-connection-options"></a>

Les options de connexion pour Oracle sont les NetSuite suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Nom de l' NetSuite entité Oracle. Exemple : deposit.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version de l' NetSuite API Oracle Rest que vous souhaitez utiliser. La valeur sera v1, car Oracle ne prend NetSuite actuellement en charge que la version v1.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Liste de colonnes séparées par des virgules que vous souhaitez sélectionner pour l’entité sélectionnée.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête (partitionnement basé sur les champs).
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi, utilisée dans le partitionnement basé sur des champs.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi, utilisée dans le partitionnement basé sur des champs. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. Utilisée à la fois dans le partitionnement basé sur des champs et dans le partitionnement basé sur des enregistrements.
+ `INSTANCEE_URL`(String) - Une URL d' NetSuite instance valide avec un format https://\$1account-id\$1.suitetalk.api.netsuite.com.

# Limitations et remarques relatives au NetSuite connecteur Oracle
<a name="oracle-netsuite-connector-limitations"></a>

Les limitations ou remarques suivantes concernent le NetSuite connecteur Oracle :
+ Les valeurs des paramètres access\$1token et refresh\$1token sont au format JSON Web Token (JWT). Le jeton d’accès est valide pendant 60 minutes tandis que la valeur refresh\$1token est valide pendant sept jours.
+ Lors de la génération de l’ID et du secret client, si vous sélectionnez « CLIENT PUBLIC » en plus d’« OCTROI DU CODE D’AUTORISATION », le jeton d’actualisation n’est valide que pendant trois heures et ne peut être utilisé qu’une seule fois.
+ Vous pouvez récupérer au maximum 1 000 000 enregistrements à l’aide du connecteur. Pour plus d’informations, consultez [Executing SuiteQL Queries Through REST Web Services](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157909186990.html).
+ Les partitions sont créées de manière à ce que chaque partition récupère les enregistrements par multiples de 1 000, sauf peut-être la dernière qui récupère les enregistrements restants.
+ Pour les objets Item, Transaction Line et Transaction Accounting Line, le connecteur ne prendra pas en charge certains opérateurs pour les raisons suivantes :
  + L’application des opérateurs de filtre `EQUAL_TO` et `NOT_EQUAL_TO` aux champs de type Date donne des résultats peu fiables.
  + L’application de l’opérateur de filtre `LESS_THAN_OR_EQUAL_TO` aux champs de type Date donne des résultats peu fiables et se comporte de la même manière que l’opérateur `LESS_THAN`.
  + L’application de l’opérateur de filtre `GREATER_THAN` aux champs de type Date= donne des résultats peu fiables et se comporte de la même manière que l’opérateur `GREATER_THAN_OR_EQUAL_TO`.
+ Pour les objets Item, Transaction Line, Transaction Accounting Line et Custom Record Type, les valeurs booléennes sont présentées au format T/F plutôt qu'au format standard true/false. The connector maps the t/f values to true/false afin de garantir la cohérence des données.

# Connexion au OpenSearch service dans AWS Glue Studio
<a name="connecting-to-data-opensearch"></a>

 AWS Gluefournit un support intégré pour Amazon OpenSearch Service. AWS Glue Studiofournit une interface visuelle pour se connecter à Amazon OpenSearch Service, créer des tâches d'intégration de données et les exécuter sur le runtime Spark AWS Glue Studio sans serveur. Cette fonctionnalité n'est pas compatible avec le OpenSearch Service serverless. 

 AWS Glue Studio crée une connexion unifiée pour Amazon OpenSearch Service. Pour de plus amples informations, veuillez consulter [Considérations](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Création d'une connexion OpenSearch de service](creating-opensearch-connection.md)
+ [Création d'un nœud OpenSearch de source de service](creating-opensearch-source-node.md)
+ [Création d'un nœud cible de OpenSearch service](creating-opensearch-target-node.md)
+ [Options avancées](#creating-opensearch-connection-advanced-options)

# Création d'une connexion OpenSearch de service
<a name="creating-opensearch-connection"></a>

**Prérequis :**
+ Identifiez le point de terminaison *aosEndpoint* et le port du domaine que *aosPort* vous souhaitez consulter, ou créez la ressource en suivant les instructions de la documentation Amazon OpenSearch Service. Pour plus d'informations sur la création d'un domaine, consultez [la section Création et gestion OpenSearch de domaines Amazon Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) dans la documentation Amazon OpenSearch Service.

  Un point de terminaison de domaine Amazon OpenSearch Service aura le formulaire par défaut suivant, https://search - *domainName* -*unstructuredIdContent*. *region*.es.amazonaws.com. Pour plus d'informations sur l'identification du point de terminaison de votre domaine, consultez la section [Création et gestion des domaines Amazon OpenSearch Service](https://docs.aws.amazon.com//opensearch-service/latest/developerguide/createupdatedomains.html) dans la documentation Amazon OpenSearch Service. 

  Identifiez ou générez des informations d'authentification HTTP de base, *aosUser* et *aosPassword* pour votre domaine.

**Pour configurer une connexion au OpenSearch service, procédez comme suit :**

1. Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification OpenSearch de service. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `USERNAME` contenant la valeur. *aosUser*
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `PASSWORD` contenant la valeur. *aosPassword*

1. Dans la AWS Glue console, créez une connexion en suivant les étapes décrites dans[Ajouter une AWS Glue connexion](console-connections.md). Après avoir créé la connexion, conservez le nom de la connexion pour une utilisation future dans AWS Glue. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez OpenSearch Service.
   + Lorsque vous sélectionnez un point de terminaison de domaine, fournissez*aosEndpoint*.
   + Lorsque vous sélectionnez un port, indiquez*aosPort*.
   + Lorsque vous sélectionnez un **AWS secret**, fournissez*secretName*.

# Création d'un nœud OpenSearch de source de service
<a name="creating-opensearch-source-node"></a>

## Prérequis
<a name="creating-opensearch-source-node-prerequisites"></a>
+ Une connexion AWS Glue OpenSearch de service, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion OpenSearch de service](creating-opensearch-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Un index des OpenSearch services que vous aimeriez lire,*aosIndex*.

## Ajouter une source OpenSearch de données de service
<a name="creating-opensearch-source-node-add"></a>

**Pour ajouter une **source de données — nœud OpenSearch de service** :**

1.  Choisissez la connexion pour votre source OpenSearch de données de service. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Create OpenSearch Service connection**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion OpenSearch de service](creating-opensearch-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Fournissez **Index**, l'index que vous souhaitez lire.

1. Vous pouvez éventuellement fournir **Query**, une OpenSearch requête permettant de fournir des résultats plus spécifiques. Pour plus d'informations sur la rédaction de OpenSearch requêtes, consultez[Lecture à partir des index OpenSearch de service](aws-glue-programming-etl-connect-opensearch-home.md#aws-glue-programming-etl-connect-opensearch-read).

1.  Dans **Propriétés du OpenSearch service personnalisé**, entrez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible de OpenSearch service
<a name="creating-opensearch-target-node"></a>

## Prérequis
<a name="creating-opensearch-target-node-prerequisites"></a>
+ Une connexion AWS Glue OpenSearch de service, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion OpenSearch de service](creating-opensearch-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Un index des OpenSearch services dans lequel vous souhaitez écrire,*aosIndex*.

## Ajouter une cible OpenSearch de données de service
<a name="creating-opensearch-target-node-add"></a>

**Pour ajouter une **cible de données — nœud OpenSearch de service** :**

1.  Choisissez la connexion pour votre source OpenSearch de données de service. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Create OpenSearch Service connection**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion OpenSearch de service](creating-opensearch-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Fournissez **Index**, l'index que vous souhaitez lire.

1.  Dans **Propriétés du OpenSearch service personnalisé**, entrez les paramètres et les valeurs nécessaires. 

## Options avancées
<a name="creating-opensearch-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d'un nœud OpenSearch de service. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Consultez [OpenSearch Connexions de service](aws-glue-programming-etl-connect-opensearch-home.md). 

# Connexion à Okta
<a name="connecting-to-okta"></a>

 L’API Okta est l’interface programmatique d’Okta, utilisée pour gérer des comptes et des campagnes Okta volumineux ou complexes. Si vous êtes un utilisateur d'Okta, vous pouvez vous connecter AWS Glue à votre compte Okta. Vous pouvez ensuite utiliser Okta comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Okta et AWS des services ou d'autres applications prises en charge. 

**Topics**
+ [AWS Glue support pour Okta](okta-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](okta-configuring-iam-permissions.md)
+ [Configuration d’Okta](okta-configuring.md)
+ [Configuration de connexions Okta](okta-configuring-connections.md)
+ [Lecture à partir d’entités Okta](okta-reading-from-entities.md)
+ [Référence des options de connexion Okta](okta-connection-options.md)
+ [Étapes de création d’un compte Okta et d’une application pour développeurs](okta-create-account.md)
+ [Limitations](okta-connector-limitations.md)

# AWS Glue support pour Okta
<a name="okta-support"></a>

AWS Glue prend en charge Okta comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données d'Okta.

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

**Versions de l’API Okta prises en charge**  
 v1. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="okta-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration d’Okta
<a name="okta-configuring"></a>

Avant de pouvoir transférer des données AWS Glue vers ou depuis Okta, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="okta-configuring-min-requirements"></a>
+  Vous disposez d’un compte Okta. Pour plus d’informations sur la création d’un compte, consultez [Étapes de création d’un compte Okta et d’une application pour développeurs](okta-create-account.md). 
+  Votre compte Okta est activé pour accéder à l’API. 
+  Vous avez créé une intégration d' OAuth2 API dans votre compte Okta. Cette intégration fournit les informations d'identification du client qui AWS Glue permettent d'accéder à vos données en toute sécurité lorsqu'il effectue des appels authentifiés vers votre compte. Pour plus d'informations, reportez-vous aux étapes de création d'une application client et aux informations d'identification OAuth2 2.0 : étapes de création d'un nouveau compte Okta et d'une application pour développeurs 
+  Vous avez un compte Okta avec un OktaApiToken. Reportez-vous à la [documentation Okta](https://developer.okta.com/docs/guides/create-an-api-token/main/#create-the-token). 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Okta. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Okta. 

# Configuration de connexions Okta
<a name="okta-configuring-connections"></a>

 Okta prend en charge deux types de mécanismes d’authentification : 
+  OAuth auth : Okta prend en charge le type de `AUTHORIZATION_CODE` subvention. 
  +  Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Okta où il doit se connecter et accorder AWS Glue les autorisations demandées pour accéder à son instance Okta. 
  +  Les utilisateurs peuvent choisir de créer leur propre application connectée dans Okta et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Okta pour se connecter et autoriser l'accès AWS Glue à leurs ressources. 
  +  Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 
  +  Pour plus d'informations, consultez la [documentation publique d'Okta sur la création d'une application connectée pour le OAuth flux de code d'autorisation](https://developers.google.com/workspace/guides/create-credentials). 
+  Authentification personnalisée : 
  +  Pour consulter la documentation publique d’Okta sur la génération des clés d’API requises pour une autorisation personnalisée, consultez la [documentation Okta](https://developer.okta.com/docs/guides/create-an-api-token/main/#create-the-token). 

Pour configurer une connexion Okta :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l' OAuth authentification : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

   1.  Pour l’authentification personnalisée : 
      +  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `OktaApiToken` comme clé. 

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1.  Sous Connexions, choisissez **Créer une connexion**. 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Okta.

   1. Indiquez votre sous-domaine Okta.

   1. Sélectionnez l’URL du domaine Okta de votre compte Okta.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez le type d’authentification pour vous connecter à une source de données. 

   1.  Pour le type OAuth2 d'authentification, fournissez l'**application client gérée par l'utilisateur ClientId** de l'application Okta. 

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

1.  Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**. 

# Lecture à partir d’entités Okta
<a name="okta-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Okta à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Applications | Oui | Oui | Non | Oui | Non | 
| Devices | Oui | Oui | Non | Oui | Oui | 
| Groupes | Oui | Oui | Oui | Oui | Oui | 
| Utilisateurs | Oui | Oui | Oui | Oui | Oui | 
| Types d’utilisateurs | Non | Non | Non | Oui | Non | 

 **Exemple** 

```
okta_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Okta",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "applications",
        "API_VERSION": "v1"
    }
```

 **Détails des entités et des champs Okta** 

 Liste des entités : 
+  Application : [https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Application/](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Application/) 
+  Appareil : [https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Device/](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Device/) 
+  Groupe : [https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Group/](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Group/) 
+  Utilisateur : [https://developer.okta.com/docs/api/openapi/okta-management/management/tag/User/](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/User/) 
+  Type d'utilisateur : [https://developer.okta.com/docs/api/openapi/okta-management/management/tag/UserType/](https://developer.okta.com/docs/api/openapi/okta-management/management/tag/UserType/) 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 **Exemple** 

```
okta_read = glueContext.create_dynamic_frame.from_options(
    connection_type="okta",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "lastUpdated",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "lastMembershipUpdated"
        "LOWER_BOUND": "2022-08-10T10:28:46.000Z"
        "UPPER_BOUND": "2024-08-10T10:28:46.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Référence des options de connexion Okta
<a name="okta-connection-options"></a>

Les options de connexion pour Okta sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Okta. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Okta que vous souhaitez utiliser. Exemple : v1. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Étapes de création d’un compte Okta et d’une application pour développeurs
<a name="okta-create-account"></a>

 Créez un compte de développeur sur Okta pour accéder à l’API Okta. Un compte de développeur Okta gratuit donne accès à la plupart des fonctionnalités de développement clés requises pour accéder à l’API Okta. 

**Pour créer un compte de développeur sur Okta**

1.  Accédez à [https://developer.okta.com/signup/](https://console.cloud.google.com). 

1.  Saisissez les informations du compte (e-mail, prénom, nom de famille et pays/région). Choisissez **Je ne suis pas un robot**, puis **S’inscrire**. 

1.  Un e-mail de vérification est envoyé à votre adresse e-mail enregistrée. Vous recevrez un lien dans votre messagerie pour activer votre compte de développeur Okta. Choisissez **Activer**. 

1.  Vous serez redirigé vers la page de réinitialisation du mot de passe. Saisissez le nouveau mot de passe à deux reprises et choisissez **Réinitialiser le mot de passe**. 

1.  Vous serez redirigé vers le tableau de bord de votre compte de développeur Okta. 

**Pour créer une application cliente et des informations d'identification OAuth 2.0**

1.  Dans le tableau de bord du développeur, choisissez Créer une intégration d’application.   
![\[La capture d'écran montre la page Créer un identifiant OAuth client et la URIs section de redirection autorisée. Ici, ajoutez l'URI URIs et choisissez AJOUTER un URI si nécessaire. Choisissez CRÉER une fois que vous avez terminé.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/create-client-app-step-1.png)

1.  La fenêtre **Créer une intégration d’application** apparaîtra et présentera différentes méthodes de connexion. Sélectionnez **OIDC — OpenID Connect**. 

1.  Faites défiler la page jusqu’à la section Type d’application. Sélectionnez **Application Web**, puis cliquez sur **Suivant**. 

1.  Sur l’écran « Nouvelle intégration d’application Web », renseignez les informations suivantes : 
   + Nom de l’intégration d’application : saisissez le nom de l’application. 
   + Type d’autorisation : choisissez le **code d’autorisation** et le **jeton d’actualisation** dans la liste.
   + Redirection de connexion URIs  : choisissez **Ajouter une URI et `https://{regioncode}.console.aws.amazon.com/appflow/oauth` ajoutez-la**. Par exemple, si vous utilisez `us-west-2 (Oregon)`, vous pouvez ajouter `https://us-east-1.console.aws.amazon.com/appflow/oauth`.
   + Accès contrôlé : assignez l’application à vos groupes d’utilisateurs selon vos besoins et choisissez **Enregistrer**.

1. Votre ID client et votre secret client sont générés.

# Limitations
<a name="okta-connector-limitations"></a>

Les limites du connecteur Okta sont les suivantes :
+  Pour l’entité « Applications », un seul filtre peut être appliqué. Si plus d’un filtre est appliqué, l’erreur 400 Bad Request est renvoyée avec le résumé : « Critères de recherche non valides ». 
+  La commande Order By ne peut être prise en charge que par des requêtes de recherche. Par exemple, ` http://dev-15940405.okta.com/api/v1/groups?search=type e.q. "OKTA_GROUP"&sortBy=lastUpdated&sortOrder=asc `. 

# Connexion à PayPal
<a name="connecting-to-data-paypal"></a>

PayPal est un système de paiement qui facilite les transferts d'argent en ligne entre les parties, tels que les transferts entre clients et fournisseurs en ligne. Si vous êtes un PayPal utilisateur, votre compte contient des données relatives à vos transactions, telles que leurs payeurs, leurs dates et leurs statuts. Vous pouvez l'utiliser AWS Glue pour transférer des données depuis certains AWS services ou PayPal vers d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour PayPal](paypal-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](paypal-configuring-iam-permissions.md)
+ [Configuration PayPal](paypal-configuring.md)
+ [Configuration des PayPal connexions](paypal-configuring-connections.md)
+ [Lecture à partir d' PayPal entités](paypal-reading-from-entities.md)
+ [PayPal options de connexion](paypal-connection-options.md)
+ [Limitations et remarques relatives au PayPal connecteur](paypal-connector-limitations.md)

# AWS Glue support pour PayPal
<a name="paypal-support"></a>

AWS Glue prend en charge PayPal les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de PayPal.

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

**Versions PayPal d'API prises en charge**  
Les versions PayPal d'API suivantes sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="paypal-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration PayPal
<a name="paypal-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis PayPal, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous avez un PayPal compte avec des informations d'identification client.
+ Votre PayPal compte dispose d'un accès à l'API avec une licence valide.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre PayPal compte. Pour les connexions classiques, vous n'avez rien d'autre à faire dans PayPal.

# Configuration des PayPal connexions
<a name="paypal-configuring-connections"></a>

PayPal prend en charge le type de subvention CLIENT CREDENTIALS pour OAuth2.
+ Ce type de subvention est considéré comme bidimensionnel OAuth 2.0 car il est utilisé par les clients pour obtenir un jeton d'accès en dehors du contexte d'un utilisateur. AWS Glue est capable d'utiliser l'ID client et le secret du client pour authentifier PayPal APIs ceux fournis par les services personnalisés que vous définissez.
+ Chaque service personnalisé appartient à un utilisateur régi uniquement par l’API, qui dispose d’un ensemble de rôles et d’autorisations autorisant le service à effectuer des actions spécifiques. Un jeton d’accès est associé à un seul service personnalisé.
+ Ce type d’autorisation donne lieu à un jeton d’accès de courte durée qui peut être renouvelé en appelant à nouveau le point de terminaison `/v2/oauth2/token`.
+ Pour la PayPal documentation publique de la OAuth version 2.0 avec les informations d'identification du client, voir [Authentification](https://developer.paypal.com/api/rest/authentication/).

Pour configurer une PayPal connexion :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez PayPal.

   1. Indiquez `INSTANCE_URL` l' PayPal instance à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

## Obtenir des informations d'identification OAuth 2.0
<a name="paypal-getting-oauth-20-credentials"></a>

Pour appeler l’API Rest, vous devez échanger votre ID client et votre secret client contre un jeton d’accès. Pour plus d'informations, consultez [Commencer avec PayPal REST APIs](https://developer.paypal.com/api/rest/).

# Lecture à partir d' PayPal entités
<a name="paypal-reading-from-entities"></a>

**Prérequis**

Un PayPal objet que vous aimeriez lire. Vous aurez besoin du nom de l’objet, `transaction`.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| transaction | Oui | Oui | Non | Oui | Oui | 

**Exemple :**

```
paypal_read = glueContext.create_dynamic_frame.from_options(
    connection_type="paypal",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "transaction",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://api-m.paypal.com"
    }
```

**PayPal détails de l'entité et du champ** :

Entités avec métadonnées statiques :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/paypal-reading-from-entities.html)

## Requêtes de partitionnement
<a name="paypal-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons la valeur au format ISO.

  Exemples de valeurs valides :

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Le champ suivant est pris en charge pour le partitionnement par entité :


| Nom de l'entité | Champs de partitionnement | Type de données | 
| --- | --- | --- | 
| transaction | transaction\$1initiation\$1date | DateTime | 

Exemple :

```
paypal_read = glueContext.create_dynamic_frame.from_options(
    connection_type="paypal",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "transaction",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "transaction_initiation_date"
        "LOWER_BOUND": "2024-07-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-07-02T00:00:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# PayPal options de connexion
<a name="paypal-connection-options"></a>

Les options de connexion suivantes sont disponibles pour PayPal :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans PayPal.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. PayPal Version de l'API Rest que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Limitations et remarques relatives au PayPal connecteur
<a name="paypal-connector-limitations"></a>

Les limitations ou remarques suivantes concernent le PayPal connecteur :
+ La [documentation PayPal des transactions](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get) indique qu'il faut au maximum trois heures pour que les transactions exécutées apparaissent dans l'appel de transactions de liste. Cependant, il a été observé que cela prenait plus de temps que cela, en fonction de la valeur [https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=last_refreshed_datetime](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=last_refreshed_datetime). `last_refreshed_datetime`Voici la durée pendant laquelle vous avez des données disponibles auprès du APIs.
+ Si la valeur `last_refreshed_datetime` est inférieure à la valeur `end_date` demandée, `end_date` devient égale à `last_refreshed_datetime`, car nous n’avons que des données jusqu’à ce moment-là.
+ Le champ `transaction_initiation_date` est un filtre obligatoire à fournir pour l’entité `transaction` et la plage de dates [maximale prise en charge](https://developer.paypal.com/docs/transaction-search/#:~:text=The%20maximum%20supported%20date%20range%20is%2031%20days.) pour ce champ est de 31 jours.
+ Lorsque vous appelez la demande d’API d’entité `transaction` avec des filtres (paramètres de requête) autres que le champ `transaction_initiation_date`, il est prévu que la valeur du champ [https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=If%20you%20specify%20one%20or%20more%20optional%20query%20parameters%2C%20the%20ending_balance%20response%20field%20is%20empty.](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=If%20you%20specify%20one%20or%20more%20optional%20query%20parameters%2C%20the%20ending_balance%20response%20field%20is%20empty.) ne soit pas extraite dans la réponse.

# Connexion à Pendo
<a name="connecting-to-pendo"></a>

Pendo fournit un entrepôt de données enrichi pour les données d’interaction avec les utilisateurs. Les clients transféreront ces données AWS afin de les associer à d'autres données sur le produit, d'effectuer des analyses et des tableaux de bord supplémentaires et de définir des alertes s'ils le souhaitent.

**Topics**
+ [AWS Glue support pour Pendo](pendo-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](pendo-configuring-iam-permissions.md)
+ [Configuration de Pendo](pendo-configuring.md)
+ [Configuration de connexions Pendo](pendo-configuring-connections.md)
+ [Lecture à partir d’entités Pendo](pendo-reading-from-entities.md)
+ [Options de connexion Pendo](pendo-connection-options.md)
+ [Limitations](pendo-connector-limitations.md)

# AWS Glue support pour Pendo
<a name="pendo-support"></a>

AWS Glue prend en charge Pendo comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Pendo.

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

**Versions de l’API Pendo prises en charge**  
 v1 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="pendo-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration de Pendo
<a name="pendo-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Pendo, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="pendo-configuring-min-requirements"></a>
+ Vous possédez un compte Pendo avec une `apiKey` avec `write access` activé.
+  Votre compte Pendo dispose d’un accès à l’API avec une licence valide. 

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Pendo. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Pendo.

# Configuration de connexions Pendo
<a name="pendo-configuring-connections"></a>

Pendo prend en charge l’authentification personnalisée.

Pour consulter la documentation publique de Pendo sur la génération des clés d’API requises pour une autorisation personnalisée, consultez [Authentication – Pendo REST API Documentation](https://engageapi.pendo.io/?bash#getting-started) 

Pour configurer une connexion Pendo :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 
   + Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `apiKey` comme clé. 
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Pendo.

   1. Indiquez l’`instanceUrl` de l’instance Pendo à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

1. Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une connexion réseau supplémentaire.

# Lecture à partir d’entités Pendo
<a name="pendo-reading-from-entities"></a>

 **Conditions préalables** 

Un objet Pendo à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 
+ [Fonctionnalité](https://developers.pendo.io/docs/?bash#feature)
+ [Guide](https://developers.pendo.io/docs/?bash#guide)
+ [Page](https://developers.pendo.io/docs/?bash#page)
+ [Rapport](https://developers.pendo.io/docs/?bash#report)
+ [Report Data](https://developers.pendo.io/docs/?bash#return-report-contents-as-array-of-json-objects)
+ [Visitor](https://developers.pendo.io/docs/?bash#visitor)
+ [Compte](https://developers.pendo.io/docs/?bash#entities)
+ [Event](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Feature Event](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Guide Event](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [Page Event](https://developers.pendo.io/docs/?bash#events-grouped)
+ [Poll Event ](https://developers.pendo.io/docs/?bash#events-ungrouped)
+ [Track Event](https://developers.pendo.io/docs/?bash#events-grouped)


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Fonctionnalité | Non | Non | Non | Oui | Non | 
| Guide | Non | Non | Non | Oui | Non | 
| Page | Non | Non | Non | Oui | Non | 
| Rapport | Non | Non | Non | Oui | Non | 
| Report Data | Non | Non | Non | Oui | Non | 
| Visitor (Aggregation API) | Oui | Non | Oui | Oui | Non | 
| Account (Aggregation API) | Oui | Non | Oui | Oui | Non | 
| Event (Aggregation API) | Oui | Non | Oui | Oui | Non | 
| Feature Event (Aggregation API) | Oui | Non | Oui | Oui | Oui | 
| Guide Event (Aggregation API) | Oui | Non | Oui | Oui | Oui | 
| Account (Aggregation API) | Oui | Non | Oui | Oui | Oui | 
| Page Event (Aggregation API) | Oui | Non | Oui | Oui | Oui | 
| Poll Event (Aggregation API) | Oui | Non | Oui | Oui | Oui | 
| Track Event (Aggregation API) | Oui | Non | Oui | Oui | Oui | 

 **Exemple** 

```
Pendo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.Pendo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "feature",
        "API_VERSION": "v1",
        "INSTANCE_URL": "instanceUrl"
    }
```

## Requêtes de partitionnement
<a name="adobe-marketo-engage-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le DateTime champ, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Le tableau suivant décrit les détails de prise en charge dans les champs de partitionnement d’entités :


| Nom de l'entité | 
| --- | 
| Event | 
|  Feature Event  | 
| Guide Event | 
| Page Event | 
| Poll Event | 
| Track Event | 

Exemple :

```
pendo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.pendo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "event",
        "API_VERSION": "v1",
        "INSTANCE_URL": "instanceUrl"
        "NUM_PARTITIONS": "10",
        "PARTITION_FIELD": "appId"
        "LOWER_BOUND": "4656"
        "UPPER_BOUND": "7788"
    }
```

# Options de connexion Pendo
<a name="pendo-connection-options"></a>

Les options de connexion pour Pendo sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Pendo. 
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Une URL d’instance Pendo valide avec les valeurs autorisées suivantes :
  + [Par défaut](https://app.pendo.io/)
  + [L'Europe](https://app.eu.pendo.io/)
  + [US1](https://us1.app.pendo.io/)
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest de Pendo Engage que vous souhaitez utiliser. Par exemple : 3.0.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Limitations
<a name="pendo-connector-limitations"></a>

Les restrictions du connecteur Pendo sont les suivantes :
+ La pagination n’est pas prise en charge dans Pendo.
+ La filtration est prise en charge uniquement par les objets de l’API Aggregate (`Account`, `Event`, `Feature Event`, `Guide Events`, `Page Event`, `Poll Event`, `Track Event` et `Visitor`).
+ DateTimeRange est un paramètre de filtre obligatoire pour les objets de l'API Aggregate (`Event``Feature Event`,`Guide Events`,`Page Event`,, `Poll Event,``Track Event`)
+ La période dayRange sera arrondie au début de la période dans le fuseau horaire. Par exemple, si le filtre fourni est `2023-01-12T07:55:27.065Z`, cette période sera arrondie au début de la période, c’est-à-dire `2023-01-12T00:00:00Z`. 

# Connexion à Pipedrive
<a name="connecting-to-pipedrive"></a>

 Pipedrive est un CRM de pipeline de vente conçu pour aider les petites entreprises à gérer les prospects, à suivre les activités commerciales et à conclure davantage de ventes. Pipedrive permet aux équipes commerciales des petites entreprises de rationaliser les processus et de consolider les données de vente dans un seul outil de vente CRM unifié. Si vous êtes un utilisateur de Pipedrive, vous pouvez vous connecter AWS Glue à votre compte Pipedrive. Vous pouvez ensuite utiliser Pipedrive comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Pipedrive et des AWS services ou d'autres applications prises en charge. 

**Topics**
+ [AWS Glue support pour Pipedrive](pipedrive-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](pipedrive-configuring-iam-permissions.md)
+ [Configuration de Pipedrive](pipedrive-configuring.md)
+ [Configuration des connexions Pipedrive](pipedrive-configuring-connections.md)
+ [Lecture à partir d’entités Pipedrive](pipedrive-reading-from-entities.md)
+ [Référence des options de connexion Pipedrive](pipedrive-connection-options.md)
+ [Limitations](pipedrive-connector-limitations.md)

# AWS Glue support pour Pipedrive
<a name="pipedrive-support"></a>

AWS Glue prend en charge Pipedrive comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Pipedrive.

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

**Versions de l’API Pipedrive prises en charge**  
 v1. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="pipedrive-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Pipedrive
<a name="pipedrive-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Pipedrive, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="pipedrive-configuring-min-requirements"></a>
+  Vous disposez d’un compte Pipedrive. 
+  Votre compte Pipedrive est activé pour accéder à l’API. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Pipedrive. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Pipedrive. 

# Configuration des connexions Pipedrive
<a name="pipedrive-configuring-connections"></a>

 Pipedrive prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 
+  Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée qu'il AWS Glue possède et dans laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'instanceurl de Pipedrive. La AWS Glue console redirigera l'utilisateur vers Pipedrive où il devra se connecter et accorder AWS Glue les autorisations demandées pour accéder à son instance Pipedrive. 
+  Les utilisateurs doivent choisir de créer leur propre application connectée dans Pipedrive et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Pipedrive pour se connecter et autoriser l'accès AWS Glue à leurs ressources. 
+  Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est actif pendant une heure et pourra être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 
+  Pour plus d'informations, consultez [la documentation sur la création d'une application connectée pour le flux AUTHORIZATION\$1CODE OAuth ](https://developers.pipedrive.com/docs/api/v1/Oauth). 

Pour configurer une connexion Pipedrive :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET comme clé. 

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1.  Sous Connexions de données, choisissez **Créer une connexion**. 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Pipedrive.

   1. Indiquez votre **URL d’instance** Pipedrive.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Fournissez l'application client gérée par l'utilisateur ClientId du Pipedrive auquel vous souhaitez vous connecter. 

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. Choisissez **Suivant**. 

1.  Indiquez la valeur **connectionName** et choisissez **Suivant**. 

1.  Sur la page suivante, choisissez **Créer une connexion**. Il vous sera demandé de vous connecter à Pipedrive. Indiquez votre nom d’utilisateur et votre mot de passe, puis choisissez **Se connecter**. 

1.  Une fois connecté, choisissez **Continuer vers l’application**. Votre connexion est maintenant prête à être utilisée. 

1.  Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**. 

# Lecture à partir d’entités Pipedrive
<a name="pipedrive-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Pipedrive à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Activités | Oui | Oui | Non | Oui | Oui | 
| Type d'activité | Non | Non | Non | Oui | Non | 
| Call Logs | Non | Non | Non | Oui | Non | 
| Currencies | Oui | Oui | Non | Oui | Non | 
| Deals | Oui | Oui | Oui | Oui | Oui | 
| Leads | Oui | Oui | Oui | Oui | Non | 
| Lead Sources | Non | Oui | Non | Oui | Non | 
| Lead Labels | Non | Non | Non | Non | Non | 
| Remarques | Oui | Oui | Oui | Oui | Oui | 
| Organisation | Oui | Oui | Non | Oui | Oui | 
| Jeux d'autorisations | Oui | Non | Non | Oui | Non | 
| Personnes | Oui | Oui | Oui | Oui | Oui | 
| Pipelines | Non | Oui | Non | Oui | Non | 
| Produits | Oui | Oui | Non | Oui | Oui | 
| Roles | Non | Oui | Non | Oui | Non | 
| Stages | Oui | Oui | Non | Oui | Non | 
| Utilisateurs | Non | Non | Non | Oui | Non | 

 **Exemple** 

```
pipedrive_read= glueContext.create_dynamic_frame.from_options(
    connection_type="PIPEDRIVE",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "activites",
        "API_VERSION": "v1"
    }
```

 **Détails des entités et des champs Pipedrive** 

 Liste des entités : 
+  Activités : [https://developers.pipedrive.com/docs/api/v1/Activities](https://developers.pipedrive.com/docs/api/v1/Activities) 
+  Type d'activité : [https://developers.pipedrive.com/docs/api/v1/ActivityTypes](https://developers.pipedrive.com/docs/api/v1/ActivityTypes) 
+  Journaux d'appels : [https://developers.pipedrive.com/docs/api/v1/CallLogs](https://developers.pipedrive.com/docs/api/v1/CallLogs) 
+  Devises : [https://developers.pipedrive.com/docs/api/v1/Currencies](https://developers.pipedrive.com/docs/api/v1/Currencies) 
+  Offres : [https://developers.pipedrive.com/docs/api/v1/Deals](https://developers.pipedrive.com/docs/api/v1/Deals) 
+  Prospects : [https://developers.pipedrive.com/docs/api/v1/Leads](https://developers.pipedrive.com/docs/api/v1/Leads) 
+  Sources de plomb : [https://developers.pipedrive.com/docs/api/v1/LeadSources](https://developers.pipedrive.com/docs/api/v1/LeadSources) 
+  Étiquettes en plomb : [https://developers.pipedrive.com/docs/api/v1/LeadLabels](https://developers.pipedrive.com/docs/api/v1/LeadLabels) 
+  Remarques : [https://developers.pipedrive.com/docs/api/v1/Notes](https://developers.pipedrive.com/docs/api/v1/Notes) 
+  Organisations : [https://developers.pipedrive.com/docs/api/v1/Organizations](https://developers.pipedrive.com/docs/api/v1/Organizations) 
+  Ensembles d'autorisations : [https://developers.pipedrive.com/docs/api/v1/PermissionSets](https://developers.pipedrive.com/docs/api/v1/PermissionSets) 
+  Personnes : [https://developers.pipedrive.com/docs/api/v1/Persons](https://developers.pipedrive.com/docs/api/v1/Persons) 
+  Canalisations : [https://developers.pipedrive.com/docs/api/v1/Pipelines](https://developers.pipedrive.com/docs/api/v1/Pipelines) 
+  Produits : [https://developers.pipedrive.com/docs/api/v1/Products](https://developers.pipedrive.com/docs/api/v1/Products) 
+  Rôles : [https://developers.pipedrive.com/docs/api/v1/Roles](https://developers.pipedrive.com/docs/api/v1/Roles) 
+  Étapes : [https://developers.pipedrive.com/docs/api/v1/Stages](https://developers.pipedrive.com/docs/api/v1/Stages) 
+  Utilisateurs : [https://developers.pipedrive.com/docs/api/v1/Users](https://developers.pipedrive.com/docs/api/v1/Users) 


| Entité | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | 
| Activities, Deals, Notes, Organization, Persons et Products. | Date | '=' | 
|  | Entier | '=' | 
|  | String | '=' | 
|  | Booléen | '=' | 

## Requêtes de partitionnement
<a name="pipedrive-partitioning-queries"></a>

 Dans Pipedrive, un seul champ (due\$1date) de l’entité Activities prend en charge le partitionnement basé sur les champs. Il s’agit d’un champ Date. 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 **Exemple** 

```
pipedrive_read = glueContext.create_dynamic_frame.from_options(
    connection_type="PIPEDRIVE",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "activites",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "due_date"
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z"
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Référence des options de connexion Pipedrive
<a name="pipedrive-connection-options"></a>

Les options de connexion pour Pipedrive sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Pipedrive. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Pipedrive que vous souhaitez utiliser. Exemple : v1. 
+  `INSTANCE_URL`(Chaîne) - (Obligatoire) URL de l’instance sur laquelle l’utilisateur souhaite exécuter les opérations. Exemple : v1. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Limitations
<a name="pipedrive-connector-limitations"></a>

Les restrictions du connecteur Pipedrive sont les suivantes :
+ Pipedrive prend en charge le partitionnement basé sur les champs pour une seule entité (Activities).
+ Pipedrive prend en charge le partitionnement basé sur les enregistrements pour les entités Activities, Deals, Notes, Persons, Organizations et Products.
+ Dans l’entité Deals, le champ de statut en tant que filtre renverra tous les enregistrements si une valeur de filtre de valeur non valide est utilisée.
+ Dans l’entité Deals, la commande avec plusieurs champs n’est pas prise en charge.
+ Pour obtenir des données de performance, nous utilisons un AWS compte local. Cependant, en raison de la limitation de l'actualisation locale du jeton d'accès, la AWS Glue tâche de traitement de 1 Go de données échoue. Par conséquent, nous avons optimisé le test de performance avec 179 Mo de données, et les résultats ci-dessus sont basés sur cette optimisation. Néanmoins, nous avons observé qu’avec l’augmentation du nombre de partitions, le point de terminaison SaaS prend plus de temps qu’une partition unique. Nous avons consulté l’équipe d’assistance de Pipedrive à propos de ce comportement, qui nous a informés que Pipedrive limitait silencieusement les demandes et retardait la réponse. Par conséquent, lorsque vous exécutez la AWS Glue tâche avec de grands ensembles de données ou que vous appelez plusieurs fois le même point de terminaison d'API, cela peut entraîner un problème de délai d'attente en raison de l'implémentation de l'API Pipedrive. Cependant, les temps de réponse du connecteur et du shim diminuent comme prévu en raison de l’augmentation du nombre de partitions.

# Connexion à Productboard
<a name="connecting-to-productboard"></a>

Productboard est le système de gestion des produits qui aide les équipes produit à commercialiser les bons produits plus rapidement. Plus de 3 000 entreprises modernes axées sur les produits, comme Zendesk UiPath et Microsoft, utilisent Productboard pour comprendre ce dont les utilisateurs ont réellement besoin, hiérarchiser les prochaines étapes et rallier tout le monde autour de leur feuille de route.

**Topics**
+ [AWS Glue support pour Productboard](productboard-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](productboard-configuring-iam-permissions.md)
+ [Configuration de Productboard](productboard-configuring.md)
+ [Configuration de connexions Productboard](productboard-configuring-connections.md)
+ [Lecture à partir d’entités Productboard](productboard-reading-from-entities.md)
+ [Options de connexion Productboard](productboard-connection-options.md)
+ [Création d’un compte Productboard](productboard-create-account.md)
+ [Limitations](productboard-connector-limitations.md)

# AWS Glue support pour Productboard
<a name="productboard-support"></a>

AWS Glue prend en charge Productboard comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Productboard.

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

**Versions de l’API Productboard prises en charge**  
 v1 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="productboard-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration de Productboard
<a name="productboard-configuring"></a>

Avant de pouvoir AWS Glue utiliser le transfert depuis Productboard, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="productboard-configuring-min-requirements"></a>
+ Vous disposez d’un compte Productboard avec adresse e-mail et mot de passe. Pour plus d’informations sur la création d’un compte, consultez [Creating a Productboard account](productboard-create-account.md). 
+  Vous devez avoir créé AWS un compte avec l'accès au service à AWS Glue. 
+ Vous disposez des informations d'authentification d'un compte Productboard : soit un jeton JWT si vous souhaitez utiliser une authentification personnalisée, soit un identifiant client et un code secret si vous souhaitez utiliser .0. OAuth2
+ Si l'utilisateur souhaite l'utiliser`OAuth2.0`, [enregistrez votre application auprès de Productboard](https://app.productboard.com/oauth2/applications/new) et configurez-la en suivant les instructions de la section [Comment intégrer Productboard via OAuth2 la documentation destinée aux développeurs](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation).

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Productboard. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Productboard.

# Configuration de connexions Productboard
<a name="productboard-configuring-connections"></a>

 

Productboard prend en charge l’authentification personnalisée et `OAuth2.0`. Pour `OAuth2.0`, Productboard prend en charge le type d’autorisation `AUTHORIZATION_CODE`.
+ Ce type d’autorisation est considéré comme `OAuth` tridimensionnel, car il repose sur la redirection des utilisateurs vers le serveur d’autorisation tiers pour authentifier l’utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée AWS Glue dont il est propriétaire et où il n'a pas besoin de fournir d'informations `OAuth` connexes, à l'exception de son identifiant client Productboard et de son secret client. La AWS Glue console redirige l'utilisateur vers Productboard où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Productboard.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Productboard et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Productboard pour se connecter et autoriser l'accès AWS Glue à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter la documentation publique de Productboard sur la création d'une application connectée pour `AUTHORIZATION_CODE OAuth` Flow, consultez [Comment intégrer à Productboard via OAuth2 la documentation destinée aux développeurs](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation). 

Pour configurer une connexion Productboard :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 
   + Pour l’authentification `OAuth` : pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 
   + Pour `Custom auth` : pour l’application connectée gérée par le client, le secret doit contenir le `JWT token` de l’application connectée avec `access_token` comme clé. 
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Productboard. 

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez le type d’authentification pour vous connecter à une source de données :
      + Pour l’authentification `OAuth` : indiquez le `Token URL` et l’`User Managed Client Application ClientId` de l’application Productboard.

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

1. Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une connexion réseau supplémentaire.

# Lecture à partir d’entités Productboard
<a name="productboard-reading-from-entities"></a>

 **Conditions préalables** 

Un objet Productboard à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 
+ [Abuse-reports](https://productboard.com/developer/marketing/api/campaign-abuse/)
+ [Automation](https://productboard.com/developer/marketing/api/automation/list-automations/)
+ [Campagnes](https://productboard.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Click-details](https://productboard.com/developer/marketing/api/link-clickers/)
+ [Lists](https://productboard.com/developer/marketing/api/link-clickers/)
+ [Membres](https://productboard.com/developer/marketing/api/list-segment-members/)
+ [Open-details](https://productboard.com/developer/marketing/api/list-members/)
+ [Segments](https://productboard.com/developer/marketing/api/list-segments/)
+ [Stores](https://productboard.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Unsubscribed](https://productboard.com/developer/marketing/api/unsub-reports/)


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
|  Caractéristiques  | Oui | Oui | Non | Oui | Oui | 
|  Éléments  | Non | Oui | Non | Oui | Non | 
|  Produits  | Non | Oui | Non | Oui | Non | 
|  Statuts des fonctionnalités  | Non | Oui | Non | Oui | Oui | 
|  Définitions de champs personnalisés  | Non | Oui | Non | Oui | Non | 
|  Valeurs de champs personnalisés  | Oui | Oui | Non | Oui | Non | 

 **Exemple** 

```
Productboard_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Productboard",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "feature",
        "API_VERSION": "1"
    }
```

 **Détails des entités et des champs Productboard** 
+ [Fonctions](https://developer.productboard.com/#tag/features)
+ [Composants](https://developer.productboard.com/#tag/components)
+ [Statuts des fonctionnalités](https://developer.productboard.com/#tag/statuses)
+ [Produits](https://developer.productboard.com/#tag/products)
+ [Définitions de champs personnalisés](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFields)
+ [Valeurs de champs personnalisés](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFieldsValues)

# Options de connexion Productboard
<a name="productboard-connection-options"></a>

Les options de connexion pour Productboard sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Productboard. 
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest de Productboard Engage que vous souhaitez utiliser. Par exemple : 3.0.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.

# Création d’un compte Productboard
<a name="productboard-create-account"></a>

1. Accédez à la [page de connexion à Productboard](https://app.productboard.com/), saisissez votre adresse e-mail et votre mot de passe, puis choisissez **M’inscrire**.

1. Dans le champ **Nom du compte**, saisissez le nom de votre compte Productboard, puis cochez la case **J’accepte la politique de confidentialité**.

1. Sur la page **Créez à présent votre espace de travail**, dans le champ **URL de l’espace de travail**, entrez l’URL de votre nouvel espace de travail. Choisissez ensuite **Continuer** pour passer à la page suivante et fournir les informations restantes.

   Cela permet de créer votre compte d’essai. Le compte d’essai est gratuit pendant 15 jours. Une fois votre période d’essai expirée, vous pouvez acheter un forfait payant. Notez votre adresse e-mail, votre mot de passe et l’URL de votre espace de travail. Vous aurez besoin de ces informations pour accéder à votre compte à l’avenir.

**Enregistrement d’une application `OAuth2.0`**

1. Accédez à la [page de connexion à Productboard](https://login.productboard.com/?locale=en), saisissez votre adresse e-mail et votre mot de passe, puis choisissez **Se connecter**. 

1. Sélectionnez l’icône **Utilisateur** dans le coin supérieur droit, puis choisissez **Compte et facturation** dans le menu déroulant.

1. Sélectionnez **Extras** et choisissez **Applications enregistrées** dans le menu déroulant.

1. Recherchez et choisissez **Enregistrer une application**.

1. Entrez les détails suivants :
   + **Nom de l’application** : nom de l’application. 
   + **Entreprise/organisation** : nom de votre entreprise ou organisation.
   + **Site Web de l’application** : site Web de l’application.
   + **URI de redirection** : un modèle d’URI de redirection est un chemin d’URI (ou une liste de chemins séparés par des virgules) vers lequel Productboard peut rediriger (si demandé) une fois le flux de connexion terminé. Par exemple, `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. Choisissez **Créer**. 

1. L’**ID client** et le **secret client** seront désormais visibles. Copiez-les et enregistrez-les dans un endroit sûr. Ensuite, choisissez **Terminé**. 
**Note**  
Vos chaînes d'ID client et de secret client sont des informations d'identification utilisées pour établir une connexion avec ce connecteur lors de l'utilisation de AppFlow ou AWS Glue.

**Récupération des informations d'identification CustomAuth**

1. Accédez à la [page de connexion à Productboard](https://app.productboard.com/), saisissez votre adresse e-mail et votre mot de passe, puis choisissez **Se connecter**.

   Vous serez ensuite redirigé vers la page d’accueil.

1. Sur la page d'accueil, accédez à **Paramètres de l'espace de travail** > **Intégrations** > **Public APIs** > **Jeton d'accès**.
**Note**  
Si la APIs section **publique** n'est pas visible, votre compte est peut-être associé au forfait Essentials. L’accès aux jetons d’API nécessite au minimum un forfait Pro. Les fonctionnalités et les noms des forfaits sont susceptibles d’être modifiés. Pour plus d’informations sur les packages, consultez [Productboard pricing](https://www.productboard.com/pricing/).

1. Choisissez **\$1** pour générer un jeton et assurez-vous de le stocker en toute sécurité pour une référence future.

**Création d’informations d’identification `OAuth2.0`**

Pour utiliser l’authentification `OAuth2.0` avec le connecteur Productboard, vous devez enregistrer votre application sur la plateforme Productboard et générer un `Client ID` et un `Client Secret`.

1. Accédez à la [page de connexion à Productboard](https://app.productboard.com/), saisissez votre adresse e-mail et votre mot de passe, puis choisissez **Se connecter**.

1. Pour enregistrer une nouvelle OAuth2 application avec votre compte Productboard, rendez-vous sur la page [Producboard](to register new OAuth2 application with your Productboard account).

1. Complétez les champs obligatoires et sélectionnez les portées nécessaires pour chaque entité à laquelle vous souhaitez accéder. 
**Note**  
Vous avez choisi les quatre portées suivantes, qui sont obligatoires pour les six entités prises en charge.

1. L’**URL de redirection** doit être au format suivant : `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`.
**Note**  
Les redirections Appflow URLs sont susceptibles d'être modifiées. Une fois disponible, veuillez mettre à jour la redirection URLs pour la AWS Glue plateforme.

1. L’**ID client** et le **secret client** seront désormais visibles. Copiez-les et enregistrez-les dans un endroit sûr. 

1. Vous pouvez configurer et vérifier `OAuth2` en suivant les étapes décrites dans la section [Comment intégrer à Productboard via la documentation destinée aux OAuth2 développeurs](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation).

# Limitations
<a name="productboard-connector-limitations"></a>

Les restrictions du connecteur Productboard sont les suivantes :
+ Productboard ne prend en charge ni le partitionnement basé sur les champs, ni le partitionnement basé sur les enregistrements.

# Connexion à QuickBooks
<a name="connecting-to-data-quickbooks"></a>

QuickBooks est une application comptable de premier plan pour les petites et moyennes entreprises. QuickBooks les applications comptables remontent aux années 1980 en tant que l'un des premiers produits d'Intuit. Il s'agissait donc à l'origine d'un logiciel de bureau. Aujourd'hui, QuickBooks propose plusieurs applications comptables et financières commerciales sous forme de logiciels installables et de logiciels SaaS basés sur le cloud. En tant qu' QuickBooks utilisateur, vous pouvez vous connecter AWS Glue à votre QuickBooks compte. Vous pouvez ensuite l'utiliser QuickBooks comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre QuickBooks des AWS services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour QuickBooks](quickbooks-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](quickbooks-configuring-iam-permissions.md)
+ [Configuration QuickBooks](quickbooks-configuring.md)
+ [Configuration des QuickBooks connexions](quickbooks-configuring-connections.md)
+ [Lecture à partir d' QuickBooks entités](quickbooks-reading-from-entities.md)
+ [QuickBooks options de connexion](quickbooks-connection-options.md)
+ [Limitations et remarques relatives au QuickBooks connecteur](quickbooks-connector-limitations.md)

# AWS Glue support pour QuickBooks
<a name="quickbooks-support"></a>

AWS Glue prend en charge QuickBooks les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de QuickBooks.

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

**Versions QuickBooks d'API prises en charge**  
Les versions QuickBooks d'API suivantes sont prises en charge :
+ v3

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="quickbooks-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration QuickBooks
<a name="quickbooks-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis QuickBooks, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Tu as un QuickBooks compte.
+ Votre QuickBooks compte est activé pour accéder à l'API.

Pour plus d'informations, consultez les rubriques suivantes de la QuickBooks documentation :
+ [Créer un compte Intuit](https://quickbooks.intuit.com/learn-support/en-us/help-article/account-management/create-intuit-user-account/L62kSFEOM_US_en_US)
+ [Créer et commencer à développer votre application](https://developer.intuit.com/app/developer/qbo/docs/get-started/start-developing-your-app)

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre QuickBooks compte. Pour les connexions classiques, vous n'avez rien d'autre à faire dans QuickBooks.

# Configuration des QuickBooks connexions
<a name="quickbooks-configuring-connections"></a>

QuickBooks prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 Le type de subvention détermine le mode de AWS Glue communication avec QuickBooks lequel vous pouvez demander l'accès à vos données.
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée QuickBooks et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés QuickBooks vers pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter QuickBooks la documentation publique sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir [Configuration OAuth 2.0](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0).

Pour configurer une QuickBooks connexion :

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez QuickBooks.

   1. Fournissez l'URL de l'instance et l'ID d'entreprise de l' QuickBooks instance à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d' QuickBooks entités
<a name="quickbooks-reading-from-entities"></a>

**Prérequis**

Un QuickBooks objet que vous aimeriez lire.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Compte | Oui | Oui | Oui | Oui | Oui | 
| Bill | Oui | Oui | Oui | Oui | Oui | 
| Company Info | Non | Non | Non | Oui | Non | 
| Client | Oui | Oui | Oui | Oui | Oui | 
| Employee | Oui | Oui | Oui | Oui | Oui | 
| Estimate | Oui | Oui | Oui | Oui | Oui | 
| Invoice | Oui | Oui | Oui | Oui | Oui | 
| Élément | Oui | Oui | Oui | Oui | Oui | 
| Payment | Oui | Oui | Oui | Oui | Oui | 
| Préférences | Non | Non | Non | Oui | Non | 
| Profit and Loss | Oui | Non | Non | Oui | Non | 
| Tax Agency | Oui | Oui | Oui | Oui | Oui | 
| Vendors | Oui | Oui | Oui | Oui | Oui | 

**Exemple :**

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v3"
    }
```

**QuickBooks détails de l'entité et du champ** :

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Compte](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account)
+ [Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/bill)
+ [CompanyInfo](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/companyinfo)
+ [Client](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/customer)
+ [Employee](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/employee)
+ [Estimate](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/estimate)
+ [Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice)
+ [Elément](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/item)
+ [Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/payment)
+ [Préférences](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/preferences)
+ [ProfitAndLoss](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/profitandloss)
+ [TaxAgency](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/taxagency)
+ [Fournisseur](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/vendor)

## Requêtes de partitionnement
<a name="quickbooks-reading-partitioning-queries"></a>

**Partitionnement basé sur les champs** :

Dans QuickBooks, les champs Integer et DateTime datatype prennent en charge le partitionnement basé sur les champs.

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "REALMID": "12345678690123456789",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v3",
        "PARTITION_FIELD": "MetaData_CreateTime"
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z"
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

**Partitionnement basé sur des enregistrements** :

La requête d’origine est divisée en `NUM_PARTITIONS` nombres de sous-requêtes qui peuvent être exécutées simultanément par les tâches Spark :
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "REALMID": "1234567890123456789",
        "ENTITY_NAME": "Bill",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# QuickBooks options de connexion
<a name="quickbooks-connection-options"></a>

Les options de connexion suivantes sont disponibles pour QuickBooks :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans QuickBooks.
+ `INSTANCE_URL`(String) - (Obligatoire) Une URL d' QuickBooks instance valide.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. QuickBooks Version de l'API Rest que vous souhaitez utiliser.
+ `REALM_ID`(Chaîne) - Un identifiant identifiant une entreprise QuickBooks en ligne individuelle à laquelle vous envoyez des demandes.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Limitations et remarques relatives au QuickBooks connecteur
<a name="quickbooks-connector-limitations"></a>

Les limitations ou remarques suivantes concernent le QuickBooks connecteur :
+ Dans l’API `taxAgency`, le filtrage Order by ne fonctionne pas comme prévu.

# 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. 

# Connexion à Salesforce
<a name="connecting-to-data-salesforce"></a>

Salesforce fournit un logiciel de gestion de la relation client (CRM) qui vous aide dans les domaines des ventes, du service client, du commerce électronique, etc. Si vous êtes un utilisateur de Salesforce, vous pouvez vous connecter AWS Glue à votre compte Salesforce. Vous pouvez ensuite utiliser Salesforce comme source de données ou comme destination dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Salesforce et les AWS services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Salesforce](salesforce-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](salesforce-configuring-iam-permissions.md)
+ [Configuration de Salesforce](salesforce-configuring.md)
+ [Application du profil Administrateur système](#salesforce-configuring-apply-system-admin-profile)
+ [Configuration des connexions Salesforce](salesforce-configuring-connections.md)
+ [Lecture à partir de Salesforce](salesforce-reading-from-entities.md)
+ [Écriture vers Salesforce](salesforce-writing-to.md)
+ [Options de connexion à Salesforce](salesforce-connection-options.md)
+ [Restrictions du connecteur Salesforce](salesforce-connector-limitations.md)
+ [Configuration du flux de code d’autorisation pour Salesforce](salesforce-setup-authorization-code-flow.md)
+ [Configurer le OAuth flux de porteurs JWT pour Salesforce](salesforce-setup-jwt-bearer-oauth.md)

# AWS Glue support pour Salesforce
<a name="salesforce-support"></a>

AWS Glue prend en charge Salesforce comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Salesforce.

**Prise en charge en tant que cible ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour écrire des enregistrements dans Salesforce.

**Versions de l’API Salesforce prises en charge**  
Les versions suivantes de l’API Salesforce sont prises en charge :
+ v58.0
+ v59.0
+ v60.0

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="salesforce-configuring-iam-permissions"></a>

L'exemple de politique IAM suivant décrit les autorisations requises pour créer, gérer et utiliser des connexions Salesforce dans les tâches AWS Glue ETL. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue",
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "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 indiquez des options réseau lors de la création d’une connexion Salesforce, les actions suivantes doivent également être incluses dans le rôle IAM :

------
#### [ JSON ]

****  

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

------

 Pour les connexions Salesforce zéro ETL, consultez [Zero-ETL prerequisites](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html). 

 Pour les connexions Salesforce zéro ETL, consultez [Zero-ETL prerequisites](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html). 

# Configuration de Salesforce
<a name="salesforce-configuring"></a>

Avant de pouvoir transférer des données AWS Glue vers ou depuis Salesforce, vous devez répondre aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Salesforce.
+ Votre compte Salesforce est activé pour accéder à l’API. L’accès à l’API est activé par défaut pour les éditions Enterprise, Unlimited, Developer et Performance.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Salesforce. AWS Glue gère les autres exigences avec l'application connectée AWS gérée.

## L'application connectée AWS gérée pour Salesforce
<a name="salesforce-configuring-connected-app"></a>

L'application connectée AWS gérée vous permet de créer une connexion Salesforce en moins d'étapes. Dans Salesforce, une application connectée est un framework qui autorise des applications externes, par exemple AWS Glue, à accéder à vos données Salesforce à l'aide de la OAuth version 2.0. Pour utiliser l'application connectée AWS gérée, créez une connexion Salesforce à l'aide de la AWS Glue console. Lorsque vous configurez la connexion, définissez le **OAuth type** d'**autorisation sur Code d'autorisation** et laissez la case **Utiliser une application client AWS gérée** cochée.

Lorsque vous enregistrez la connexion, vous serez redirigé vers Salesforce pour vous connecter et approuver AWS Glue l'accès à votre compte Salesforce.

## Application du profil Administrateur système
<a name="salesforce-configuring-apply-system-admin-profile"></a>

 Dans Salesforce, suivez les étapes pour appliquer le profil Administrateur système : 

1.  Dans Salesforce, accédez à **Paramètres > Applications connectées > OAuth Utilisation des applications connectées**. 

1.  Dans la liste des applications connectées, recherchez AWS Glue et choisissez **Installer**. Si nécessaire, choisissez **Débloquer**. 

1.  Accédez à **Paramètres > Gérer les applications connectées, puis choisissez AWS Glue**. Sous OAuth Politiques, choisissez **Administrateur, les utilisateurs approuvés sont préautorisés** et sélectionnez le profil **d'administrateur système**. Cette action restreint l'accès aux AWS Glue seuls utilisateurs possédant le profil d'administrateur système. 

## Application du profil Administrateur système
<a name="salesforce-configuring-apply-system-admin-profile"></a>

 Dans Salesforce, suivez les étapes pour appliquer le profil Administrateur système : 

1.  Dans Salesforce, accédez à **Paramètres > Applications connectées > OAuth Utilisation des applications connectées**. 

1.  Dans la liste des applications connectées, recherchez AWS Glue et choisissez **Installer**. Si nécessaire, choisissez **Débloquer**. 

1.  Accédez à **Paramètres > Gérer les applications connectées, puis choisissez AWS Glue**. Sous OAuth Politiques, choisissez **Administrateur, les utilisateurs approuvés sont préautorisés** et sélectionnez le profil **d'administrateur système**. Cette action restreint l'accès aux AWS Glue seuls utilisateurs possédant le profil d'administrateur système. 

# Configuration des connexions Salesforce
<a name="salesforce-configuring-connections"></a>

Pour configurer une connexion Salesforce :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour le type d’autorisation JWT\$1TOKEN, le secret doit contenir la clé JWT\$1TOKEN avec sa valeur.

   1. Pour le type de AuthorizationCode subvention :

      1. Pour une application connectée AWS gérée, un secret vide ou un secret avec une valeur temporaire doit être fourni.

      1. Pour une application connectée gérée par le client, le secret doit contenir l’application connectée `Consumer Secret` avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : Vous devez créer un secret pour votre connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Salesforce.

   1. Indiquez la valeur INSTANCE\$1URL de l’instance Salesforce à laquelle vous souhaitez vous connecter.

   1. Indiquez l’environnement Salesforce.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez le type de OAuth2 subvention que vous souhaitez utiliser pour les connexions. Le type de subvention détermine le mode AWS Glue de communication avec Salesforce pour demander l'accès à vos données. Votre choix influe sur les exigences que vous devez respecter avant de créer la connexion. Vous pouvez choisir l’un des types suivants :
      + **Type d’autorisation JWT\$1BEARER** : ce type d’autorisation fonctionne bien pour les scénarios d’automatisation, car il permet de créer un jeton Web JSON (JWT) dès le départ avec les autorisations d’un utilisateur particulier dans l’instance Salesforce. Le créateur a le contrôle de la durée de validité du JWT. AWS Glue est capable d'utiliser le JWT pour obtenir un jeton d'accès qui est utilisé pour appeler Salesforce APIs.

        Ce flux nécessite que l’utilisateur ait créé une application connectée dans son instance Salesforce qui permet d’émettre des jetons d’accès basés sur JWT pour les utilisateurs.

        Pour plus d'informations sur la création d'une application connectée pour le OAuth flux porteur JWT, voir [OAuth 2.0 JWT bearer](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm) flow pour l'intégration. server-to-server Pour configurer le flux de porteurs JWT avec l’application connectée Salesforce, consultez [Configurer le OAuth flux de porteurs JWT pour Salesforce](salesforce-setup-jwt-bearer-oauth.md).
      + Type de **subvention AUTHORIZATION\$1CODE : Ce type** de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application AWS Glue connectée (application client AWS Glue gérée) dans laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'URL de son instance Salesforce. La AWS Glue console redirige l'utilisateur vers Salesforce où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Salesforce.

        Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Salesforce et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Salesforce pour se connecter et autoriser AWS Glue l'accès à leurs ressources.

        Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.

        Pour plus d'informations sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez[Configuration du flux de code d’autorisation pour Salesforce](salesforce-setup-authorization-code-flow.md).

   1. Sélectionnez `secretName` celui que vous souhaitez utiliser pour cette connexion AWS Glue afin de stocker les jetons OAuth 2.0.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

1. Si vous indiquez des options réseau, accordez également au rôle IAM les autorisations suivantes :

------
#### [ JSON ]

****  

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

------

## Configuration des connexions Salesforce avec la AWS CLI
<a name="salesforce-configuring-connections-cli"></a>

Vous pouvez créer des connexions Salesforce à l'aide de la AWS CLI :

```
aws glue create-connection --connection-input \
"{\"Name\": \"salesforce-conn1\",\"ConnectionType\": \"SALESFORCE\",\"ConnectionProperties\": {\"ROLE_ARN\": \"arn:aws:iam::123456789012:role/glue-role\",\"INSTANCE_URL\": \"https://example.my.salesforce.com\"},\"ValidateCredentials\": true,\"AuthenticationConfiguration\": {\"AuthenticationType\": \"OAUTH2\",\"SecretArn\": \"arn:aws:secretsmanager:us-east-1:123456789012:secret:salesforce-conn1-secret-IAmcdk\",\"OAuth2Properties\": {\"OAuth2GrantType\": \"JWT_BEARER\",\"TokenUrl\": \"https://login.salesforce.com/services/oauth2/token\"}}}" \
--endpoint-url https://glue.us-east-1.amazonaws.com \
--region us-east-1
```

# Lecture à partir de Salesforce
<a name="salesforce-reading-from-entities"></a>

**Prérequis**

Un objet Salesforce à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme `Account`, `Case` ou `Opportunity`.

**Exemple :**

```
salesforce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0"
    }
)
```

## Requêtes de partitionnement
<a name="salesforce-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour les champs Date ou Timestamp, le connecteur accepte le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "TIMESTAMP \"1707256978123\""
  "TIMESTAMP '2018-01-01 00:00:00.000 UTC'"
  "TIMESTAMP \"2018-01-01 00:00:00 Pacific/Tahiti\"" 
  "TIMESTAMP \"2018-01-01 00:00:00\""
  "TIMESTAMP \"-123456789\" Pacific/Tahiti"
  "TIMESTAMP \"1702600882\""
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.
+  `TRANSFER_MODE` : prend en charge deux modes : `SYNC` et `ASYNC`. La valeur par défaut est `SYNC`. Lorsque cette option est définie sur `ASYNC`, la requête Bulk API 2.0 sera utilisée pour le traitement. 

Exemple :

```
salesforce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0",
        "PARTITION_FIELD": "SystemModstamp",
        "LOWER_BOUND": "TIMESTAMP '2021-01-01 00:00:00 Pacific/Tahiti'",
        "UPPER_BOUND": "TIMESTAMP '2023-01-10 00:00:00 Pacific/Tahiti'",
        "NUM_PARTITIONS": "10",
        "TRANSFER_MODE": "ASYNC" 
    }
)
```

## Option FILTER\$1PREDICATE
<a name="salesforce-filter-predicate"></a>

**FILTER\$1PREDICATE** : il s’agit d’un paramètre facultatif. Cette option est utilisée pour le filtre de requêtes.

Exemples de **FILTER\$1PREDICATE** :

```
     Case 1: FILTER_PREDICATE with single criterion
     Examples: 	
       LastModifiedDate >= TIMESTAMP '2025-04-01 00:00:00 Pacific/Tahiti'
       LastModifiedDate <= TIMESTAMP "2025-04-01 00:00:00"
       LastModifiedDate >= TIMESTAMP '2018-01-01 00:00:00.000 UTC'
       LastModifiedDate <= TIMESTAMP "-123456789 Pacific/Tahiti"
       LastModifiedDate <= TIMESTAMP "1702600882"

     Case 2: FILTER_PREDICATE with multiple criteria
     Examples: 
       LastModifiedDate >= TIMESTAMP '2025-04-01 00:00:00 Pacific/Tahiti' AND Id = "0012w00001CotGiAAJ"
       LastModifiedDate >= TIMESTAMP "1702600882" AND Id = "001gL000002i26MQAQ"

     Case 3: FILTER_PREDICATE single criterion with LIMIT
     Examples: 
       LastModifiedDate >= TIMESTAMP "1702600882" LIMIT 2

     Case 4: FILTER_PREDICATE with LIMIT
     Examples: 
       LIMIT 2
```

# Écriture vers Salesforce
<a name="salesforce-writing-to"></a>

**Conditions préalables**

Un objet Salesforce auquel vous souhaitez écrire. Vous aurez besoin du nom de l’objet, comme `Account`, `Case` ou `Opportunity`.

Le connecteur Salesforce prend en charge quatre opérations d’écriture :
+ INSERT
+ UPSERT
+ UPDATE
+ DELETE

Lorsque vous utilisez l’opération d’écriture `UPSERT`, vous devez proposer l’option `ID_FIELD_NAMES` afin de spécifier le champ d’ID externe pour les enregistrements.

 Vous pouvez également ajouter d’autres options de connexion : 
+  `TRANSFER_MODE` : prend en charge deux modes : `SYNC` et `ASYNC`. La valeur par défaut est `SYNC`. Lorsque cette option est définie sur `ASYNC`, Bulk API 2.0 Ingest sera utilisé pour le traitement. 
+  `FAIL_ON_FIRST_ERROR`: La valeur par défaut est`FALSE`, ce qui signifie que la AWS Glue tâche continuera à traiter toutes les données même si certains enregistrements d'écriture ont échoué. Lorsqu'elle est définie sur`TRUE`, la AWS Glue tâche échouera en cas d'échec des enregistrements d'écriture et le traitement ne sera pas poursuivi. 

**Exemple**

```
salesforce_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="salesforce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v60.0",
        "WRITE_OPERATION": "INSERT",
        "TRANSFER_MODE": "ASYNC",
        "FAIL_ON_FIRST_ERROR": "true"
    }
)
```

# Options de connexion à Salesforce
<a name="salesforce-connection-options"></a>

Les options de connexion suivantes sont prises en charge pour le connecteur Salesforce :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Salesforce.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest de Salesforce que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.

  Lorsque vous indiquez un prédicat de filtre, seul l’opérateur `AND` est pris en charge. D’autres opérateurs tels que `OR` et `IN` ne sont pas pris en charge actuellement.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `IMPORT_DELETED_RECORDS`(Chaîne) - Par défaut : FALSE. Utilisé pour la lecture. Pour obtenir les enregistrements supprimés lors de la requête.
+ `WRITE_OPERATION`(Chaîne) - Par défaut : INSERT. Utilisé pour l’écriture La valeur doit être INSERT, UPDATE, UPSERT, DELETE.
+ `ID_FIELD_NAMES`(Chaîne) - Valeur par défaut : null. Nécessaire pour UPDATE et UPSERT.

# Restrictions du connecteur Salesforce
<a name="salesforce-connector-limitations"></a>

Les restrictions du connecteur Salesforce sont les suivantes :
+ Nous prenons uniquement en charge Spark SQL, tandis que Salesforce SOQL n’est pas pris en charge.
+ Les signets de tâche ne sont pas pris en charge.
+ Les noms de champs Salesforce sont sensibles à la casse. Lorsque vous écrivez dans Salesforce, les données doivent correspondre à la casse des champs définis dans Salesforce.

# Configuration du flux de code d’autorisation pour Salesforce
<a name="salesforce-setup-authorization-code-flow"></a>

Reportez-vous à la documentation publique de Salesforce pour activer le flux de code d'autorisation OAuth 2.0.

Pour configurer l’application connectée :

1. Cochez la case **Activer OAuth les paramètres**.

1. Dans le champ de texte **URL de rappel**, entrez une ou plusieurs redirections URLs pour AWS Glue.

    URLs Les redirections ont le format suivant :

   https ://*region*.console.aws.amazon. com/gluestudio/oauth

   Dans cette URL, *la région* est le code de la AWS région que vous utilisez AWS Glue pour transférer des données depuis Salesforce. Par exemple, le code pour la région USA Est (Virginie du Nord) est `us-east-1`. Pour cette région, l’URL est la suivante :

   https://us-east-1.console.aws.amazon.com/gluestudio/oauth

   Pour les AWS régions qui les prennent AWS Glue en charge et leurs codes, voir les [AWS Glue points de terminaison et les quotas](https://docs.aws.amazon.com/general/latest/gr/glue.html) dans la *référence AWS générale*.

1. Cochez la case **Exiger le secret pour le flux du serveur Web**.

1. Dans la liste ** OAuth des étendues disponibles**, ajoutez les étendues suivantes :
   + Gérez les données utilisateur via APIs (api)
   + Accéder aux autorisations personnalisées (custom\$1permissions)
   + Accéder au service d’URL d’identité (identifiant, profil, e-mail, adresse, téléphone)
   + Accéder à des identifiants utilisateur uniques (openid)
   + Exécuter des demandes à tout moment (refresh\$1token, offline\$1access)

1. Définissez la politique de jeton d’actualisation pour l’application connectée sur **Le jeton d’actualisation est valide jusqu’à sa révocation**. Dans le cas contraire, vos tâches échoueront à l’expiration de votre jeton d’actualisation. Pour plus d'informations sur la façon de vérifier et de modifier la politique des jetons d'actualisation, consultez la section [Gérer les politiques d' OAuth accès pour une application connectée](https://help.salesforce.com/articleView?id=connected_app_manage_oauth.htm) dans la documentation Salesforce.

# Configurer le OAuth flux de porteurs JWT pour Salesforce
<a name="salesforce-setup-jwt-bearer-oauth"></a>

Reportez-vous à la documentation publique de Salesforce pour activer server-to-server l'intégration avec les [jetons Web JSON OAuth 2.0](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm).

Une fois que vous avez créé un JWT et correctement configuré l’application connectée dans Salesforce, vous pouvez créer une connexion Salesforce avec la clé `JWT_TOKEN` définie dans votre secret Secrets Manager. Définissez le type de OAuth subvention sur **JWT Bearer Token** lors de la création de la connexion.

# Connexion à Salesforce Marketing Cloud
<a name="connecting-to-data-salesforce-marketing-cloud"></a>

Salesforce Marketing Cloud est un fournisseur de logiciels d’automatisation et d’analytique marketing pour le marketing par e-mail, mobile, réseaux sociaux et en ligne. Il propose également des services de conseil et de mise en œuvre. En tant qu'utilisateur de Salesforce Marketing Cloud, vous pouvez vous connecter AWS Glue à votre compte Salesforce Marketing Cloud. Vous pouvez ensuite utiliser Salesforce Marketing Cloud comme source de données ou comme destination dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Salesforce Marketing Cloud et les AWS services ou autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Salesforce Marketing Cloud](salesforce-marketing-cloud-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](salesforce-marketing-cloud-configuring-iam-permissions.md)
+ [Configuration de Salesforce Marketing Cloud](salesforce-marketing-cloud-configuring.md)
+ [Configuration des connexions Salesforce Marketing Cloud](salesforce-marketing-cloud-configuring-connections.md)
+ [Lecture à partir des entités Salesforce Marketing Cloud](salesforce-marketing-cloud-reading-from-entities.md)
+ [Écriture destinée aux entités Salesforce Marketing Cloud](salesforce-marketing-cloud-writing-to-entities.md)
+ [Options de connexion à Salesforce Marketing Cloud](salesforce-marketing-cloud-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Salesforce Marketing Cloud](salesforce-marketing-cloud-connector-limitations.md)

# AWS Glue support pour Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-support"></a>

AWS Glue prend en charge Salesforce Marketing Cloud comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données depuis Salesforce Marketing Cloud.

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

**Versions de l’API Salesforce Marketing Cloud prises en charge**  
Les versions suivantes de l’API Salesforce Marketing Cloud sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="salesforce-marketing-cloud-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Salesforce Marketing Cloud, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="salesforce-marketing-cloud-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Salesforce Marketing Cloud. Pour de plus amples informations, veuillez consulter [Création d’un compte Salesforce Marketing Cloud](#salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-account).
+ Votre compte Salesforce Marketing Cloud est activé pour accéder à l’API. L’accès à l’API est activé par défaut pour les éditions Enterprise, Unlimited, Developer et Performance.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Salesforce Marketing Cloud. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Salesforce Marketing Cloud.

## Création d’un compte Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-account"></a>

Pour Salesforce Marketing Cloud, vous devez contacter le fournisseur pour créer un compte. Si vous ou votre entreprise êtes associé à Salesforce, contactez votre responsable de compte Salesforce pour demander une licence Salesforce Marketing Cloud. Sinon, vous pouvez demander à contacter un représentant Salesforce comme suit : 

1. Accédez à https://www.salesforce.com/in/products/marketing-cloud/overview/et choisissez **S'inscrire**.

1. Cliquez sur le lien **Contactez-nous** en haut à droite de la page.

1. Saisissez les informations requises dans le formulaire et choisissez **Me contacter**.

Un représentant de Salesforce vous contactera pour discuter de vos besoins.

## Création d'un projet et informations d'identification OAuth 2.0
<a name="salesforce-marketing-cloud-configuring-creating-salesforce-marketing-cloud-project-oauth"></a>

Pour obtenir un projet et des informations d'identification OAuth 2.0 :

1. Connectez-vous à votre [instance Salesforce Marketing Cloud](https://mc.login.exacttarget.com/hub-cas/login) à l’aide de votre nom d’utilisateur et de votre mot de passe et authentifiez-vous à l’aide de votre numéro de téléphone portable enregistré.

1. Cliquez sur votre profil en haut à droite, puis sur **Configurer**.

1. Sous **Outils de plateforme**, choisissez **Applications**, puis **Packages installés**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/sfmc-platform-tools.png)

1. Sur la page **Packages installés**, cliquez sur **Nouveau** dans le coin supérieur droit. Saisissez le nom et la description du package.

   Enregistrez le package. Une fois le package enregistré, vous pouvez consulter les détails du package.

1. Sur la page **Détails** du package, dans la section **Composant**, choisissez **Ajouter un composant**.   
![\[\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/sfmc-add-component.png)

1. Sélectionnez le **type de composant** « Intégration d’API » et cliquez sur **Suivant**.

1. **Sélectionnez le **type d'intégration** « Server-à-serveur » (qui possède le type d' OAuth autorisation des informations d'identification du client) et cliquez sur Suivant.**

1. Ajoutez les portées en fonction de vos besoins et cliquez sur **Enregistrer**.

# Configuration des connexions Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-configuring-connections"></a>

Salesforce Marketing Cloud prend en charge le type de subvention CLIENT CREDENTIALS pour OAuth2.
+ Ce type de subvention est considéré comme bidimensionnel OAuth 2.0 car il est utilisé par les clients pour obtenir un jeton d'accès en dehors du contexte d'un utilisateur. AWS Glue est capable d'utiliser l'ID client et le secret du client pour authentifier le Salesforce Marketing Cloud, APIs qui sont fournis par les services personnalisés que vous définissez.
+ Chaque service personnalisé appartient à un utilisateur régi uniquement par l’API, qui dispose d’un ensemble de rôles et d’autorisations autorisant le service à effectuer des actions spécifiques. Un jeton d’accès est associé à un seul service personnalisé.
+ Ce type d’autorisation donne lieu à un jeton d’accès de courte durée qui peut être renouvelé en appelant un point de terminaison d’identité.
+ Pour consulter la documentation publique de Salesforce Marketing Cloud pour OAuth 2.0 avec les informations d'identification du client, voir [Configurer votre environnement de développement pour les packages améliorés](https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/mc-dev-setup-enhanced.html).

Pour configurer une connexion Salesforce Marketing Cloud :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : Vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Salesforce Marketing Cloud.

   1. Indiquez le `Subdomain Endpoint` du Salesforce Marketing Cloud auquel vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir des entités Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-reading-from-entities"></a>

**Prérequis**

Un objet Salesforce Marketing Cloud à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme `Activity` ou `Campaigns`. Le tableau suivant présente les entités prises en charge.

**Entités prises en charge pour la source** :


| Entité | Interface | Peut être filtré | Limit prise en charge | Order by prise en charge | SELECT prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | --- | 
| Event Notification Callback | REST | Non | Non | Non | Oui | Non | 
| Seed-List | REST | Non | Oui | Non | Oui | Non | 
| Configuration | REST | Oui | Oui | Non | Oui | Non | 
| Vérification de domaine | REST | Oui | Oui | Oui | Oui | Non | 
| Objects Nested Tags | REST | Oui | Non | Non | Oui | Non | 
| Contact | REST | Non | Oui | Non | Oui | Non | 
| Event Notification Subscription | REST | Non | Non | Non | Oui | Non | 
| Messagerie | REST | Non | Oui | Non | Oui | Non | 
| Activité | SOAP | Non | Non | Non | Oui | Oui | 
| Bounce Event | SOAP | Non | Non | Non | Oui | Oui | 
| Click Event | SOAP | Non | Non | Non | Oui | Oui | 
| Content Area | SOAP | Non | Non | Non | Oui | Oui | 
| Data Extension | SOAP | Non | Oui | Non | Oui | Oui | 
| E-mail | SOAP | Non | Oui | Non | Oui | Oui | 
| Forwarded Email Event | SOAP | Non | Oui | Non | Oui | Oui | 
| Transférer un e-mail OptInEvent | SOAP | Non | Oui | Non | Oui | Oui | 
| Lien | SOAP | Non | Oui | Non | Oui | Oui | 
| Link Send | SOAP | Non | Oui | Non | Oui | Oui | 
| List | SOAP | Non | Oui | Non | Oui | Oui | 
| List Subscriber | SOAP | Non | Oui | Non | Oui | Oui | 
| Not Sent Event | SOAP | Non | Oui | Non | Oui | Oui | 
| Open Event | SOAP | Non | Oui | Non | Oui | Oui | 
| Envoyer | SOAP | Non | Oui | Non | Oui | Oui | 
| Sent Event | SOAP | Non | Oui | Non | Oui | Oui | 
| Subscriber | SOAP | Non | Oui | Non | Oui | Oui | 
| Survey Event | SOAP | Non | Oui | Non | Oui | Oui | 
| Unsub Event | SOAP | Non | Oui | Non | Oui | Oui | 
| Audit Events | REST | Non | Oui | Oui | Oui | Non | 
| Campagnes | REST | Non | Oui | Oui | Oui | Non | 
| Interactions | REST | Non | Oui | Oui | Oui | Non | 
| Content Assets | REST | Non | Oui | Oui | Oui | Non | 

**Exemple pour REST** :

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Campaigns",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Exemple pour SOAP** :

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Activity",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://**********************.soap.marketingcloudapis.com"
    }
)
```

**Détails des entités et des champs Salesforce Marketing Cloud** :

Les tableaux ci-après décrivent les entités Salesforce Marketing Cloud. Il existe des entités REST avec des métadonnées statiques et des entités SOAP avec des métadonnées dynamiques.

**Entités REST avec métadonnées statiques** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/salesforce-marketing-cloud-reading-from-entities.html)

**Entités SOAP avec métadonnées dynamiques** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/salesforce-marketing-cloud-reading-from-entities.html)

## Requêtes de partitionnement
<a name="salesforce-marketing-cloud-reading-partitioning-queries"></a>

Dans Salesforce Marketing Cloud, les champs Integer et DateTime Datatype prennent en charge le partitionnement basé sur les champs.

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Timestamp, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  “2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "ListSubscriber",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "CreatedDate",
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z",
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z",
        "NUM_PARTITIONS": "10"
    }
)
```

# Écriture destinée aux entités Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-writing-to-entities"></a>

**Conditions préalables**
+ Un objet Salesforce Marketing auquel vous souhaitez écrire. Vous devrez spécifier le nom de l’objet tel que `List` ou `Campaigns` ou l’une des autres entités décrites dans le tableau ci-dessous.
+ Le connecteur Salesforce Marketing Cloud prend en charge trois opérations d’écriture :
  + INSERT
  + UPSERT
  + UPDATE

  Lorsque vous utilisez les opérations d’écriture `UPDATE` et `UPSERT`, vous devez proposer l’option `ID_FIELD_NAMES` afin de spécifier le champ d’ID externe pour les enregistrements. 

**Entités prises en charge pour la destination** :


| Entité | Priority | Interface (REST, SOAP, etc.) | Peut être inséré | Peut être mis à jour | Peut faire l’objet d’un upsert | 
| --- | --- | --- | --- | --- | --- | 
| Campagnes | P0 | REST | Y- Unique | Y- Unique | N | 
| Content Assets | P0 | REST | Y- Unique, en bloc | Y- Unique | N | 
| Contact | P1 | REST | Y- Unique | Y- Unique | N | 
| Vérification de domaine | P1 | REST | Y- Unique | Y- Unique, en bloc | N | 
| Event Notification Callback | P1 | REST | Y- Unique | Y- Unique | N | 
| Event Notification Subscription | P1 | REST | Y- Unique | Y- Unique | N | 
| Messagerie | P1 | REST | Y- Unique | N | N | 
| Object Nested Tag | P2 | REST | Y- Unique | Y- Unique | N | 
| Seed-List | P1 | REST | Y- Unique | Y- Unique | N | 
| Configuration | P1 | REST | Y- Unique | Y- Unique | N | 
| Data Extension | P0 | SOAP | Y- Unique | Y- Unique | Y- Unique | 
| E-mail | P0 | SOAP | Y- Unique | Y- Unique | N | 
| List | P0 | SOAP | Y- Unique | Y- Unique | N | 
| Envoyer | P0 | SOAP | Y- Unique | N | N | 
| Subscriber | P0 | SOAP | Y- Unique | Y- Unique | N | 

**Exemple d’opération INSERT pour REST** :

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Campaigns",
        "API_VERSION": "v1",
        "writeOperation" : "INSERT",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Exemple d’opération INSERT pour SOAP** :

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "List",
        "API_VERSION": "v1",
        "writeOperation" : "INSERT",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Exemple d’opération UPDATE pour REST** :

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Campaigns",
        "API_VERSION": "v1",
        "writeOperation" : "UPDATE",
         "ID_FIELD_NAMES": "id",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Exemple d’opération UPDATE pour SOAP** :

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "List",
        "API_VERSION": "v1",
        "writeOperation" : "UPDATE",
         "ID_FIELD_NAMES": "id",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**Exemple d’opération UPSERT pour SOAP** :

```
salesforcemarketingcloud_write = glueContext.write_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "DataExtension/Insert-***E/6*******3",
        "API_VERSION": "v1",
        "writeOperation" : "UPSERT",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

# Options de connexion à Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-connection-options"></a>

Les options de connexion pour Salesforce Marketing Cloud sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Salesforce Marketing Cloud.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version de l’API Rest et de SOAP API Salesforce Marketing Cloud que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `WRITE_OPERATION`(Chaîne) - Par défaut : INSERT. Utilisé pour l’écriture La valeur doit être INSERT, UPDATE, UPSERT.
+ `ID_FIELD_NAMES`(Chaîne) - Valeur par défaut : null. Nécessaire pour UPDATE/UPSERT.

# Restrictions et remarques relatives au connecteur Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-connector-limitations"></a>

Les restrictions ou les remarques du connecteur Salesforce Marketing Cloud sont les suivantes :
+ Lorsque vous utilisez un filtre sur DateTime un champ de type de données, vous devez transmettre la valeur au format « yyyy-mm-dd THH:MM:SSZ ».
+ Dans Data Preview, la valeur Boolean Datatype apparaît sous la forme d’une valeur vide.
+ Pour les entités SOAP, vous pouvez définir un maximum de deux filtres, et pour les entités REST, vous ne pouvez définir qu’un seul filtre, ce qui limite les tests de partitionnement avec des filtres.
+ Plusieurs comportements inattendus ont été observés du côté du SaaS : le champ `Link.Alias` de l’entité `linksend` ne prend pas en charge l’opérateur CONTAINS (par exemple, `Link.Alias CONTAINS "ViewPrivacyPolicy"`), et les opérateurs de filtre pour les entités Data Extension (telles que EQUALS et GREATER THAN) ne renvoient pas les résultats attendus.
+ L'API ClickEvent SOAP SFMC prend du temps pour refléter les enregistrements nouvellement créés, de sorte que les enregistrements créés récemment peuvent ne pas être immédiatement disponibles dans la réponse de l'API.

  Exemple : Si vous créez 5 nouveaux ClickEvent enregistrements le **2025-01-10T 14:30:00** et que vous les récupérez immédiatement à l'aide de l'API SOAP, la réponse risque de ne pas inclure les 5 enregistrements. Il peut s’écouler jusqu’à cinq minutes pour que les enregistrements qui viennent d’être créés apparaissent dans la réponse de l’API. Ce délai peut également affecter à la fois la récupération des données et les exécutions planifiées.
+ Deux DateTime formats différents : **2025-03-11T 04:46:00 (sans millisecondes) et 2025-03-11T 04:46:00.000** Z sont pris en charge lors de l'exécution d'opérations d'**écriture en (en millisecondes).** AWS Glue 
+ Pour l’entité Event Notification Subscription, un abonnement ne peut être créé que pour une URL de rappel vérifiée, et vous pouvez avoir jusqu’à 200 abonnements par rappel.
+ Pour l’entité Event Notification Callback, un maximum de 50 enregistrements peuvent être créés par compte.

# Connexion à Salesforce Commerce Cloud
<a name="connecting-to-salesforce-commerce-cloud"></a>

 L'API B2C Commerce est un ensemble d'instances de commerce B2C RESTful APIs permettant d'interagir avec les instances de commerce B2C. Elle porte plusieurs noms différents : API Salesforce Commerce, l’acronyme SCAPI ou simplement API Commerce.

 L’API permet aux développeurs de créer un large éventail d’applications : des vitrines complètes aux outils personnalisés pour les commerçants, afin d’améliorer Business Manager. Pour tous les clients B2C Commerce, l’API est disponible gratuitement. 

 L'API est divisée en deux groupes principaux APIs : Shopper APIs et Admin APIs. Au sein de chaque groupe, elles sont divisées en familles d’API et en petits groupes axés sur les fonctionnalités associées. 

**Topics**
+ [AWS Glue support pour Salesforce Commerce Cloud](salesforce-commerce-cloud-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](salesforce-commerce-cloud-configuring-iam-permissions.md)
+ [Configuration de Salesforce Commerce Cloud](salesforce-commerce-cloud-configuring.md)
+ [Configuration des connexions Salesforce Commerce Cloud](salesforce-commerce-cloud-configuring-connections.md)
+ [Lecture à partir d’entités Salesforce Commerce Cloud](salesforce-commerce-cloud-reading-from-entities.md)
+ [Référence des options de connexion Salesforce Commerce Cloud](salesforce-commerce-cloud-connection-options.md)
+ [Limitations](salesforce-commerce-cloud-connector-limitations.md)

# AWS Glue support pour Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-support"></a>

AWS Glue prend en charge Salesforce Commerce Cloud comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données depuis Salesforce Commerce Cloud.

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

**Versions de l’API Salesforce Commerce Cloud prises en charge**  
 v1. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="salesforce-commerce-cloud-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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. 

# Configuration de Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Salesforce Commerce Cloud, vous devez répondre aux exigences suivantes :

## Configuration requise
<a name="salesforce-commerce-cloud-configuring-min-requirements"></a>
+  Vous disposez d’une application client Salesforce Commerce Cloud avec un ID client et un secret client. 
+  Votre compte Salesforce Commerce Cloud est activé pour accéder à l’API. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Salesforce Commerce Cloud. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Salesforce Commerce Cloud. 

# Configuration des connexions Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-configuring-connections"></a>

 Salesforce Commerce Cloud prend en charge le type de subvention CLIENT CREDENTIALS pour OAuth2. 
+  Ce type de subvention est considéré comme bidimensionnel OAuth 2.0 car il est utilisé par les clients pour obtenir un jeton d'accès en dehors du contexte d'un utilisateur. AWS Glue est capable d'utiliser l'identifiant et le secret du client pour authentifier Salesforce Commerce Cloud, APIs qui sont fournis par des services personnalisés que vous définissez. 
+  Chaque service personnalisé appartient à un utilisateur régi uniquement par l’API, qui dispose d’un ensemble de rôles et d’autorisations autorisant le service à effectuer des actions spécifiques. Un jeton d’accès est associé à un seul service personnalisé. 
+  Ce type d’autorisation donne lieu à un jeton d’accès de courte durée qui peut être renouvelé en appelant un point de terminaison d’identité. 
+  Pour plus d’informations sur la documentation de Salesforce Commerce Cloud relative à la génération des informations d’identification client, consultez la [documentation Salesforce](https://developer.salesforce.com/docs/commerce/commerce-api/guide/authorization.html). 

Pour configurer une connexion Salesforce Commerce Cloud :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET comme clé. 

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1.  Sous Connexions de données, choisissez **Créer une connexion**. 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Salesforce Commerce Cloud.

   1. Entrez votre **code abrégé**, votre **identifiant d’organisation** et votre **identifiant de site** Salesforce Commerce Cloud.

   1. Sélectionnez l’URL du domaine Salesforce Commerce Cloud de votre compte Salesforce Commerce Cloud.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Indiquez les OAuth champs d'application (facultatif, application client gérée par l'utilisateur) ClientId du Salesforce Commerce Cloud auquel vous souhaitez vous connecter. 

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

1.  Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**. 

# Lecture à partir d’entités Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Salesforce Commerce Cloud à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Missions | Oui | Oui | Oui | Oui | Oui | 
| Campagnes | Oui | Oui | Oui | Oui | Oui | 
| Catalogues | Oui | Oui | Oui | Oui | Oui | 
| Catégories | Oui | Oui | Oui | Oui | Oui | 
| Coupons | Oui | Oui | Oui | Oui | Oui | 
| Gift Certificates | Oui | Oui | Oui | Oui | Oui | 
| Produits | Oui | Oui | Oui | Oui | Oui | 
| Promotions | Oui | Oui | Oui | Oui | Oui | 
| Source Code Groups | Oui | Oui | Oui | Oui | Oui | 

 **Exemple** 

```
salesforce_commerce_cloud_read = glueContext.create_dynamic_frame.from_options(
     connection_type="SalesforceCommerceCloud",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "campaign",
         "API_VERSION": "v1"      
     }
)
```

 **Détails des entités et des champs Salesforce Commerce Cloud** 

 Liste des entités : 
+  Missions : [https://developer.salesforce.com/docs/commerce/commerce-api/references/assignments]( https://developer.salesforce.com/docs/commerce/commerce-api/references/assignments) 
+  Campagnes : [https://developer.salesforce.com/docs/commerce/commerce-api/references/campaigns](https://developer.salesforce.com/docs/commerce/commerce-api/references/campaigns) 
+  Catalogues : [https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs](https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs) 
+  Catégories : [https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs? ](https://developer.salesforce.com/docs/commerce/commerce-api/references/catalogs?meta=searchCategories)META = Catégories de recherche 
+  Chèques-cadeaux : [https://developer.salesforce.com/docs/commerce/commerce-api/references/gift-chèques-cadeaux](https://developer.salesforce.com/docs/commerce/commerce-api/references/gift-certificates) 
+  Produits : [https://developer.salesforce.com/docs/commerce/commerce-api/references/products](https://developer.salesforce.com/docs/commerce/commerce-api/references/products) 
+  Promotions : [https://developer.salesforce.com/docs/commerce/commerce-api/references/promotions](https://developer.salesforce.com/docs/commerce/commerce-api/references/promotions) 
+  Groupes de code source : [https://developer.salesforce.com/docs/commerce/commerce-api/references/source-code-groups](https://developer.salesforce.com/docs/commerce/commerce-api/references/source-code-groups) 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau ci-dessous : 


| Entité | Champ de partitionnement | DataType | 
| --- | --- | --- | 
| Campagnes | lastModified | DateTime | 
| Campagnes | startDate | DateTime | 
| Campagnes | endDate | DateTime | 
| Catalogues | creationDate | DateTime | 
| Catégories | creationDate | DateTime | 
| Gift Certificates | merchantId | String | 
| Gift Certificates | creationDate | DateTime | 
| Produits | creationDate | DateTime | 
| Produits | lastModified | DateTime | 
| Source Code Groups | creationDate | DateTime | 
| Source Code Groups | startTime | DateTime | 
| Source Code Groups | endTime | DateTime | 

 **Exemple** 

```
 salesforceCommerceCloud_read = glueContext.create_dynamic_frame.from_options(
     connection_type="SalesforceCommerceCloud",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "coupons",
         "API_VERSION": "v1",
         "PARTITION_FIELD": "creationDate",
         "LOWER_BOUND": "2020-05-01T20:55:02.000Z",
         "UPPER_BOUND": "2024-07-11T20:55:02.000Z",
         "NUM_PARTITIONS": "10"
     }
)
```

# Référence des options de connexion Salesforce Commerce Cloud
<a name="salesforce-commerce-cloud-connection-options"></a>

Les options de connexion pour Salesforce Commerce Cloud sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Salesforce Commerce Cloud. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest de Salesforce Commerce Cloud que vous souhaitez utiliser. Exemple : v1. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Limitations
<a name="salesforce-commerce-cloud-connector-limitations"></a>

Les restrictions du connecteur Salesforce Commerce Cloud sont les suivantes :
+ Le filtre Contient ne fonctionne pas comme prévu lors du partitionnement.
+ L’entité de CDN Zones ne prend pas en charge les instances d’environnement de test (sandbox) et ne prend en charge que les types d’instances de développement et de production. Pour plus d'informations, consultez [https://help.salesforce.com/s/ArticleView ? id=cc.b2c\$1embedded\$1cdn\$1overview.htm](https://help.salesforce.com/s/articleView?id=cc.b2c_embedded_cdn_overview.htm).
+ Dans Salesforce Commerce Cloud, il n’existe aucun point de terminaison d’API pour récupérer les métadonnées dynamiques. Par conséquent, aucune disposition ne permet de prendre en charge les champs personnalisés dans l’entité Produit et Catégorie.
+ L’identifiant du site est un paramètre de requête obligatoire. Vous devez transmettre la valeur de l’identifiant du site via le paramètre de connecteur personnalisé. Pour plus d’informations, consultez [Base URL and Request Formation](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html).
+ Vous pouvez appliquer des filtres sur un maximum de deux champs (à l’exception de Niveaux, le cas échéant) dans une seule demande d’API en combinant différents opérateurs, comme indiqué dans le tableau ci-dessous :    
<a name="salesforce-commerce-cloud-limitations-filters"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/salesforce-commerce-cloud-connector-limitations.html)
+ Dans certaines entités, le type de données des champs lors de la récupération est différent de celui utilisé comme champs consultables. Par conséquent, aucune fonctionnalité de filtrage n’est prévue pour ces champs. Le tableau suivant fournit des informations détaillées sur ces champs.     
<a name="salesforce-commerce-cloud-limitations-filters-provision"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/salesforce-commerce-cloud-connector-limitations.html)

# Connexion à Salesforce Marketing Cloud Account Engagement
<a name="connecting-to-data-salesforce-marketing-cloud-account-engagement"></a>

Salesforce Marketing Cloud Account Engagement est une solution d’automatisation marketing qui aide les entreprises à créer des liens significatifs, à générer plus de pipelines et à permettre au service commercial de conclure davantage de ventes. Si vous êtes un utilisateur de Salesforce Marketing Cloud Account Engagement, vous pouvez vous connecter AWS Glue à votre compte Salesforce Marketing Cloud Account Engagement. Vous pouvez utiliser Salesforce Marketing Cloud Account Engagement comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer les données de Salesforce Marketing Cloud Account Engagement vers AWS des services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour l'engagement des comptes Salesforce Marketing Cloud](salesforce-marketing-cloud-account-engagement-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](salesforce-marketing-cloud-account-engagement-configuring-iam-permissions.md)
+ [Configuration de Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-configuring.md)
+ [Configuration des connexions Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-configuring-connections.md)
+ [Lecture à partir des entités Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-reading-from-entities.md)
+ [Options de connexion Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Salesforce Marketing Cloud Account Engagement](salesforce-marketing-cloud-account-engagement-connector-limitations.md)

# AWS Glue support pour l'engagement des comptes Salesforce Marketing Cloud
<a name="salesforce-marketing-cloud-account-engagement-support"></a>

AWS Glue prend en charge l'engagement des comptes Salesforce Marketing Cloud comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Salesforce Marketing Cloud Account Engagement en mode asynchrone ou synchronisé.

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

**Versions de l’API Salesforce Marketing Cloud Account Engagement prises en charge**  
Les versions suivantes de l’API Salesforce Marketing Cloud Account Engagement sont prises en charge :
+ v5

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="salesforce-marketing-cloud-account-engagement-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Salesforce Marketing Cloud Account Engagement, vous devez répondre aux exigences suivantes :

## Configuration requise
<a name="salesforce-marketing-cloud-account-engagement-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Salesforce Marketing.
+ Vous disposez d’un forfait Account Engagement sous licence pour le compte Salesforce. 
+ Vous avez synchronisé l’utilisateur Salesforce avec l’utilisateur Account Engagement.
+ Vous avez créé une nouvelle application connectée sous App Manager pour obtenir des OAuth informations d'identification.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Salesforce Marketing Cloud Account Engagement.

# Configuration des connexions Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-configuring-connections"></a>

Le type de subvention détermine le mode AWS Glue de communication avec Salesforce Marketing Cloud Account Engagement pour demander l'accès à vos données. Votre choix influe sur les exigences que vous devez respecter avant de créer la connexion. Salesforce Marketing Cloud Account Engagement ne prend en charge que le type de subvention AUTHORIZATION\$1CODE pour la version 2.0. OAuth 
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Salesforce Marketing Cloud Account Engagement et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Salesforce Marketing Cloud Account Engagement pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter la documentation publique relative à l'engagement des comptes Salesforce Marketing Cloud sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez [Authentification](https://developer.salesforce.com/docs/marketing/pardot/guide/version5overview.html#authentication).

Pour configurer une connexion Salesforce Marketing Cloud Account Engagement :

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Salesforce Marketing Cloud Account Engagement.

   1. Indiquez l’`INSTANCE_URL` d’une instance Salesforce Marketing Cloud Account Engagement à laquelle vous souhaitez vous connecter.

   1. Indiquez l’`PARDOT_BUSINESS_UNIT_ID` d’une instance Salesforce Marketing Cloud Account Engagement à laquelle vous souhaitez vous connecter.

   1. Sélectionnez l’**URL du code d’autorisation** approprié dans la liste déroulante.

   1. Sélectionnez l’**URL du jeton** appropriée dans le menu déroulant.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Indiquez l’ID client de l’application client gérée par l’utilisateur (l’ID client de l’application connectée).

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. Le secret sélectionné doit comporter une clé `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` dont la valeur est le secret client de l’application connectée.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

1. Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**.

# Lecture à partir des entités Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-reading-from-entities"></a>

**Prérequis**

Un objet Salesforce Marketing Cloud Account Engagement à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source de synchronisation** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Oui | Oui | Oui | Oui | Oui | 
| Contenu dynamique | Oui | Oui | Oui | Oui | Oui | 
| E-mail | Oui | Oui | Oui | Oui | Oui | 
| Email Template | Oui | Oui | Oui | Oui | Oui | 
| Engagement Studio Program | Oui | Oui | Oui | Oui | Oui | 
| Folder Contents | Oui | Oui | Oui | Oui | Oui | 
| Landing Page | Oui | Oui | Oui | Oui | Oui | 
| Lifecycle History | Oui | Oui | Oui | Oui | Oui | 
| Lifecycle Stage | Oui | Oui | Oui | Oui | Oui | 
| List | Oui | Oui | Oui | Oui | Oui | 
| List Email | Oui | Oui | Oui | Oui | Oui | 
| List Membership | Oui | Oui | Oui | Oui | Oui | 
| Opportunity | Oui | Oui | Oui | Oui | Oui | 
| Prospect | Oui | Oui | Oui | Oui | Oui | 
| Prospect Account | Oui | Oui | Oui | Oui | Oui | 
| Utilisateur | Oui | Oui | Oui | Oui | Oui | 

**Exemple :**

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SalesforcePardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5"
    }
   )
```

**Entités prises en charge pour la source asynchrone** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Campaign | Oui | Non | Non | Oui | Non | 
| Contenu dynamique | Oui | Non | Non | Oui | Non | 
| Email Template | Oui | Non | Non | Oui | Non | 
| Landing Page | Oui | Non | Non | Oui | Non | 
| Lifecycle History | Oui | Non | Non | Oui | Non | 
| Lifecycle Stage | Oui | Non | Non | Oui | Non | 
| List | Oui | Non | Non | Oui | Non | 
| List Email | Oui | Non | Non | Oui | Non | 
| List Membership | Oui | Non | Non | Oui | Non | 
| Opportunity | Oui | Non | Non | Oui | Non | 
| Prospect | Oui | Non | Non | Oui | Non | 
| Prospect Account | Oui | Non | Non | Oui | Non | 
| Utilisateur | Oui | Non | Non | Oui | Non | 

**Exemple :**

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SalesforcePardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5",
        "TRANSFER_MODE": "ASYNC"
    }
   )
```

**Détails des entités et des champs Salesforce Marketing Cloud Account Engagement** :

Pour afficher les détails des champs pour les entités suivantes, accédez à [API Salesforce Marketing Cloud Account Engagement](https://developer.salesforce.com/docs/marketing/pardot), choisissez **Guides**, faites défiler la page vers le bas jusqu’à **Open Source API Wrappers**, développez **Version 5 Docs** dans le menu et choisissez une entité.

Liste des entités :
+ Campaign
+ Contenu dynamique
+ E-mail
+ Email Template
+ Engagement Studio Program
+ Folder Content
+ Landing Page
+ Lifecycle History
+ Lifecycle Stage
+ List
+ List Email
+ List Membership
+ Opportunity
+ Prospect
+ Prospect Account
+ Utilisateur

Outre les champs mentionnés ci-dessus, le mode asynchrone prend en charge des champs filtrables spécifiques pour chaque entité, comme indiqué dans le tableau ci-dessous.


| Entité | Champs filtrables supplémentaires pris en charge en mode asynchrone | 
| --- | --- | 
| Campaign | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Contenu dynamique | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Email Template | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Engagement Studio Program | - | 
| Landing Page | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Lifecycle History | createdAfter, createdBefore | 
| Lifecycle Stage | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| List | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| List Email | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| List Membership | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Opportunity | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Prospect | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 
| Prospect Account | createdAfter, createdBefore, deleted | 
| Utilisateur | createdAfter, createdBefore, deleted, updatedAfter, updatedBefore | 

Pour plus d’informations sur les champs supplémentaires, consultez [API Salesforce Export](https://developer.salesforce.com/docs/marketing/pardot/guide/export-v5.html#procedures).

Notez les considérations à prendre en compte pour le connecteur :
+ La valeur du champ `delete` dans les entités peut être `false` (par défaut), `true` ou `all`.

## Requêtes de partitionnement
<a name="salesforce-marketing-cloud-account-engagement-reading-partitioning-queries"></a>

**Partitionnement basé sur des filtres** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d'horodatage Spark utilisé dans SPark les requêtes SQL.

  Exemples de valeurs valides :

  ```
  "2022-01-01T01:01:01.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.
+ `PARTITION_BY` : le type de partitionnement à effectuer. « FIELD » doit être transmis en cas de partitionnement basé sur des champs.

Exemple :

```
salesforcepardot_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcepardot",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v5",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2022-01-01T01:01:01.000Z"
        "UPPER_BOUND": "2024-01-01T01:01:01.000Z"
        "NUM_PARTITIONS": "10",
        "PARTITION_BY": "FIELD"
    }
   )
```

# Options de connexion Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-connection-options"></a>

Les options de connexion pour Salesforce Marketing Cloud Account Engagement sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Salesforce Marketing Cloud Account Engagement.
+ `PARDOT_BUSINESS_UNIT_ID` - (Obligatoire) Utilisé pour créer une connexion. L’ID de l’unité commerciale de l’instance Salesforce Marketing Cloud Account Engagement à laquelle vous souhaitez vous connecter.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version de l’API Rest Salesforce Marketing Cloud Account Engagement que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) -
  + En mode synchronisation - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
  + En mode asynchrone - Par défaut : valeur `DateTime` actuelle (selon le fuseau horaire de l’utilisateur) : 1 an. Utilisé pour la lecture.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Une URL d’instance Salesforce Marketing Cloud Account Engagement valide.
+ `PARTITION_BY`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le type de partitionnement à effectuer. « FIELD » doit être transmis en cas de partitionnement basé sur des champs.
+ `TRANSFER_MODE`(Chaîne) - (Facultatif), Valeur à utiliser pour exécuter une tâche en mode ASYNC. Si cette option n’est pas fournie, la tâche s’exécutera en mode SYNC.

# Restrictions et remarques relatives au connecteur Salesforce Marketing Cloud Account Engagement
<a name="salesforce-marketing-cloud-account-engagement-connector-limitations"></a>

Les remarques et restrictions suivantes s’appliquent :
+ Lorsqu’une limite et un partitionnement sont appliqués, la limite a priorité sur le partitionnement.
+ Conformément aux documents de l'API, `SalesforceMarketingCloudEngagement` application d'une RateLimit sur les demandes quotidiennes et simultanées. Pour plus d’informations, consultez [Plafonds](https://developer.salesforce.com/docs/marketing/pardot/guide/overview.html?q=limitation#rate-limits).
+ L’API d’exportation est soumise à la limite quotidienne d’appels de l’API Account Engagement et à la limite d’appels simultanés de l’API Account Engagement pour votre compte.
+ À l'instar d'une file d'attente, les appels d' Export/Async API sont exécutés de manière séquentielle pour chaque compte. Les anciennes exportations sont traitées avant les nouvelles exportations.
+ La partition n’est pas prise en charge en mode asynchrone.
+ Le nombre de champs sélectionnés spécifiés dans les appels Export/Async d'API ne peut pas dépasser 150.
+ L’entité **Prospect** prend en charge plus de 150 champs, mais seuls 150 champs peuvent être sélectionnés à la fois. Si `Select All` est sélectionné, certains champs seront exclus. Pour récupérer les données de ces champs exclus, vous devez les inclure dans l’option `Selected Fields`.

  Voici la liste des champs exclus dans `SELECT_ALL` : `updatedBy.firstName`, `updatedBy.lastName`, `updatedBy.jobTitle`, `updatedBy.roleName`, `updatedBy.salesforceId`, `updatedBy.createdAt`, `updatedBy.updatedAt`, `updatedBy.isDeleted`, `updatedBy.createdById`, `updatedBy.updatedById`, `updatedBy.tagReplacementLanguage`
+ Les champs Collection ne peuvent être exportés pour Async. Par exemple, dans List Email, les champs `senderOptions` et `replyToOptions` ne sont pas pris en charge.
+ Pour toutes les entités, le filtre est obligatoire. Si aucun filtre n’est fourni, le prédicat de filtre par défaut est défini sur le champ `Created After` avec une valeur de la date/heure actuelle (ajustée à votre fuseau horaire) moins un an.
+ Conformément aux restrictions de Salesforce Marketing Cloud Account Engagement, en mode asynchrone, la plage maximale pour récupérer les données est d’un an. Si une requête est fournie pour plus d’un an, la tâche générera une erreur. 
+ Il existe actuellement un bogue dans Salesforce Pardot. Lorsque la tâche inclut un seul champ qui ne contient aucune donnée, la valeur du champ ne renvoie pas le résultat correct et le nom du champ est alors renvoyé plusieurs fois. L’équipe Salesforce Pardot est consciente du problème et travaille activement à sa résolution.

# Connexion à SAP HANA dans AWS Glue Studio
<a name="connecting-to-data-saphana"></a>

 AWS Glue fournit une prise en charge intégrée pour SAP HANA. AWS Glue Studio fournit une interface visuelle pour se connecter à SAP HANA, créer des tâches d'intégration de données et les exécuter sur l'exécution Spark AWS Glue Studio sans serveur. 

 AWS Glue Studio crée une connexion unifiée pour SAP HANA. Pour de plus amples informations, veuillez consulter [Considérations](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Création d'une connexion SAP HANA](creating-saphana-connection.md)
+ [Création d'un nœud source SAP HANA](creating-saphana-source-node.md)
+ [Création d'un nœud cible SAP HANA](creating-saphana-target-node.md)
+ [Options avancées](#creating-saphana-connection-advanced-options)

# Création d'une connexion SAP HANA
<a name="creating-saphana-connection"></a>

Pour vous connecter à SAP HANA depuis AWS Glue, vous devez créer et stocker vos informations d'identification SAP HANA dans un AWS Secrets Manager secret, puis associer ce secret à une connexion SAP AWS Glue HANA. Vous devrez configurer la connectivité réseau entre votre service SAP HANA et AWS Glue.

**Prérequis :**
+ Si votre service SAP HANA se trouve dans un Amazon VPC, configurez Amazon VPC pour permettre à AWS Glue votre tâche de communiquer avec le service SAP HANA sans que le trafic ne transite par l'Internet public.

  Dans Amazon VPC, identifiez ou créez un **VPC**, un **sous-réseau** et un **groupe de sécurité** qui AWS Glue seront utilisés lors de l'exécution de la tâche. En outre, vous devez vous assurer qu'Amazon VPC est configuré pour autoriser le trafic réseau entre votre point de terminaison SAP HANA et cet emplacement. Votre tâche devra établir une connexion TCP avec votre port JDBC SAP HANA. Pour plus d'informations sur les ports SAP HANA, consultez [la documentation SAP HANA](https://help.sap.com/docs/HANA_SMART_DATA_INTEGRATION/7952ef28a6914997abc01745fef1b607/88e2e8bded9e4041ad3ad87dc46c7b55.html?locale=en-US). Selon la configuration de votre réseau, cela peut nécessiter des modifications des règles du groupe de sécurité, du réseau ACLs, des passerelles NAT et des connexions d'appairage.

**Pour configurer une connexion à SAP HANA :**

1. Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification SAP HANA. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `username/USERNAME` contenant la valeur. *saphanaUsername*
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `password/PASSWORD` contenant la valeur. *saphanaPassword*

1. Dans la AWS Glue console, créez une connexion en suivant les étapes décrites dans[Ajouter une AWS Glue connexion](console-connections.md). Après avoir créé la connexion, conservez le nom de la connexion pour une utilisation future dans AWS Glue. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez SAP HANA.
   + Lorsque vous fournissez l'**URL SAP HANA**, indiquez l'URL de votre instance.

     SAP HANA JDBC URLs sont sous la forme `jdbc:sap://saphanaHostname:saphanaPort/?databaseName=saphanaDBname,ParameterName=ParameterValue`

     AWS Glue nécessite les paramètres d'URL JDBC suivants : 
     + `databaseName` – une base de données par défaut dans SAP HANA à laquelle se connecter.
   + Lorsque vous sélectionnez un **AWS secret**, fournissez*secretName*.

Après avoir créé une connexion AWS Glue SAP HANA, vous devez effectuer les étapes suivantes avant d'exécuter votre AWS Glue tâche :
+ Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire*secretName*.

# Création d'un nœud source SAP HANA
<a name="creating-saphana-source-node"></a>

## Prérequis
<a name="creating-saphana-source-node-prerequisites"></a>
+ Une connexion AWS Glue SAP HANA, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion SAP HANA](creating-saphana-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table SAP HANA que vous souhaitez lire ou interroger*targetQuery*. *tableName*

  Une table peut être spécifiée avec un nom de table SAP HANA et un nom de schéma, sous forme de `schemaName.tableName`. Le nom du schéma et le séparateur « . » ne sont pas obligatoires si la table se trouve dans le schéma par défaut, « public ». Appelle ça*tableIdentifier*. Notez que la base de données est fournie sous forme de paramètre d'URL JDBC dans `connectionName`.

## Ajout d'une source de données SAP HANA
<a name="creating-saphana-source-node-add"></a>

**Pour ajouter un nœud **Source de données – SAP HANA** :**

1.  Choisissez la connexion pour votre source de données SAP HANA. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion SAP HANA**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion SAP HANA](creating-saphana-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1.  Choisissez une option **Source SAP HANA** : 
   +  **Choisissez une seule table** : accéder à toutes les données à partir d'une seule table. 
   +  **Saisir une requête personnalisée** : accéder à un jeu de données à partir de plusieurs tables en fonction de votre requête personnalisée. 

1.  Si vous avez choisi une seule table, entrez*tableName*. 

    Si vous avez choisi **Saisir une requête personnalisée**, saisissez une requête SQL SELECT. 

1.  Dans les **Propriétés SAP HANA personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible SAP HANA
<a name="creating-saphana-target-node"></a>

## Prérequis
<a name="creating-saphana-target-node-prerequisites"></a>
+ Une connexion AWS Glue SAP HANA, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,[Création d'une connexion SAP HANA](creating-saphana-connection.md).
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table SAP HANA dans laquelle vous souhaitez écrire,*tableName*.

  Une table peut être spécifiée avec un nom de table SAP HANA et un nom de schéma, sous forme de `schemaName.tableName`. Le nom du schéma et le séparateur « . » ne sont pas obligatoires si la table se trouve dans le schéma par défaut, « public ». Appelle ça*tableIdentifier*. Notez que la base de données est fournie sous forme de paramètre d'URL JDBC dans `connectionName`.

## Ajout d'une cible de données SAP HANA
<a name="creating-saphana-target-node-add"></a>

**Pour ajouter un nœud **Cible de données – SAP HANA** :**

1.  Choisissez la connexion pour votre source de données SAP HANA. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion SAP HANA**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion SAP HANA](creating-saphana-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Configurez **le nom de la table** en fournissant*tableName*.

1.  Dans les **Propriétés Teradata personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

## Options avancées
<a name="creating-saphana-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d’un nœud SAP HANA. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Consultez [Connexions SAP HANA](aws-glue-programming-etl-connect-saphana-home.md). 

# Connexion à SAP OData
<a name="connecting-to-data-sap-odata"></a>

SAP OData est un protocole Web standard utilisé pour interroger et mettre à jour les données présentes dans SAP à l'aide de l'ABAP (Advanced Business Application Programming), en appliquant et en s'appuyant sur des technologies Web telles que le HTTP pour fournir un accès aux informations provenant de diverses applications, plateformes et appareils externes. Le produit vous permet d’accéder à tout ce dont vous avez besoin pour vous intégrer parfaitement à votre système, à votre application ou à vos données SAP.

**Topics**
+ [AWS Glue support pour SAP OData](sap-odata-support.md)
+ [Création de connexions](sap-odata-creating-connections.md)
+ [Création d'un OData job SAP](sap-odata-creating-job.md)
+ [Écrire à SAP OData](sap-odata-writing.md)
+ [Utilisation du script de gestion OData d'état SAP](sap-odata-state-management-script.md)
+ [Partitionnement pour les entités non ODP](sap-odata-non-odp-entities-partitioning.md)
+ [Options de OData connexion SAP](sap-odata-connection-options.md)
+ [Détails de OData l'entité et du champ SAP](sap-odata-entity-field-details.md)

# AWS Glue support pour SAP OData
<a name="sap-odata-support"></a>

AWS Glue prend en charge SAP OData comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données auprès de SAP OData.

**Prise en charge en tant que cible ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour écrire des enregistrements dans SAP OData.

**Versions d' OData API SAP prises en charge**  
Les versions d' OData API SAP suivantes sont prises en charge :
+ 2.0

**Sources prises en charge**  
Les sources suivantes sont prises en charge :
+ Sources ODP (Operational Data Provisioning) :
  + Extracteurs BW (1) DataSources
  + Vues CDS
  + SLT
+ Sources non ODP, par exemple :
  + Services d’affichage CDS
  + Services basés sur RFC
  + Services ABAP personnalisés

**Composants SAP pris en charge**  
Les exigences minimales sont les suivantes :
+ Vous devez activer le service de catalogue pour la découverte de service.
  + Configurez les sources de données ODP (Operational Data Provisioning) à extraire dans la passerelle SAP de votre système SAP.
  + **OData V2.0** : Activez le ou les services de catalogue OData V2.0 dans votre passerelle SAP via une transaction. `/IWFND/MAINT_SERVICE`
  + Activez les services OData V2.0 dans votre passerelle SAP via une transaction. `/IWFND/MAINT_SERVICE`
  + Votre OData service SAP doit prendre en charge pagination/query les options côté client telles que `$top` et`$skip`. Il doit également prendre en charge l’option de requête système `$count`.
  + Vous devez fournir l'autorisation requise pour que l'utilisateur puisse découvrir les services et extraire les données à l'aide des OData services SAP. Reportez-vous à la documentation de sécurité fournie par SAP.
+ Si vous souhaitez utiliser la OAuth version 2.0 comme mécanisme d'autorisation, vous devez activer la OAuth version 2.0 pour le OData service et enregistrer le OAuth client conformément à la documentation SAP.
+ Pour générer un OData service basé sur des sources de données ODP, SAP Gateway Foundation doit être installé localement dans votre ERP/BW stack ou dans une configuration de hub.
  + Pour vos ERP/BW applications, la pile SAP NetWeaver AS ABAP doit être 7.50 SP02 ou supérieure.
  + Pour le système de hub (SAP Gateway), le SAP NetWeaver AS ABAP du système de hub doit être 7.50 SP01 ou supérieur pour la configuration du hub distant.
+ Pour les sources non ODP, la version de votre NetWeaver stack SAP doit être 7.40 SP02 ou supérieure.

**Méthodes d’authentification prises en charge**  
Les méthodes d’authentification suivantes sont prises en charge :
+ Authentification de base
+ OAuth 2,0

# Conditions préalables
<a name="sap-odata-prerequisites"></a>

Avant de lancer une AWS Glue tâche d'extraction de données depuis SAP à OData l'aide de la OData connexion SAP, remplissez les conditions préalables suivantes :
+ Le OData service SAP correspondant doit être activé dans le système SAP, afin de garantir que la source de données est disponible pour la consommation. Si le OData service n'est pas activé, la tâche Glue ne pourra pas accéder aux données de SAP ni en extraire.
+ Les mécanismes d'authentification appropriés tels que l'authentification de base (personnalisée) ou OAuth 2.0 doivent être configurés dans SAP pour garantir que la AWS Glue tâche puisse établir avec succès une connexion avec le OData service SAP.
+ Configurez les politiques IAM pour accorder à la AWS Glue tâche les autorisations appropriées pour accéder à SAP, à Secrets Manager et aux autres AWS ressources impliquées dans le processus.
+ Si le système SAP est hébergé sur un réseau privé, la connectivité VPC doit être configurée pour garantir que la AWS Glue tâche puisse communiquer en toute sécurité avec SAP sans exposer de données sensibles sur Internet public.

AWS Secrets Manager peut être utilisé pour stocker en toute sécurité des informations sensibles telles que les informations d'identification SAP, que la AWS Glue tâche peut récupérer dynamiquement lors de l'exécution. Cette approche élimine le besoin de coder en dur les informations d’identification, et améliore ainsi la sécurité et la flexibilité.

Les prérequis suivants fournissent des step-by-step conseils sur la façon de configurer chaque composant pour une intégration fluide entre SAP AWS Glue et SAP OData.

**Topics**
+ [OData Activation de SAP](sap-odata-activation.md)
+ [politiques IAM](sap-odata-configuring-iam-permissions.md)
+ [Connectivité/connexion VPC](sap-odata-connectivity-vpc-connection.md)
+ [Authentification SAP](sap-odata-authentication.md)
+ [AWS Secrets Manager pour stocker votre secret d'authentification](sap-odata-aws-secret-manager-auth-secret.md)

# OData Activation de SAP
<a name="sap-odata-activation"></a>

Procédez comme suit pour la OData connexion SAP :

## Sources ODP
<a name="sap-odata-odp-sources"></a>

Avant de pouvoir transférer des données depuis un fournisseur ODP, vous devez respecter les conditions requises suivantes :
+ Vous disposez d'une instance SAP NetWeaver AS ABAP.
+ Votre NetWeaver instance SAP contient un fournisseur ODP à partir duquel vous souhaitez transférer des données. Les fournisseurs ODP incluent :
  + SAP DataSources (code de transaction RSO2)
  + Vues SAP Core Data Services ABAP CDS
  + Systèmes SAP BW ou SAP BW/4HANA (, Object) InfoObject DataStore 
  + Réplication en temps réel de tables et de vues de base de données depuis le système source SAP via SAP Landscape Replication Server (SAP SLT)
  + Vues d’informations SAP HANA dans des sources basées sur SAP ABAP
+ Votre NetWeaver instance SAP possède le composant SAP Gateway Foundation.
+ Vous avez créé un OData service qui extrait les données de votre fournisseur ODP. Pour créer le OData service, vous utilisez le SAP Gateway Service Builder. Pour accéder à vos données ODP, Amazon AppFlow appelle ce service à l'aide de l' OData API. Pour plus d'informations, consultez la section [Génération d'un service d'extraction de données ODP OData](https://help.sap.com/docs/SAP_BPC_VERSION_BW4HANA/dd104a87ab9249968e6279e61378ff66/69b481859ef34bab9cc7d449e6fff7b6.html?version=11.0) dans la documentation SAP BW/4HANA.
+ Pour générer un OData service basé sur des sources de données ODP, SAP Gateway Foundation doit être installé localement dans votre ERP/BW stack ou dans une configuration de hub.
  + Pour vos ERP/BW applications, la pile SAP NetWeaver AS ABAP doit être 7.50 SP02 ou supérieure.
  + Pour le système de hub (SAP Gateway), le SAP NetWeaver AS ABAP du système de hub doit être 7.50 SP01 ou supérieur pour la configuration du hub distant.

## Sources non ODP
<a name="sap-odata-non-odp-sources"></a>
+ Votre version de SAP NetWeaver Stack doit être 7.40 SP02 ou supérieure.
+ Vous devez activer le service de catalogue pour la découverte de service.
  + **OData V2.0** : Le ou les services de catalogue OData V2.0 peuvent être activés dans votre SAP Gateway via une transaction `/IWFND/MAINT_SERVICE`
+ Votre OData service SAP doit prendre en charge pagination/query les options côté client telles que `$top` et`$skip`. Il doit également prendre en charge l’option de requête système `$count`.
+ Pour la OAuth version 2.0, vous devez activer la OAuth version 2.0 pour le OData service, enregistrer le OAuth client conformément à la documentation SAP et définir l'URL de redirection autorisée comme suit :
  + `https://<region>.console.aws.amazon.com/gluestudio/oauth`, en `<region>` remplaçant par la région dans laquelle AWS Glue s'exécute, par exemple : us-east-1. 
  + Vous devez activer la configuration sécurisée pour vous connecter via HTTPS.
+ Vous devez fournir l'autorisation requise à l'utilisateur dans SAP pour découvrir les services et extraire les données à l'aide des OData services SAP. Reportez-vous à la documentation de sécurité fournie par SAP.

# politiques IAM
<a name="sap-odata-configuring-iam-permissions"></a>

## Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="sap-odata-policies-api-operations"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Le rôle doit accorder l’accès à toutes les ressources utilisées par la tâche, par exemple Amazon S3. Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes.
+ [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.
+ [SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite)— Permet read/write d'accéder à AWS Secrets Manager via la console AWS de gestion. Remarque : Cela exclut les actions IAM, alors combinez-les avec `IAMFullAccess` si une configuration de rotation est requise.

**IAM Policies/Permissions nécessaire pour configurer le VPC**

Les autorisations IAM suivantes sont requises lors de l'utilisation d'une connexion VPC pour AWS Glue créer une connexion. Pour plus de détails, consultez [Create an IAM policy for AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html).

------
#### [ JSON ]

****  

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

------

# Connectivité/connexion VPC
<a name="sap-odata-connectivity-vpc-connection"></a>

Étapes de connexion VPC :

1. Utilisez la connexion VPC existante ou créez-en une autre en suivant la [documentation Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html).

1. Assurez-vous que vous disposez d’une passerelle NAT qui achemine le trafic vers Internet.

1. Choisissez Amazon S3 Gateway comme point de terminaison d’un VPC pour créer une connexion.

1. Activez la résolution DNS et le nom d'hôte DNS pour utiliser les services DNS AWS fournis.

1. Accédez au VPC créé et ajoutez les points de terminaison nécessaires pour différents services tels que STS AWS Glue, Secret Managers.

   1. Choisissez Créer un point de terminaison.

   1. Pour Catégorie de service, sélectionnez AWS Services.

   1. Pour Nom du service, choisissez le service auquel vous vous connectez.

   1. Choisissez VPC et Activer le nom DNS.

   1. Points de terminaison de VCP requis pour la connexion VPC :

      1. [STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sts_vpc_endpoint_create.html)

      1. [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/vpc-interface-endpoints.html)

      1. [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

## Configuration du groupe de sécurité
<a name="sap-odata-security-group-configuration"></a>

Le groupe de sécurité doit autoriser le trafic vers son port d'écoute depuis le AWS Glue VPC AWS Glue pour pouvoir s'y connecter. Il est recommandé de limiter autant que possible la plage d’adresses IP source. 

AWS Glue nécessite un groupe de sécurité spécial qui autorise tout le trafic entrant à partir de lui-même. Vous pouvez créer une règle de référence circulaire qui autorise tout le trafic provenant du groupe de sécurité. Vous pouvez modifier un groupe de sécurité existant et le spécifier en tant que source.

Ouvrez la communication depuis les ports HTTPS du point de terminaison de l’URL (instance NLB ou SAP).

## Options de connectivité
<a name="sap-odata-connectivity-options"></a>
+ Connexion HTTPS avec NLB interne et externe, certificat SSL de l’autorité de certification (CA), pas de certificat SSL non auto-signé
+ Connexion HTTPS avec certificat SSL d’instance SAP de l’autorité de certification (CA), pas de certificat SSL non auto-signé

# Authentification SAP
<a name="sap-odata-authentication"></a>

Le connecteur SAP prend en charge les méthodes d’authentification PERSONNALISÉES (authentification SAP DE BASE) et OAUTH.

## Authentification personnalisée
<a name="sap-odata-custom-authentication"></a>

AWS Glue prend en charge l'authentification personnalisée (authentification de base) comme méthode d'établissement de connexions à vos systèmes SAP, permettant l'utilisation d'un nom d'utilisateur et d'un mot de passe pour un accès sécurisé. Ce type d'authentification fonctionne bien pour les scénarios d'automatisation car il permet d'utiliser le nom d'utilisateur et le mot de passe dès le départ avec les autorisations d'un utilisateur particulier dans l' OData instance SAP. AWS Glue est capable d'utiliser le nom d'utilisateur et le mot de passe pour authentifier SAP OData APIs. Dans AWS Glue, l'autorisation de base est implémentée en tant qu'autorisation personnalisée.

Pour consulter la OData documentation SAP publique sur le flux d'authentification de base, consultez la section [Authentification de base HTTP](https://help.sap.com/docs/SAP_SUCCESSFACTORS_PLATFORM/d599f15995d348a1b45ba5603e2aba9b/5c8bca0af1654b05a83193b2922dcee2.html).

## OAuth 2.0 Authentification
<a name="sap-odata-oauth-2.0-authentication"></a>

AWS Glue prend également en charge la OAuth version 2.0 en tant que mécanisme d'authentification sécurisé pour établir des connexions à vos systèmes SAP. Cela permet une intégration fluide tout en garantissant la conformité aux normes d’authentification modernes et en renforçant la sécurité de l’accès aux données.

## Type d’autorisation AUTHORIZATION\$1CODE
<a name="sap-odata-authentication-code-grant-type"></a>

Le type de subvention détermine le AWS Glue mode de communication avec SAP OData pour demander l'accès à vos données. SAP ne OData prend en charge que le type de `AUTHORIZATION_CODE` subvention. Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. 

Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans SAP OData et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers SAP pour OData se connecter et autoriser AWS Glue l'accès à leurs ressources.

Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.

Pour consulter OData la documentation SAP publique sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir [Authentification Using OAuth 2.0](https://help.sap.com/docs/ABAP_PLATFORM_NEW/e815bb97839a4d83be6c4fca48ee5777/2e5104fd87ff452b9acb247bd02b9f9e.html).

# AWS Secrets Manager pour stocker votre secret d'authentification
<a name="sap-odata-aws-secret-manager-auth-secret"></a>

Vous devrez stocker les secrets de OData connexion SAP dans AWS Secrets Manager, configurer les autorisations nécessaires pour les récupérer, comme indiqué dans la [politiques IAM](sap-odata-configuring-iam-permissions.md) section, et les utiliser lors de la création d'une connexion.

Utilisez la console AWS de gestion de AWS Secrets Manager pour créer un secret pour votre source SAP. Pour plus d'informations, consultez la section [Créer un secret du Gestionnaire de AWS Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). Les informations AWS contenues dans Secrets Manager doivent inclure les éléments du code suivant. 

## Secret d’authentification personnalisé
<a name="sap-odata-custom-auth-secret"></a>

Vous devrez saisir votre nom d’utilisateur du système SAP à la place de *<your SAP username>* et son mot de passe à la place de *<your SAP username password>*, ainsi que True ou False. Dans ce contexte, la définition de `basicAuthDisableSSO` sur `true` désactive l’authentification unique (SSO) pour les demandes d’authentification de base, en exigeant des informations d’identification utilisateur explicites pour chaque demande. Inversement, sa définition sur `false` autorise l’utilisation des sessions SSO existantes si elles sont disponibles.

```
{
   "basicAuthUsername": "<your SAP username>",
   "basicAuthPassword": "<your SAP username password>",
   "basicAuthDisableSSO": "<True/False>",
   "customAuthenticationType": "CustomBasicAuth"
}
```

## OAuth 2.0 Secret
<a name="sap-odata-oauth-2.0-secret"></a>

Si vous utilisez la OAuth version 2.0 comme mécanisme d'authentification, le secret du Gestionnaire de AWS Secrets doit avoir l'**application ClientId cliente gérée par l'utilisateur** au format suivant. Vous devrez saisir votre secret client SAP à la place de <your client secret>.

```
{"USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "<your client secret>"
}
```

# Création de connexions
<a name="sap-odata-creating-connections"></a>

Pour configurer une OData connexion SAP :

1. Connectez-vous à la console AWS de gestion et [AWS Glue ouvrez-la](https://console.aws.amazon.com/glue). Dans le AWS Glue Studio, créez une connexion en suivant les étapes ci-dessous :

   1. Cliquez sur Connexions de données sur le panneau de gauche.

   1. Cliquez sur Créer une connexion.

   1. Sélectionnez **SAP OData** dans **Choisir une source de données**

   1. Fournissez l'**URL de l'hôte de l'application** de l' OData instance SAP à laquelle vous souhaitez vous connecter. L’URL de l’hôte de l’application doit être accessible sur l’Internet public pour une connexion non-VPC.

   1. Indiquez le **chemin du service d'application** de l' OData instance SAP à laquelle vous souhaitez vous connecter. Il s’agit du même chemin d’accès que celui du service de catalogue. Par exemple :`/sap/opu/odata/iwfnd/catalogservice;v=2`. AWS Glue n'accepte pas le chemin d'un objet spécifique.

   1. Indiquez le **numéro de client** de l' OData instance SAP à laquelle vous souhaitez vous connecter. Les valeurs acceptables sont [001-999]. Exemple : 010

   1. Indiquez le **numéro de port** de l' OData instance SAP à laquelle vous souhaitez vous connecter. Exemple : 443

   1. Indiquez la **langue d'ouverture de session** de l' OData instance SAP à laquelle vous souhaitez vous connecter. Exemple : EN

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et qui dispose des autorisations décrites dans la [politiques IAM](sap-odata-configuring-iam-permissions.md) section.

   1. Sélectionnez le **type d'authentification** que vous souhaitez utiliser pour cette connexion dans AWS Glue la liste déroulante : OAUTH2 ou PERSONNALISÉ

      1. PERSONNALISÉ : sélectionnez le secret que vous avez créé comme indiqué dans la section [AWS Secrets Manager pour stocker votre secret d'authentification](sap-odata-aws-secret-manager-auth-secret.md).

      1. OAUTH 2.0 - entrez les entrées suivantes uniquement dans le cas de OAuth 2.0 :

         1. Sous **Application client gérée par l'utilisateur ClientId**, entrez votre identifiant client.

         1. `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`(votre secret client) dans le Gestionnaire de AWS Secrets que vous avez créé dans la [AWS Secrets Manager pour stocker votre secret d'authentification](sap-odata-aws-secret-manager-auth-secret.md) section.

         1. Sous **URL du code d’autorisation**, saisissez l’URL de votre code d’autorisation.

         1. Sous **URL des jetons d’autorisation**, saisissez l’URL de votre jeton d’autorisation.

         1. Sous **OAuth Étendue**, entrez vos OAuth portées en les séparant par un espace. Exemple : `/IWFND/SG_MED_CATALOG_0002 ZAPI_SALES_ORDER_SRV_0001`

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. Pour en savoir plus, consultez [Connectivité/connexion VPC](sap-odata-connectivity-vpc-connection.md).

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. Pour plus de détails, consultez [politiques IAM](sap-odata-configuring-iam-permissions.md).

1. Choisissez **Tester la connexion** et testez votre connexion. Si le test de connexion réussit, cliquez sur Suivant, saisissez le nom de votre connexion et enregistrez-la. La fonctionnalité de test de connexion n’est pas disponible si vous avez sélectionné Options réseau (VPC). 

# Création d'un OData job SAP
<a name="sap-odata-creating-job"></a>

Reportez-vous à la section [Création de tâches ETL visuelles avec AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html)

# Sources ODP (Operational Data Provisioning)
<a name="sap-odata-operational-data-provisioning-sources"></a>

L’ODP (Operational Data Provisioning) fournit une infrastructure technique que vous pouvez utiliser pour prendre en charge l’extraction et la réplication des données pour diverses applications cible et prend en charge les mécanismes Delta dans ces scénarios. Dans le cas d’une procédure Delta, les données d’une source (fournisseur ODP) sont automatiquement écrites dans une file d’attente Delta (Operational Delta Queue, ODQ) à l’aide d’un processus de mise à jour ou transmises à la file d’attente Delta à l’aide d’une interface d’extracteur. Un fournisseur ODP peut être un DataSource (extracteurs), des vues ABAP Core Data Services (vues ABAP CDS), SAP BW ou SAP BW/4HANA, un serveur SAP Landscape Transformation Replication (SLT) et des vues d'informations SAP HANA (vues de calcul). Les applications cible (appelées « abonnés » ODQ ou plus généralement « consommateurs ODP ») extraient les données de la file d’attente Delta et continuent à les traiter.

## Chargement complet
<a name="sap-odata-full-load"></a>

Dans le contexte des entités SAP OData et ODP, un **chargement complet** fait référence au processus d'extraction de toutes les données disponibles d'une entité ODP en une seule opération. Cette opération extrait l'ensemble de données complet du système source, garantissant ainsi que le système cible dispose d'une up-to-date copie complète des données de l'entité. Les chargements complets sont généralement utilisés pour les sources qui ne prennent pas en charge les chargements incrémentiels ou lorsqu’une actualisation du système cible est requise.

**Exemple**

Vous pouvez définir explicitement l'`ENABLE_CDC`indicateur sur false lors de la création du DynamicFrame. Remarque : `ENABLE_CDC` est false par défaut, si vous ne souhaitez pas initialiser la file d’attente Delta, vous n’avez pas besoin d’envoyer cet indicateur ou de le définir sur true. Le fait de ne pas définir cet indicateur sur true entraînera une extraction de chargement complet.

```
sapodata_df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "false"
    }, transformation_ctx=key)
```

## Chargement incrémentiel
<a name="sap-odata-incremental-load"></a>

Un **chargement incrémentiel** dans le contexte des entités ODP (Operational Data Provisioning) implique d’extraire uniquement les données nouvelles ou modifiées (deltas) du système source depuis la dernière extraction des données, en évitant ainsi de prétraiter les enregistrements déjà traités. Cette approche améliore considérablement l’efficacité, réduit les volumes de transfert de données, améliore les performances, garantit une synchronisation efficace entre les systèmes et minimise le temps de traitement, en particulier pour les grands jeux de données qui changent fréquemment.

# Transferts incrémentiels basés sur des jetons Delta
<a name="sap-odata-incremental-transfers"></a>

Pour activer le transfert incrémentiel à l’aide de la capture des données de modification (CDC) pour les entités compatibles ODP qui le prennent en charge, procédez comme suit :

1. Créez la tâche de transfert incrémentiel en mode script.

1. Lorsque vous créez le DataFrame or Glue DynamicFrame, vous devez passer l'option`"ENABLE_CDC": "True"`. Cette option garantit que vous recevrez un jeton Delta de la part de SAP, qui pourra être utilisé pour extraire ultérieurement les données modifiées.

Le jeton Delta sera présent dans la dernière ligne du dataframe, dans la colonne DELTA\$1TOKEN. Ce jeton peut être utilisé comme option de connecteur lors des appels suivants pour récupérer de manière incrémentielle le prochain jeu de données.

**Exemple**
+ Nous avons défini le `ENABLE_CDC` drapeau sur`true`, lors de la création du DynamicFrame. Remarque : `ENABLE_CDC` est `false` par défaut, si vous ne souhaitez pas initialiser la file d’attente Delta, vous n’avez pas besoin d’envoyer cet indicateur ou de le définir sur true. Le fait de ne pas définir cet indicateur sur true entraînera une extraction de chargement complet.

  ```
  sapodata_df = glueContext.create_dynamic_frame.from_options(
      connection_type="SAPOData",
      connection_options={
          "connectionName": "connectionName",
          "ENTITY_NAME": "entityName",
          "ENABLE_CDC": "true"
      }, transformation_ctx=key)
  
  # Extract the delta token from the last row of the DELTA_TOKEN column
  delta_token_1 = your_logic_to_extract_delta_token(sapodata_df) # e.g., D20241029164449_000370000
  ```
+ Le jeton Delta extrait peut être transmis en option pour extraire de nouveaux événements.

  ```
  sapodata_df_2 = glueContext.create_dynamic_frame.from_options(
      connection_type="SAPOData",
      connection_options={
          "connectionName": "connectionName",
          "ENTITY_NAME": "entityName",
          // passing the delta token retrieved in the last run
          "DELTA_TOKEN": delta_token_1
      } , transformation_ctx=key)
  
  # Extract the new delta token for the next run
  delta_token_2 = your_logic_to_extract_delta_token(sapodata_df_2)
  ```

Notez que le dernier enregistrement, dans lequel le `DELTA_TOKEN` est présent, n’est pas un enregistrement transactionnel provenant de la source et n’est là que dans le but de transmettre la valeur du jeton Delta.

Outre `DELTA_TOKEN`, les champs suivants sont renvoyés dans chaque ligne du dataframe. 
+ **GLUE\$1FETCH\$1SQ** : il s’agit d’un champ de séquence, généré à partir de l’horodatage EPOC dans l’ordre dans lequel l’enregistrement a été reçu, et qui est unique pour chaque enregistrement. Il peut être utilisé si vous avez besoin de connaître ou d’établir l’ordre des modifications dans le système source. Ce champ ne sera présent que pour les entités compatibles ODP.
+ **DML\$1STATUS** : cela affichera `UPDATED` pour tous les enregistrements récemment insérés et mis à jour à partir de la source, ainsi que `DELETED` pour les enregistrements supprimés de la source.

Pour plus de détails sur la façon de gérer l’état et de réutiliser le jeton Delta pour extraire les enregistrements modifiés à l’aide d’un exemple, reportez-vous à la section [Utilisation du script de gestion OData d'état SAP](sap-odata-state-management-script.md).

## Invalidation de jeton Delta
<a name="sap-odata-invalidation"></a>

Un jeton Delta est associé à la collection de services et à un utilisateur. Si un nouveau pull with initial `“ENABLE_CDC” : “true”` est lancé pour la même collection de services et pour le même utilisateur, tous les jetons delta émis à la suite d'une initialisation précédente seront invalidés par le service SAP OData . L’invocation du connecteur avec un jeton Delta expiré entraînera une exception : 

`Could not open data access via extraction API RODPS_REPL_ODP_OPEN` 

# OData Services (sources autres que le PDO)
<a name="sap-odata-non-odp-services"></a>

## Chargement complet
<a name="sap-odata-non-odp-full-load"></a>

Pour les systèmes non ODP (Operational Data Provisioning), un **chargement complet** consiste à extraire le jeu de données du système source et à le charger dans le système cible. Étant donné que les systèmes non ODP ne prennent pas en charge par nature les mécanismes avancés d’extraction de données tels que les deltas, le processus est simple, mais peut nécessiter beaucoup de ressources en fonction de la taille des données.

## Chargement incrémentiel
<a name="sap-odata-non-odp-incremental-load"></a>

Pour les systèmes ou les entités qui ne prennent pas en charge **ODP (Operational Data Provisioning)**, le transfert de données incrémentiel peut être géré manuellement en mettant en œuvre un mécanisme basé sur l’horodatage pour suivre et extraire les modifications.

**Transferts incrémentiels basés sur l’horodatage**

Pour les entités non compatibles ODP (ou pour les entités compatibles ODP qui n’utilisent pas l’indicateur ENABLE\$1CDC), nous pouvons utiliser une option `filteringExpression` dans le connecteur pour indiquer l’intervalle `datetime` pendant lequel nous voulons extraire les données. Cette méthode repose sur un champ d’horodatage dans vos données qui représente la date à laquelle chaque enregistrement a été créé/modifié pour la dernière fois.

**Exemple**

Récupération des enregistrements modifiés après 2024-01-01T 00:00:00.000

```
sapodata_df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "filteringExpression": "LastChangeDateTime >= 2024-01-01T00:00:00.000"
    }, transformation_ctx=key)
```

Remarque : Dans cet exemple, `LastChangeDateTime` est le champ qui représente la date de dernière modification de chaque enregistrement. Le nom du champ réel peut varier en fonction de votre OData entité SAP spécifique.

Pour obtenir un nouveau sous-ensemble de données lors des exécutions suivantes, vous devez mettre à jour la valeur `filteringExpression` avec un nouvel horodatage. Il s’agit généralement de la valeur d’horodatage maximale des données précédemment extraites.

**Exemple**

```
max_timestamp = get_max_timestamp(sapodata_df)  # Function to get the max timestamp from the previous run
next_filtering_expression = f"LastChangeDateTime > {max_timestamp}"

# Use this next_filtering_expression in your next run
```

Dans la section suivante, nous proposerons une approche automatisée pour gérer ces transferts incrémentiels basés sur l’horodatage, ce qui évite ainsi de devoir mettre à jour manuellement l’expression de filtrage entre les exécutions.

# Écrire à SAP OData
<a name="sap-odata-writing"></a>

 Cette section décrit comment écrire des données dans votre OData service SAP à l'aide du AWS Glue connecteur pour SAP OData. 

**Conditions préalables**
+ Accès à un OData service SAP
+ Un OData EntitySet objet SAP sur lequel vous souhaitez écrire. Vous aurez besoin du nom de l’objet.
+  OData Informations d'identification SAP valides et connexion valide
+ Autorisations appropriées telles que décrites dans [Politiques IAM](https://docs.aws.amazon.com/glue/latest/dg/sap-odata-configuring-iam-permissions.html)

Le OData connecteur SAP prend en charge deux opérations d'écriture :
+ INSERT
+ UPDATE

Lorsque vous utilisez l’opération d’écriture UPDATE, vous devez fournir l’élément ID\$1FIELD\$1NAMES afin de spécifier le champ d’ID externe pour les enregistrements.

**Exemple :**

```
sapodata_write = glueContext.write_dynamic_frame.from_options(
    frame=frameToWrite,
    connection_type="sapodata",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "WRITE_OPERATION": "INSERT"
    }
```

# Utilisation du script de gestion OData d'état SAP
<a name="sap-odata-state-management-script"></a>

Pour utiliser le script de gestion OData d'état SAP dans le cadre de votre AWS Glue travail, procédez comme suit :
+ Téléchargez le script de gestion d’état : `s3://aws-blogs-artifacts-public/artifacts/BDB-4789/sap_odata_state_management.zip ` depuis le compartiment Amazon S3 public.
+ Téléchargez le script dans un compartiment Amazon S3 auquel votre AWS Glue travail est autorisé à accéder.
+ Référencez le script dans votre AWS Glue tâche : lors de la création ou de la mise à jour de votre AWS Glue tâche, transmettez l'`'--extra-py-files'`option faisant référence au chemin du script dans votre compartiment Amazon S3. Par exemple : `--extra-py-files s3://your-bucket/path/to/sap_odata_state_management.py`
+ Importez et utilisez la bibliothèque de gestion des états dans vos scripts de AWS Glue travail.

## Exemple de transfert incrémentiel basé sur des jetons Delta
<a name="sap-odata-delta-token-incremental-transfer"></a>

Voici un exemple d’utilisation du script de gestion d’état pour les transferts incrémentiels basés sur des jetons Delta :

```
from sap_odata_state_management import StateManagerFactory, StateManagerType, StateType

# Initialize the state manager
state_manager = StateManagerFactory.create_manager(
    manager_type=StateManagerType.JOB_TAG,
    state_type=StateType.DELTA_TOKEN,
    options={
        "job_name": args['JOB_NAME'],
        "logger": logger
    }
)

# Get connector options (including delta token if available)
key = "SAPODataNode"
connector_options = state_manager.get_connector_options(key)

# Use the connector options in your Glue job
df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "true",
        **connector_options
    }
)

# Process your data here...

# Update the state after processing
state_manager.update_state(key, sapodata_df.toDF())
```

## Exemple de transfert incrémentiel basé sur l’horodatage
<a name="sap-odata-timestamp-incremental-transfer"></a>

Voici un exemple d’utilisation du script de gestion d’état pour les transferts incrémentiels basés sur des jetons Delta :

```
from sap_odata_state_management import StateManagerFactory, StateManagerType, StateType

# Initialize the state manager
state_manager = StateManagerFactory.create_manager(
    manager_type=StateManagerType.JOB_TAG,
    state_type=StateType.DELTA_TOKEN,
    options={
        "job_name": args['JOB_NAME'],
        "logger": logger
    }
)

# Get connector options (including delta token if available)
key = "SAPODataNode"
connector_options = state_manager.get_connector_options(key)

# Use the connector options in your Glue job
df = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "ENABLE_CDC": "true",
        **connector_options
    }
)

# Process your data here...

# Update the state after processing
state_manager.update_state(key, sapodata_df.toDF())
```

Dans les deux exemples, le script de gestion d’état gère les complexités liées au stockage de l’état (jeton Delta ou horodatage) entre les exécutions de tâches. Il récupère automatiquement le dernier état connu lors de l’obtention des options du connecteur et met à jour l’état après le traitement, ce qui garantit ainsi que chaque tâche exécutée ne traite que les données nouvelles ou modifiées.

# Partitionnement pour les entités non ODP
<a name="sap-odata-non-odp-entities-partitioning"></a>

Dans Apache Spark, le partitionnement fait référence à la manière dont les données sont divisées et distribuées entre les composants master d’un cluster pour un traitement parallèle. Chaque partition est un bloc logique de données qui peut être traité indépendamment par une tâche. Le partitionnement est un concept fondamental de Spark qui a un impact direct sur les performances, l'évolutivité et l'utilisation des ressources. AWS Glue les jobs utilisent le mécanisme de partitionnement de Spark pour diviser l'ensemble de données en petits morceaux (partitions) qui peuvent être traités en parallèle sur les nœuds de travail du cluster. Notez que le partitionnement n’est pas applicable aux entités ODP.

Pour plus de détails, consultez [AWS Glue Spark et PySpark jobs](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html).

**Conditions préalables**

Un objet SAP OData dont vous souhaitez lire un extrait. Vous aurez besoin du object/EntitySet nom. Par exemple : ` /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder `.

**Exemple**

```
sapodata_read = glueContext.create_dynamic_frame.from_options(
    connection_type="SAPOData",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder"
    }, transformation_ctx=key)
```

## Requêtes de partitionnement
<a name="sap-odata-partitioning-queries"></a>

### Partitionnement basé sur les champs
<a name="sap-odata-field-based-partitioning"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. Les nombres entiers, les dates et DateTime les champs prennent en charge le partitionnement basé sur les champs dans le connecteur SAP. OData 
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi.

   Pour tout champ dont le type de données est DateTime, le format d'horodatage Spark utilisé dans les requêtes SQL Spark est accepté.

  Exemples de valeurs valides : `"2000-01-01T00:00:00.000Z"` 
+ `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS` : nombre de partitions.
+ `PARTITION_BY` : le type de partitionnement à effectuer, `FIELD` à transmettre en cas de partitionnement basé sur des champs.

**Exemple**

```
sapodata= glueContext.create_dynamic_frame.from_options(
    connection_type="sapodata",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet",
        "PARTITION_FIELD": "validStartDate"
        "LOWER_BOUND": "2000-01-01T00:00:00.000Z"
        "UPPER_BOUND": "2020-01-01T00:00:00.000Z"
        "NUM_PARTITIONS": "10",
        "PARTITION_BY": "FIELD"
    }, transformation_ctx=key)
```

### Partitionnement basé sur des enregistrements
<a name="sap-odata-record-based-partitioning"></a>

La requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes qui peuvent être exécutées simultanément par les tâches Spark.

Le partitionnement basé sur les enregistrements n'est pris en charge que pour les entités non ODP, car la pagination dans les entités ODP est prise en charge par le jeton suivant. token/skip 
+ `PARTITION_BY` : le type de partitionnement à effectuer. `COUNT` doit être transmis en cas de partitionnement basé sur des enregistrements.

**Exemple**

```
sapodata= glueContext.create_dynamic_frame.from_options(
    connection_type="sapodata",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet",
        "NUM_PARTITIONS": "10",
        "PARTITION_BY": "COUNT"
    }, transformation_ctx=key)
```

# Restrictions/alertes
<a name="sap-odata-limitations"></a>
+ Les entités ODP ne sont pas compatibles avec le partitionnement basé sur les enregistrements car la pagination est gérée à l'aide d'un jeton de saut. token/delta Par conséquent, pour le partitionnement basé sur les enregistrements, la valeur par défaut de maxConcurrency est définie sur « null », quelle que soit la saisie de l’utilisateur.
+ Lorsqu’une limite et une partition sont appliquées, la limite a priorité sur la partition.

# Options de OData connexion SAP
<a name="sap-odata-connection-options"></a>

Les options de connexion pour SAP sont les OData suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans SAP OData.

  Par exemple :/sap/opu/odata/sap/API\$1SALES\$1ORDER\$1SRV/A\$1 SalesOrder
+ `API_VERSION`(Chaîne) - (Facultatif) Utilisé pour la lecture. Version de l' OData API SAP Rest que vous souhaitez utiliser. Exemple : 2.0.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.

  Exemples : SalesOrder
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.

  Par exemple : `SalesOrder = "10"`
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.

  Par exemple : `SELECT * FROM /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder`
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.

  Par exemple : `ValidStartDate`
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.

  Par exemple : `"2000-01-01T00:00:00.000Z"`
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.

  Par exemple : `"2024-01-01T00:00:00.000Z"`
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - L’URL de l’hôte de l’application de l’instance SAP.

  Par exemple : `https://example-externaldata.sierra.aws.dev`
+ `SERVICE_PATH`(Chaîne) - Le chemin d’accès au service d’application de l’instance SAP.

  Par exemple : `/sap/opu/odata/iwfnd/catalogservice;v=2`
+ `CLIENT_NUMBER`(Chaîne) - Le numéro de client de l’application de l’instance SAP.

  Par exemple : 100
+ `PORT_NUMBER`(Chaîne) - Par défaut : le numéro de port de l’application de l’instance SAP.

  Par exemple : 443
+ `LOGON_LANGUAGE`(Chaîne) - La langue de connexion à l’application de l’instance SAP.

  Par exemple : `EN`
+ `ENABLE_CDC`(Chaîne) - Définit s’il faut exécuter une tâche avec CDC activé, c’est-à-dire avec le suivi des modifications.

  Par exemple : `True/False`
+ `DELTA_TOKEN`(Chaîne) - Exécute une extraction de données incrémentielle en fonction du jeton Delta valide fourni. 

  Par exemple : `D20241107043437_000463000`
+ `PAGE_SIZE`(Entier) - Définit la taille de page pour interroger les enregistrements. La taille de page par défaut est de 50 000. Lorsqu’une taille de page est spécifiée, SAP renvoie uniquement le nombre défini d’enregistrements par appel d’API, plutôt que le jeu de données complet. Le connecteur fournira toujours le nombre total d’enregistrements et gérera la pagination en utilisant la taille de page que vous avez indiquée. Si vous avez besoin d’une taille de page plus importante, vous pouvez choisir n’importe quelle valeur jusqu’à 500 000, qui est le maximum autorisé. Toute taille de page spécifiée supérieure à 500 000 sera ignorée. Le système utilisera plutôt la taille de page maximale autorisée. Vous pouvez spécifier le format de page dans l' AWS Glue Studio interface utilisateur en ajoutant une option de connexion `PAGE_SIZE` avec la valeur souhaitée. 

  Par exemple : `20000`

# Détails de OData l'entité et du champ SAP
<a name="sap-odata-entity-field-details"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/sap-odata-entity-field-details.html)

# Connexion à SendGrid
<a name="connecting-to-data-sendgrid"></a>

SendGrid est une plateforme de communication client pour les e-mails transactionnels et marketing.
+ SendGrid Le connecteur aide à créer et à gérer des listes de contacts et à créer des campagnes de marketing par e-mail.
+ SendGrid permet aux entreprises en ligne, aux organisations à but non lucratif et à d'autres entités en ligne de créer et d'envoyer des e-mails marketing à un large public et de surveiller l'engagement avec ces e-mails.

**Topics**
+ [AWS Glue support pour SendGrid](sendgrid-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](sendgrid-configuring-iam-permissions.md)
+ [Configuration SendGrid](sendgrid-configuring.md)
+ [Configuration des SendGrid connexions](sendgrid-configuring-connections.md)
+ [Lecture à partir d' SendGrid entités](sendgrid-reading-from-entities.md)
+ [SendGrid options de connexion](sendgrid-connection-options.md)
+ [SendGrid limites](sendgrid-limitations.md)

# AWS Glue support pour SendGrid
<a name="sendgrid-support"></a>

AWS Glue prend en charge SendGrid les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de SendGrid.

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

**Versions SendGrid d'API prises en charge**  
Les versions SendGrid d'API suivantes sont prises en charge :
+ v3

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="sendgrid-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration SendGrid
<a name="sendgrid-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis SendGrid, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous avez un SendGrid compte doté d'une clé API.
+ Votre SendGrid compte dispose d'un accès à l'API avec une licence valide.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre SendGrid compte. Pour les connexions classiques, vous n'avez rien d'autre à faire dans SendGrid.

# Configuration des SendGrid connexions
<a name="sendgrid-configuring-connections"></a>

SendGrid prend en charge l'authentification personnalisée.

Pour consulter SendGrid la documentation publique sur la génération des clés d'API requises pour une authentification personnalisée, consultez [Authentification](https://www.twilio.com/docs/sendgrid/api-reference/how-to-use-the-sendgrid-v3-api/authentication).

Pour configurer une SendGrid connexion, procédez comme suit :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `api_key` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez SendGrid.

   1. Indiquez `INSTANCE_URL` l' SendGrid instance à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d' SendGrid entités
<a name="sendgrid-reading-from-entities"></a>

**Prérequis**

Un SendGrid objet que vous aimeriez lire. Vous aurez besoin du nom de l’objet, comme `lists`, `singlesends` ou `segments`.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Lists | Non | Oui | Non | Oui | Non | 
| Single Sends | Oui | Oui | Non | Oui | Non | 
| Marketing Campaign Stats-Automations | Oui | Oui | Non | Oui | Non | 
| Marketing Campaign Stats-Single Sends | Oui | Oui | Non | Oui | Non | 
| Segments | Oui | Non | Non | Oui | Non | 
| Contacts | Oui | Non | Non | Oui | Non | 
| Catégorie | Non | Non | Non | Oui | Non | 
| Statistiques | Oui | Non | Non | Oui | Non | 
| Unsubscribe Groups | Oui | Non | Non | Oui | Non | 

**Exemple :**

```
sendgrid_read = glueContext.create_dynamic_frame.from_options(
    connection_type="sendgrid",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "lists",
        "API_VERSION": "v3",
        "INSTANCE_URL": "instanceUrl"
    }
```

**SendGrid détails de l'entité et du champ** :

Entités avec métadonnées statiques :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/sendgrid-reading-from-entities.html)

**Note**  
Les types de données Struct et List sont convertis en type de données String, et le type de DateTime données est converti en Timestamp dans la réponse des connecteurs.

## Requêtes de partitionnement
<a name="sendgrid-reading-partitioning-queries"></a>

SendGrid ne prend pas en charge le partitionnement basé sur des filtres ou le partitionnement basé sur des enregistrements.

# SendGrid options de connexion
<a name="sendgrid-connection-options"></a>

Les options de connexion suivantes sont disponibles pour SendGrid :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans SendGrid.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. SendGrid Version de l'API Rest que vous souhaitez utiliser.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. URL d' SendGrid instance valide.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.

# SendGrid limites
<a name="sendgrid-limitations"></a>

Les restrictions ou remarques suivantes concernent SendGrid :
+ L’extraction incrémentielle n’est prise en charge que par l’entité Stats sur le champ `start_date` et par l’entité Contact sur le champ `event_timestamp`.
+ La pagination n’est prise en charge que par les entités Marketing Campaign Stats (Automations), Marketing Campaign Stats (Single Sends), Single Sends et Lists.
+ Pour l’entité Stats, `start_date` est un paramètre de filtre obligatoire.
+ Une clé d’API à accès restreint ne peut pas prendre en charge l’accès en lecture pour les entités Email API et Stats. Utilisez une clé d’API avec accès complet. Pour plus d’informations, consultez [API Overview](https://www.twilio.com/docs/sendgrid/api-reference/api-keys/create-api-keys#api-overview).

# Connexion à ServiceNow
<a name="connecting-to-data-servicenow"></a>

ServiceNow est une plateforme SaaS basée sur le cloud pour automatiser les flux de travail de gestion informatique. La ServiceNow plateforme s'intègre facilement à d'autres outils, permettant aux utilisateurs de gérer les projets, les équipes et les interactions avec les clients à l'aide de diverses applications et plugins. En tant qu' ServiceNow utilisateur, vous pouvez vous connecter AWS Glue à votre ServiceNow compte. Vous pouvez ensuite l'utiliser ServiceNow comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre ServiceNow des AWS services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour ServiceNow](servicenow-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](servicenow-configuring-iam-permissions.md)
+ [Configuration ServiceNow](servicenow-configuring.md)
+ [Configuration des ServiceNow connexions](servicenow-configuring-connections.md)
+ [Lecture à partir d' ServiceNow entités](servicenow-reading-from-entities.md)
+ [ServiceNow options de connexion](servicenow-connection-options.md)
+ [Limitations et remarques relatives au ServiceNow connecteur](servicenow-connector-limitations.md)

# AWS Glue support pour ServiceNow
<a name="servicenow-support"></a>

AWS Glue prend en charge ServiceNow les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de ServiceNow.

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

**Versions ServiceNow d'API prises en charge**  
Les versions ServiceNow d'API suivantes sont prises en charge :
+   v2

Pour connaître la prise en charge des entités par version, consultez la section Entités prises en charge pour Source.

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="servicenow-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration ServiceNow
<a name="servicenow-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis ServiceNow, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous avez un ServiceNow compte avec e-mail et mot de passe. Pour de plus amples informations, veuillez consulter [Création d'un ServiceNow compte](#servicenow-configuring-creating-servicenow-account).
+ Votre ServiceNow compte est activé pour accéder à l'API. Toute utilisation de l' ServiceNow API est disponible sans frais supplémentaires.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre ServiceNow compte.

## Création d'un ServiceNow compte
<a name="servicenow-configuring-creating-servicenow-account"></a>

Pour créer un ServiceNow compte :

1. Accédez à la page d’inscription sur servicenow.com, saisissez vos détails, puis cliquez sur **Continuer**.

1. Lorsque vous recevez un code de vérification à votre adresse enregistrée, saisissez-le et choisissez **Vérifier**.

1. Configurez l’authentification multifactorielle ou ignorez cette opération.

Votre compte est créé et ServiceNow affiche votre profil.

## Création d'une instance de ServiceNow développeur
<a name="servicenow-configuring-creating-servicenow-developer-instance"></a>

Demandez une instance de développeur après vous être connecté à ServiceNow.

1. Sur la [page de ServiceNow connexion](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), saisissez les informations d'identification de votre compte.

1. Choisissez le **programme ServiceNow pour développeurs**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/servicenow-dev-program.png)

1. Choisissez **Demander une instance** en haut à droite.

1. Saisissez vos responsabilités professionnelles. Indiquez que vous acceptez les conditions d’utilisation, puis choisissez **Terminer la configuration**.

1. Une fois l’instance créée, notez l’URL et les informations d’identification de votre instance.

## Récupération des informations d'identification BasicAuth
<a name="servicenow-configuring-basic-auth"></a>

Pour récupérer les informations d’identification d’authentification de base d’un compte gratuit :

1. Sur la [page de ServiceNow connexion](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), saisissez les informations d'identification de votre compte.

1. Sur la page d’accueil, choisissez la section Modifier le profil (coin supérieur droit), puis **Gérer le mot de passe de l’instance**.

1. Récupérez les informations d’identification de connexion telles que le nom d’utilisateur, le mot de passe et l’URL de l’instance.

**Note**  
Si la MFA est activée pour le compte, ajoutez le jeton MFA à la fin du mot de passe de l’utilisateur dans l’authentification de base : <username>:<password><MFA Token>

Pour plus d'informations, consultez la section [Création d'applications](https://docs.servicenow.com/bundle/xanadu-application-development/page/build/custom-application/concept/build-applications.html) dans la ServiceNow documentation.

## Création d'informations d'identification OAuth 2.0
<a name="servicenow-configuring-basic-auth"></a>

Pour utiliser OAuth2 .0 dans le ServiceNow connecteur, vous devez créer un client entrant) afin de générer l'ID client et le secret du client :

1. Sur la [page de ServiceNow connexion](https://signon.service-now.com/x_snc_sso_auth.do?pageId=username), saisissez les informations d'identification de votre compte.

1. Sur la page d’accueil, sélectionnez **Démarrer la génération**.

1. Sur la page App Engine Studio, recherchez **Registre d’applications**.

1. Choisissez **Nouveau** en haut à droite.

1. Choisissez l'option **Créer un point de terminaison d' OAuth API pour les clients externes**.

1. Apportez les modifications nécessaires à la OAuth configuration et choisissez **Mettre à jour**.

   Exemple d'URL de redirection : https://us-east-1.console.aws.amazon.com/gluestudio/ oauth

1. Sélectionnez l'application OAuth cliente nouvellement créée pour récupérer l'ID client et le secret du client.

1. Stockez l’ID client et le secret client en vue d’un traitement ultérieur.

Pour configurer OAuth dans un compte de développeur hors production :

1. Créez un profil d'authentification à l'aide de la rubrique [Créer un profil d'authentification](https://docs.servicenow.com/bundle/washingtondc-platform-security/page/integrate/authentication/task/create-an-authentication-profile.html) de la ServiceNow documentation.

1. **Dans le profil d'authentification pour OAuth, sélectionnez **Type** as OAuth et sélectionnez le client entrant créé ci-dessus pour définir l'OAuth entité.**

1. S'il existe plusieurs clients, vous devez créer plusieurs profils d'authentification pour définir l' OAuth entité requise dans le profil d'authentification.

1. Si elle n’est pas configurée, créez une stratégie d’accès à l’API REST pour donner accès à l’API TABLE. Consultez [Create REST API access policy](https://docs.servicenow.com/bundle/washingtondc-platform-security/page/integrate/authentication/task/create-api-access-policy.html).

# Configuration des ServiceNow connexions
<a name="servicenow-configuring-connections"></a>

Le type de subvention détermine le mode de AWS Glue communication avec ServiceNow lequel vous pouvez demander l'accès à vos données. Votre choix influe sur les exigences que vous devez respecter avant de créer la connexion. ServiceNow prend en charge uniquement le type de subvention AUTHORIZATION\$1CODE pour la version 2.0. OAuth 
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers l' ServiceNow endroit où il doit se connecter et autorise AWS Glue les autorisations demandées pour accéder à son ServiceNow instance.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée ServiceNow et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés ServiceNow vers pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter ServiceNow la documentation publique sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir [Configuration OAuth](https://docs.servicenow.com/bundle/vancouver-platform-security/page/administer/security/task/t_SettingUpOAuth.html).

Pour configurer une ServiceNow connexion :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’authentification de base, le secret doit contenir le secret du consommateur de l’application connectée avec `USERNAME` et `PASSWORD` comme clé.

   1. Pour le type d’autorisation de code d’authentification, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : Vous devez créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez ServiceNow.

   1. Indiquez l'INSTANCE\$1URL de l' ServiceNow instance à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez le **type d’authentification** que vous souhaitez utiliser pour cette connexion dans AWS Glue.

      1. Authentification de base : ce type d'authentification fonctionne bien pour les scénarios d'automatisation car il permet d'utiliser le nom d'utilisateur et le mot de passe dès le départ avec les autorisations d'un utilisateur particulier dans l' ServiceNow instance. AWS Glue est capable d'utiliser le nom d'utilisateur et le mot de passe pour s'authentifier. ServiceNow APIs Saisissez les entrées suivantes uniquement en cas d’authentification de base : `Username` et `Password`.

      1. OAuth2: entrez les entrées suivantes uniquement en cas de OAuth2 :`ClientId`,`ClientSecret`,`Authorization URL`,`Authorization Token URL`.

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d' ServiceNow entités
<a name="servicenow-reading-from-entities"></a>

**Prérequis**

Un objet ServiceNow Tables que vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme pa\$1bucket ou incident.

**Exemple :**

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2"
        "instanceUrl": "https://<instance-name>.service-now.com"
    }
)
```

**ServiceNow détails de l'entité et du champ** :

Pour les entités suivantes, ServiceNow fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique, afin que le support des opérateurs soit capturé au niveau du type de données pour chaque entité.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/servicenow-reading-from-entities.html)

**Note**  
Le type de données Struct est converti en type de données String dans la réponse du connecteur.

**Note**  
`DML_STATUS`est un attribut supplémentaire défini par l'utilisateur utilisé pour le suivi des CREATED/UPDATED enregistrements.

## Requêtes de partitionnement
<a name="servicenow-reading-partitioning-queries"></a>

**Partitionnement basé sur les champs** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/servicenow-reading-from-entities.html)
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d'horodatage Spark utilisé dans SPark les requêtes SQL.

  Exemples de valeurs valides :

  ```
  "2024-01-30T06:47:51.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Le tableau suivant décrit les détails de prise en charge dans les champs de partitionnement d’entités :

Exemple :

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2",
        "instanceUrl": "https://<instance-name>.service-now.com"
        "PARTITION_FIELD": "sys_created_on"
        "LOWER_BOUND": "2024-01-30T06:47:51.000Z"
        "UPPER_BOUND": "2024-06-30T06:47:51.000Z"
        "NUM_PARTITIONS": "10"
    }
```

**Partitionnement basé sur des enregistrements** :

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, la requête d’origine est divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.

Dans le partitionnement basé sur les enregistrements, le nombre total d'enregistrements présents est demandé par l' ServiceNow API, puis divisé par le nombre fourni. `NUM_PARTITIONS` Le nombre d’enregistrements qui en résulte est ensuite extrait simultanément par chaque sous-requête.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
servicenow_read = glueContext.create_dynamic_frame.from_options(
    connection_type="servicenow",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "pa_buckets",
        "API_VERSION": "v2",
        "instanceUrl": "https://<instance-name>.service-now.com"
        "NUM_PARTITIONS": "2"
    }
```

# ServiceNow options de connexion
<a name="servicenow-connection-options"></a>

Les options de connexion suivantes sont disponibles pour ServiceNow :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans ServiceNow.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. ServiceNow Version de l'API Rest que vous souhaitez utiliser. Par exemple : v1, v2, v3, v4.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. Par exemple : 2024-01-30T06:47:51.000Z.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. Par exemple : 2024-06-30T06:47:51.000Z.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. Par exemple, 10.
+ `INSTANCE_URL`(String) - (Obligatoire) Une URL d' ServiceNow instance valide au format https ://<instance-name>.service-now.com.
+ `PAGE_SIZE`(Entier) - Définit la taille de page pour interroger les enregistrements. La taille de page par défaut est de 1 000. Lorsqu'une taille de page est spécifiée, ServiceNow renvoie uniquement le nombre défini d'enregistrements par appel d'API, plutôt que l'ensemble de données complet. Le connecteur fournira toujours le nombre total d’enregistrements et gérera la pagination en utilisant la taille de page que vous avez indiquée. Si vous avez besoin d’une taille de page plus importante, vous pouvez choisir n’importe quelle valeur jusqu’à 10 000, qui est le maximum autorisé. Toute taille de page spécifiée supérieure à 10 000 sera ignorée. Le système utilisera plutôt la taille de page maximale autorisée. Vous pouvez spécifier la taille de page dans l’interface utilisateur AWS Glue Studio en ajoutant une option de connexion `PAGE_SIZE` avec la valeur souhaitée. Par exemple, 5 000.

# Limitations et remarques relatives au ServiceNow connecteur
<a name="servicenow-connector-limitations"></a>

Les limitations ou remarques suivantes concernent le ServiceNow connecteur :
+ Selon la [documentation SaaS](https://www.servicenow.com/docs/bundle/washingtondc-application-development/page/build/applications/reference/r_GlobalDefaultFields.html), `sys_created_on`, `sys_updated_on` et `sys_mod_count` sont des champs générés par le système. Le connecteur s'appuie sur le SaaS APIs pour fournir ces champs dans le corps de réponse.
  + Si SaaS ne génère ces champs pour aucune entité, le partitionnement basé sur des filtres ne peut pas être pris en charge.
+ Si le SaaS APIs ne s'affiche pas `sys_created_on` et que `sys_updated_on` les champs de la réponse `DML_STATUS` ne peuvent pas être calculés.
+ Améliorer les performances et l’efficacité de la lecture
  + Le ServiceNow connecteur trie désormais automatiquement les enregistrements par ordre croissant en fonction du `sys_id` champ (doit être présent dans les métadonnées) lorsqu'aucune clause ORDER BY n'est spécifiée par l'utilisateur. Dans ce cas, les enregistrements seront paginés selon la nouvelle pagination optimisée basée sur le jeu de clés.
  + Si la clause ORDER BY est spécifiée, la nouvelle optimisation ne sera pas utilisée et les enregistrements seront récupérés à l’aide de la méthode existante (pagination Order By définie par l’utilisateur et basée sur Offset-Limit).

# Connexion à Slack dans AWS Glue Studio
<a name="connecting-to-data-slack"></a>

 Slack est une application de communication d’entreprise qui permet aux utilisateurs d’envoyer des messages et des pièces jointes via différents canaux publics et privés. Si vous utilisez Slack, vous pouvez vous connecter AWS Glue à votre compte Slack. Vous pouvez ensuite utiliser Slack comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Slack et AWS des services ou d'autres applications compatibles. 

**Topics**
+ [AWS Glue support pour Slack](slack-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](slack-configuring-iam-permissions.md)
+ [Configuration de Slack](slack-configuring.md)
+ [Configuration de connexions Slack](slack-configuring-connections.md)
+ [Lecture à partir d’entités Slack](slack-reading-from-entities.md)
+ [Options de connexion Slack](slack-connection-options.md)
+ [Limitations](slack-limitations.md)
+ [Création d’un compte Slack et configuration de l’application client](slack-new-account-creation.md)

# AWS Glue support pour Slack
<a name="slack-support"></a>

AWS Glue prend en charge Slack comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Slack.

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

**Versions de l’API Slack prises en charge**  
 API Slack v2. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="slack-configuring-iam-permissions"></a>

 L’exemple de politique suivant décrit les autorisations IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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 et Amazon EC2. Amazon CloudWatch Logs 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. 

# Configuration de Slack
<a name="slack-configuring"></a>

Avant de pouvoir transférer des données AWS Glue vers ou depuis Slack, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="slack-configuring-min-requirements"></a>
+  Vous devez posséder un compte Slack. Pour de plus amples informations, veuillez consulter [Création d’un compte Slack et configuration de l’application client](slack-new-account-creation.md). 

 Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Slack. 

# Configuration de connexions Slack
<a name="slack-configuring-connections"></a>

 Slack prend en charge le type de `AUTHORIZATION_CODE` subvention pour OAuth 2. 

 Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Slack où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Slack. 

 Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Slack et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Slack pour se connecter et autoriser l'accès AWS Glue à leurs ressources. 

 Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès expire au bout d’une heure après sa création. Un nouveau jeton d’accès peut être récupéré à l’aide du jeton d’actualisation. 

 Pour plus d'informations sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez l'[API Slack](https://api.slack.com/quickstart). 

Pour configurer une connexion Slack :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Vous devez créer un secret pour la connexion dans AWS Glue. 

   1.  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Slack.

   1. Indiquez l’environnement Slack.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Slack
<a name="slack-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Slack à partir duquel vous souhaitez lire. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| conversations | Oui | Oui | Non | Oui | Oui | 

 **Exemple** 

```
slack_read = glueContext.create_dynamic_frame.from_options(
    connection_type="slack",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversations/C058W38R5J8"
    }
)
```

 **Détails des entités et des champs Slack** 


| Entité | Champ | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | --- | 
| conversations | attachments | List | NA | 
| conversations | bot\$1id | String | NA | 
| conversations | Blocs de | List | NA | 
| conversations | client\$1msg\$1id | String | NA | 
| conversations | is\$1starred | Booléen | NA | 
| conversations | last\$1read | String | NA | 
| conversations | latest\$1reply | String | NA | 
| conversations | reactions | List | NA | 
| conversations | replies | List | NA | 
| conversations | reply\$1count | Entier | NA | 
| conversations | reply\$1users | List | NA | 
| conversations | reply\$1users\$1count | Entier | NA | 
| conversations | subscribed | Booléen | NA | 
| conversations | subtype | String | NA | 
| conversations | text | String | NA | 
| conversations | team | String | NA | 
| conversations | thread\$1ts | String | NA | 
| conversations | ts | String | EQUAL\$1TO, BETWEEN, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL\$1TO, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL\$1TO | 
| conversations | type | String | NA | 
| conversations | user | String | NA | 
| conversations | inviter | String | NA | 
| conversations | racine | Struct | NA | 
| conversations | is\$1locked | Booléen | NA | 
| conversations | files | List | NA | 
| conversations | salle | Struct | NA | 
| conversations | charger | Booléen | NA | 
| conversations | display\$1as\$1bot | Booléen | NA | 
| conversations | channel | String | NA | 
| conversations | no\$1notifications | Booléen | NA | 
| conversations | permalink | String | NA | 
| conversations | pinned\$1to | List | NA | 
| conversations | pinned\$1info | Struct | NA | 
| conversations | edited | Struct | NA | 
| conversations | app\$1id | String | NA | 
| conversations | bot\$1profile | Struct | NA | 
| conversations | metadata | Struct | NA | 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemple de valeur valide : `"2024-07-01T00:00:00.000Z"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau ci-dessous. 


| Nom de l'entité | Champ de partitionnement | Type de données | 
| --- | --- | --- | 
| conversations | ts | String | 

 **Exemple** 

```
slack_read = glueContext.create_dynamic_frame.from_options(
    connection_type="slack",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversations/C058W38R5J8",
        "PARTITION_FIELD": "ts"
        "LOWER_BOUND": "2022-12-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-09-23T15:00:00.000Z"
        "NUM_PARTITIONS": "2"
    }
)
```

# Options de connexion Slack
<a name="slack-connection-options"></a>

Les options de connexion pour Slack sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Nom de l’entité prise en charge. Exemple: `conversations/C058W38R5J8`. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Champs que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Limitations
<a name="slack-limitations"></a>

Les restrictions du connecteur Slack sont les suivantes :
+  Le partitionnement basé sur les enregistrements n’est pas pris en charge, car le connecteur ne fournit aucun moyen de récupérer le nombre total d’enregistrements (messages) disponibles dans une conversation donnée. 

# Création d’un compte Slack et configuration de l’application client
<a name="slack-new-account-creation"></a>

**Création d’un compte Slack**

1. Ouvrez la [page d’accueil de Slack](https://slack.com/intl/en-in/) pour créer un compte. 

1. Choisissez **S’INSCRIRE AVEC UNE ADRESSE E-MAIL**. Saisissez votre adresse e-mail, puis choisissez **Continuer**.

1. Saisissez le code à six caractères envoyé à votre adresse e-mail. Vous serez alors redirigé afin de créer un espace de travail ou rejoindre un espace de travail existant.

1. Choisissez **Créer un espace de travail** pour créer un espace de travail. Vous serez alors redirigé pour répondre à quelques questions dans le cadre du processus de configuration.
   + Nom de l’entreprise
   + Votre nom
   + Pour ajouter des collègues par e-mail
   + Sur quoi travaille votre équipe ? (Ce sera le nom du canal)

1. Remplissez les champs de saisie correspondant à ces questions et poursuivez. Votre compte est maintenant prêt à être utilisé.



**Création d’une application pour développeurs Slack**

1. Connectez-vous à votre compte Slack et accédez à votre espace de travail Slack.

1. Dans le menu de l’espace de travail, sélectionnez **Outils et paramètres**, puis sélectionnez **Gérer les applications**.

1. Dans le menu de la liste des applications Slack, sélectionnez **Créer**.

1. Sur la page **Vos applications**, sélectionnez **Créer une application**.

1. Sur la page **Créer une application**, sélectionnez **À partir de zéro**.

1. Dans la boîte de dialogue **Nommer l’application et choisir l’espace de travail** qui s’ouvre, ajoutez un nom d’application et **choisissez un espace de travail pour y déployer votre application**. Sélectionnez ensuite **Créer une application**.

1. Notez votre ID et votre secret client affichés dans les informations d’identification de l’application.

1. Dans la barre latérale OAuth & Permissions, accédez à Étendue et choisissez **Ajouter une OAuth ** portée. Vous pouvez ajouter la redirection URLs vers votre application pour la configuration afin de générer automatiquement le bouton « Ajouter à Slack » ou de distribuer votre application. Faites défiler la page jusqu'à la URLs section Redirection, choisissez **Ajouter une nouvelle URL de redirection** et enregistrez. 

1. Accédez ensuite à la section OAuth Tokens pour votre espace de travail, puis choisissez **Installer dans l'espace de travail**.

1. Dans la boîte de dialogue qui s’ouvre pour vous informer que l’application que vous avez créée demande l’autorisation d’accéder à l’espace de travail Slack auquel vous souhaitez la connecter, sélectionnez **Autoriser**.

1. Une fois l'opération terminée, la console affichera un écran OAuth Tokens pour votre espace de travail.

1. À partir de l'écran OAuth Jetons pour votre espace de travail, copiez et enregistrez le OAuth jeton que vous utiliserez pour vous connecter à AWS Glue

1. Ensuite, vous allez récupérer votre identifiant d’équipe Slack. Dans le menu de l’espace de travail Slack, sélectionnez **Outils et paramètres**, puis sélectionnez **Gérer les applications**. Vous trouverez votre identifiant d’équipe dans l’URL de la page qui s’ouvre.

1. Pour distribuer publiquement votre application, vous pouvez l’activer en accédant au bouton **Gérer la distribution** dans la barre latérale. Faites défiler la page jusqu’à la section Partager votre application avec d’autres espaces de travail et choisissez **Supprimer les informations codées en dur**. Donnez votre consentement et choisissez **Distribution publique active**. 

1. Votre application est désormais distribuée au public. Pour accéder à l'entité APIs, l'application doit être ajoutée à chaque canal de l'espace de travail à partir duquel l'utilisateur souhaite accéder.

1. Connectez-vous à votre compte Slack et ouvrez l’espace de travail dont vous souhaitez accéder au canal.

1. Dans l’espace de travail, ouvrez le canal auquel l’application souhaite accéder et choisissez le titre du canal. Sélectionnez l’onglet **Intégrations** dans la fenêtre contextuelle et ajoutez l’application. De cette façon, l’application est intégrée au canal pour avoir accès à son API.

   L'ID client OAuth 2.0 doit comporter une ou plusieurs redirections autorisées URLs. URLs Les redirections ont le format suivant :
**Note**  
 Les redirections Appflow URLs sont sujettes à modification. Les redirections de publication URLs pour AWS Glue la plateforme sont disponibles. L'ID client et le secret client proviennent des paramètres de votre identifiant client OAuth 2.0.     
<a name="slack-redirect-url-detail"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/slack-new-account-creation.html)

# Connexion à Smartsheet
<a name="connecting-to-smartsheet"></a>

Smartsheet est un produit SaaS de gestion du travail et de collaboration. Smartsheet permet essentiellement aux utilisateurs d’utiliser des objets de type feuille de calcul pour créer, stocker et utiliser des données métier.

**Topics**
+ [AWS Glue support pour Smartsheet](smartsheet-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](smartsheet-configuring-iam-permissions.md)
+ [Configuration de Smartsheet](smartsheet-configuring.md)
+ [Configuration de connexions Smartsheet](smartsheet-configuring-connections.md)
+ [Lecture à partir d’entités Smartsheet](smartsheet-reading-from-entities.md)
+ [Options de connexion Smartsheet](smartsheet-connection-options.md)
+ [Création d’un compte Smartsheet](smartsheet-create-account.md)
+ [Limitations](smartsheet-connector-limitations.md)

# AWS Glue support pour Smartsheet
<a name="smartsheet-support"></a>

AWS Glue prend en charge Smartsheet comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger les données de Smartsheet.

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

**Versions de l’API Smartsheet prises en charge**  
 v2.0 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="smartsheet-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+  [ 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. 

# Configuration de Smartsheet
<a name="smartsheet-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Smartsheet, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="smartsheet-configuring-min-requirements"></a>
+ Vous disposez d’un compte Smartsheet avec adresse e-mail et mot de passe. Pour plus d’informations sur la création d’un compte, consultez [Creating a Smartsheet account](smartsheet-create-account.md). 
+ Votre compte Smartsheet dispose d’un accès à l’API avec une licence valide.
+ Votre compte Smartsheet propose un forfait **Tarif Pro** pour l’entité `Sheets` et un forfait Tarif entreprise avec le module complémentaire Rapports d’événements pour les entités `Events`.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Smartsheet. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Smartsheet.

# Configuration de connexions Smartsheet
<a name="smartsheet-configuring-connections"></a>

 Smartsheet prend en charge le type de `AUTHORIZATION_CODE` subvention pour OAuth2. 

Ce type d’autorisation est considéré comme `OAuth` tridimensionnel, car il repose sur la redirection des utilisateurs vers le serveur d’autorisation tiers pour authentifier l’utilisateur. Les utilisateurs peuvent choisir de créer leur propre application connectée dans Smartsheet et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Smartsheet pour se connecter et autoriser l'accès AWS Glue à leurs ressources. 

Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 

[Pour consulter la documentation publique de Smartsheet sur la création d'une application connectée pour le flux AUTHORIZATION\$1CODE OAuth , consultez Smartsheet. APIs](https://smartsheet.redoc.ly/#section/OAuth-Walkthrough) 

Pour configurer une connexion Smartsheet :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes : 

   Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 
**Note**  
Il est indispensable de créer un secret par connexion dans AWS Glue.

1. Dans le AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Smartsheet.

   1. Indiquez l’`instanceUrl` de Smartsheet à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle IAM pour lequel AWS Glue vous pouvez assumer et qui dispose des autorisations nécessaires pour effectuer les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Smartsheet
<a name="smartsheet-reading-from-entities"></a>

 **Conditions préalables** 

Un objet `Smartsheet` à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| List Sheet | Oui | Oui | Non | Oui | Non | 
| Row Metadata | Oui | Oui | Non | Oui | Non | 
| Sheet Metadata | Non | Non | Non | Oui | Non | 
| Sheet Data | Oui | Oui | Oui | Oui | Non | 
| Événement | Oui | Oui | Non | Oui | Non | 

 **Exemple** 

```
Smartsheet_read = glueContext.create_dynamic_frame.from_options(
    connection_type="smartsheet",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "list-sheets",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://api.smartsheet.com"
    })
```

 **Détails des entités et des champs Smartsheet** 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/smartsheet-reading-from-entities.html)

**Entités avec métadonnées dynamiques :**

Pour l’entité suivante, Smartsheet fournit un point de terminaison permettant de récupérer les métadonnées de manière dynamique, afin que la prise en charge des opérateurs soit capturée au niveau du type de données.


| Entité |  Type de données  | Opérateurs pris en charge | 
| --- | --- | --- | 
|  Sheet Data  |  String  | NA | 
| Sheet Data |  Long  | "=" | 
| Sheet Data | Entier | NA | 
| Sheet Data | DateTime | > | 

 **Exemple** 

```
Smartsheet_read = glueContext.create_dynamic_frame.from_options(
    connection_type="smartsheet",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "list-sheets",
        "API_VERSION": "2.0",
        "INSTANCE_URL": "https://api.smartsheet.com"
    }
```

# Options de connexion Smartsheet
<a name="smartsheet-connection-options"></a>

Les options de connexion pour Smartsheet sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Smartsheet. 
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Smartsheet que vous souhaitez utiliser. Par exemple : v2.0. 
+ `INSTANCE_URL`(Chaîne) – (Obligatoire) Utilisé pour la lecture. URL d’instance Smartsheet.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 

# Création d’un compte Smartsheet
<a name="smartsheet-create-account"></a>

1. Ouvrez un compte Smartsheet en accédant à la [page d’inscription à Smartsheet.](https://app.smartsheet.com/home) 

1. Choisissez **Créer un compte** pour créer un compte ou connectez-vous à l’aide de votre compte Google, Microsoft ou Apple enregistré.

1.   Saisissez votre adresse e-mail professionnelle lorsque vous y êtes invité.   

1.   Choisissez **Continuer** et, si nécessaire, vérifiez votre identité.  

1. Ouvrez l’e-mail de confirmation envoyé par Smartsheet et cliquez sur le lien de confirmation pour vérifier votre compte. 

   Vous serez abonné au forfait d’essai par défaut. 

1. Dans le coin inférieur gauche, cliquez sur l’icône du **compte**, puis sur **Ajouter des licences/Mettre à niveau** pour améliorer votre plan tarifaire.
**Note**  
Cette opération est nécessaire pour accéder à **Event Reporting**, qui est un module complémentaire du forfait **Entreprise**.

1. Sous le forfait **Entreprise**, choisissez **Contactez-nous** pour demander une mise à niveau de compte auprès de l’équipe d’assistance.

1. Dans le formulaire de demande d’assistance, fournissez les informations requises et vos exigences pour mettre le forfait à niveau.

   Cette opération permet de finaliser la mise à niveau vers le forfait **Entreprise**.

**Création d’informations d’identification `OAuth2.0`**

1. Après avoir mis à niveau le plan tarifaire de votre compte pour accéder aux **outils pour développeurs**, accédez à [Développeurs Smartsheet](https://developers.smartsheet.com/). 

   Vous recevrez un e-mail d’activation.

1. Ouvrez l’e-mail d’activation envoyé par Smartsheet et cliquez sur le lien d’activation pour activer les outils de développement sur votre compte. 

   L’outil Développeurs vous permet de créer l’application.

1. Ouvrez la page d’accueil de votre compte Smartsheet et sélectionnez **Compte** pour vérifier l’accès.

1. Choisissez **Outils pour développeurs** dans la liste des services, puis saisissez les détails du **profil du développeur**.

1. Choisissez **Créer une nouvelle application**.

1. Saisissez les informations suivantes dans le formulaire d’inscription à l’application :
   + **Nom** : nom de l’application.
   + **Description** : description de l’application.
   + **URL** : URL qui vous permet de lancer votre application ou URL de la page de destination.
   + **Contact/support** : coordonnées de l’équipe d’assistance.
   + **URL de redirection** : URL (également appelée URL de rappel) de votre application qui recevra les informations d'identification [OAuth 2.0](https://.console.aws.amazon.com/appflow/oauth). 

1. Choisissez **Enregistrer**.

   Smartsheet attribue un identifiant client et un secret client à votre application. Enregistrez ces valeurs pour les étapes suivantes. Vous pourrez également les consulter à nouveau ultérieurement dans la section **Outils pour développeurs**.

# Limitations
<a name="smartsheet-connector-limitations"></a>

Smartsheet ne prend pas en charge le partitionnement basé sur les champs ou les enregistrements.

# Connexion à Snapchat Ads dans AWS Glue Studio
<a name="connecting-to-data-snapchat-ads"></a>

 Snapchat est une application et un service de messagerie instantanée multimédia développés par Snap Inc., à l’origine Snapchat Inc. L’une des principales caractéristiques de Snapchat est que les photos et les messages ne sont généralement disponibles que pendant une courte période avant de devenir inaccessibles à leurs destinataires. Le marketing Snapchat désigne des publications pour lesquelles les entreprises peuvent payer pour qu’elles soient diffusées aux utilisateurs de Snapchat. 

**Topics**
+ [AWS Glue support pour Snapchat Ads](snapchat-ads-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](snapchat-ads-configuring-iam-permissions.md)
+ [Configuration de Snapchat Ads](snapchat-ads-configuring.md)
+ [Configuration des connexions Snapchat Ads](snapchat-ads-configuring-connections.md)
+ [Lecture depuis des entités Snapchat Ads](snapchat-ads-reading-from-entities.md)
+ [Options de connexion Snapchat Ads](snapchat-ads-connection-options.md)
+ [Création d’un compte Snapchat Ad et configuration de l’application client](connecting-to-data-snapchat-ads-new-account.md)
+ [Création d’une application dans votre compte Snapchat Ads](connecting-to-data-snapchat-ads-managed-client-application.md)

# AWS Glue support pour Snapchat Ads
<a name="snapchat-ads-support"></a>

AWS Glue prend en charge les publicités Snapchat comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Snapchat Ads.

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

**Versions d’API Snapchat Ads prises en charge**  
 v1. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="snapchat-ads-configuring-iam-permissions"></a>

 L'exemple de politique suivant décrit les AWS autorisations requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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 et Amazon EC2. Amazon CloudWatch Logs 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. 

# Configuration de Snapchat Ads
<a name="snapchat-ads-configuring"></a>

Avant de pouvoir AWS Glue effectuer un transfert depuis Snapchat Ads, vous devez remplir les conditions suivantes :

## Configuration requise
<a name="snapchat-ads-configuring-min-requirements"></a>
+  Vous disposez d’un compte Snapchat Ads. Pour plus d’informations sur la création d’un compte, consultez [Création d’un compte Snapchat Ad et configuration de l’application client](connecting-to-data-snapchat-ads-new-account.md). 
+  Vous avez créé une OAuth2 application dans votre compte Snapchat Ads. Cette intégration fournit les informations d’identification qu’utilise AWS Glue pour accéder à vos données en toute sécurité au moment de passer des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Création d’une application dans votre compte Snapchat Ads](connecting-to-data-snapchat-ads-managed-client-application.md). 

 Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Snapchat Ads. Dans Snapchat Ads, une application connectée est un framework qui autorise des applications externes, par exemple AWS Glue, à accéder à vos données Snapchat Ads. 

# Configuration des connexions Snapchat Ads
<a name="snapchat-ads-configuring-connections"></a>

 Snapchat Ads ne prend en charge que le type d’autorisation `AUTHORIZATION_CODE`. 

 Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée qu'il AWS Glue possède (application cliente AWS Glue gérée) sur laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'URL de son instance Snapchat Ads. La AWS Glue console redirigera l'utilisateur vers Snapchat Ads où il devra se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Snapchat Ads. 

 Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Snapchat Ads et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Snapchat Ads pour se connecter et autoriser AWS Glue l'accès à leurs ressources. 

 Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès expire au bout d’une heure après sa création. Un nouveau jeton d’accès peut être récupéré à l’aide du jeton d’actualisation. 

 Pour plus d'informations sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez la section [API des annonces](https://marketingapi.snapchat.com/docs/#authentication). 

Pour configurer une connexion Snapchat Ads :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Snapchat Ads.

   1. Indiquez l’environnement Snapchat Ads.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture depuis des entités Snapchat Ads
<a name="snapchat-ads-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Snapchat Ads à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Organisation | Non | Non | Non | Oui | Non | 
| Ad Account | Non | Non | Non | Oui | Non | 
| Creative | Non | Non | Non | Oui | Non | 
| Multimédia | Non | Non | Non | Oui | Non | 
| Campaign | Oui | Non | Non | Oui | Non | 
| Ad Under Ad Account | Oui | Non | Non | Oui | Non | 
| Ad Under Campaign | Non | Non | Non | Oui | Non | 
| Ad Squad | Oui | Non | Non | Oui | Non | 
| Segment | Non | Non | Non | Oui | Non | 

 **Exemple** 

```
snapchatads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="snapchatAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v1"
    }
)
```

 **Détails des entités et des champs Snapchat Ads** 

 Snapchat Ads charge dynamiquement les champs disponibles sous l’entité sélectionnée. Les opérateurs de filtrage suivants sont pris en charge en fonction du type de données du champ. 


| Type de données de champs | Opérateurs de filtre pris en charge | 
| --- | --- | 
| Booléen | = | 

 **Requêtes de partitionnement** 
+  Partitionnement basé sur les champs : non pris en charge. 
+  Partitionnement basé sur les enregistrements : non pris en charge. 

# Options de connexion Snapchat Ads
<a name="snapchat-ads-connection-options"></a>

Les options de connexion pour Snapchat Ads sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de l’entité Snapchat Ads. Exemple: ` campaign `. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Snapchat Ads que vous souhaitez utiliser. La valeur sera v1, car Snapchat Ads ne prend actuellement en charge que la version 1. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Liste de colonnes séparées par des virgules que vous souhaitez sélectionner pour l’entité sélectionnée. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 

# Création d’un compte Snapchat Ad et configuration de l’application client
<a name="connecting-to-data-snapchat-ads-new-account"></a>

**Topics**
+ [Inscription à Snapchat Ads](#snapchat-ads-sign-up)
+ [Étapes pour créer un compte Snapchat Ad](#snapchat-ads-create-ad-account)

## Inscription à Snapchat Ads
<a name="snapchat-ads-sign-up"></a>

**Pour s’inscrire à Snapchat Ads :**

1.  Accédez à [Snapchat Ads Manager](https://ads.snapchat.com/). Choisissez **S’inscrire** à côté de **Nouveau sur Snapchat ?**. 

1.  Sur l’écran **Créer un compte**, suivez les instructions pour saisir le nom de votre entreprise, votre e-mail, votre mot de passe, etc. Choisissez **Suivant**. 

1.  Sur l’écran **Créer votre profil**, entrez des valeurs pour le nom d’utilisateur, le site Web (facultatif), puis choisissez **Créer un compte**. Cela vous donnera la possibilité d’ajouter une photo de profil et une biographie sur l’écran **Modifier votre profil**. Choisissez **Confirmer**. 

1.  Sur l’écran **Informations de l’entreprise**, remplissez les champs obligatoires tels que le pays, la devise, le numéro de téléphone, le code GSTIN, etc., et terminez le processus de création du compte en choisissant **Suivant**. 

## Étapes pour créer un compte Snapchat Ad
<a name="snapchat-ads-create-ad-account"></a>

**Pour créer un compte Snapchat Ad :**

1.  Connectez-vous à **Ads Manager**. Cliquez ensuite sur le menu de navigation dans le coin supérieur et sélectionnez **Comptes publicitaires**. 

1.  Choisissez **\$1 Nouveau compte publicitaire**. Saisissez les informations de votre annonceur : 
   +  Indiquez si vous êtes une agence qui achète des publicités pour le compte d’un annonceur. Si vous sélectionnez « Oui », votre annonce peut être rejetée si elle utilise des paramètres de ciblage tels que le ciblage par âge, sexe ou code postal. Le ciblage relatif à l’âge minimum peut être appliqué jusqu’à 21 ans. 
   +  Indiquez si votre compte publicitaire diffusera ou non des annonces de logement, de crédit ou d’emploi. Si vous sélectionnez « Oui », votre annonce peut être rejetée si elle utilise des paramètres de ciblage tels que le ciblage par âge, sexe ou code postal. Le ciblage relatif à l’âge minimum peut être appliqué jusqu’à 21 ans. 
   +  Indiquez si vous souhaitez utiliser le compte publicitaire pour des annonces politiques. Si vous diffusez une annonce politique, indiquez l’organisation politique ou le groupe d’intérêt qui finance la publicité. Si vous ne saisissez pas correctement l’organisation politique, vos annonces risquent d’être rejetées. Vous devrez également remplir le « formulaire d’évaluation des annonces politiques » obligatoire avant de soumettre des annonces. 

1.  Choisissez **Détails du compte** et renseignez les informations de votre compte publicitaire :     
<a name="snapchat-ads-account-details"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/connecting-to-data-snapchat-ads-new-account.html)

1.  Choisissez **Créer un compte**. Votre compte publicitaire sera créé et vous le trouverez dans la section Comptes publicitaires d’Ads Manager. Pour commencer à lancer des annonces, vous devez saisir un mode de paiement. Vous pouvez également ajouter des membres à votre compte publicitaire. 

1.  Choisissez d’utiliser un paiement existant ou d’en créer un. Choisissez ensuite **Enregistrer le mode de paiement**. 

1.  Sélectionnez les [membres que vous avez invités](https://businesshelp.snapchat.com/s/article/manage-members?language=en_US) à rejoindre votre entreprise pour les ajouter au compte publicitaire. Pour plus d’informations sur les rôles et les autorisations qui peuvent être attribués, consultez la section [Rôles et autorisations de l’organisation](https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US). Les membres ajoutés pourront ensuite se connecter à Ads Manager et accéder à ce compte publicitaire. Lorsque vous avez terminé, enregistrez vos membres. 

 Pour plus d'informations sur les comptes publicitaires, consultez [https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US](https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US) https://businesshelp.snapchat.com/s/ article/roles-permissions ? language=fr\$1US 

# Création d’une application dans votre compte Snapchat Ads
<a name="connecting-to-data-snapchat-ads-managed-client-application"></a>

 Pour activer l’accès à l’API marketing de Snapchat, assurez-vous d’avoir configuré un compte professionnel. Ensuite, procédez de la façon suivante. 

1.  Connectez-vous à Ads Manager. Choisissez ensuite le menu dans le coin supérieur gauche et sélectionnez **Tableau de bord de l’entreprise**, puis sélectionnez **Informations sur l’entreprise**. 

1.  Choisissez **\$1 OAuth App**. 

1.  Entrez le nom de votre application et ajoutez l’URL suivante en tant qu’URI de redirection Snap `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth`. Par exemple, si vous utilisez la région us-west-1, l’URL serait `https://us-west-1.console.aws.amazon.com/gluestudio/oauth) and choose Create OAuth App`. Choisissez **Create OAuth App**. 

1.  Les informations d’identification de votre application (ID et secret client) seront affichées. Enregistrez-les, car vous en aurez besoin pour créer une connexion. 

# Connexion à Snowflake dans AWS Glue Studio
<a name="connecting-to-data-snowflake"></a>

**Note**  
 Vous pouvez utiliser AWS Glue pour Spark pour lire et écrire dans des tables dans Snowflake dans AWS Glue 4.0 et versions ultérieures. Pour configurer une connexion Snowflake avec des tâches AWS Glue par programmation, consultez [Connexions Redshift](aws-glue-programming-etl-connect-redshift-home.md). 

 AWS Glue fournit une prise en charge intégrée pour Snowflake. AWS Glue Studio fournit une interface visuelle pour se connecter à Snowflake, créer des tâches d'intégration de données et les exécuter sur l'exécution Spark AWS Glue Studio sans serveur. 

 AWS Glue Studio crée une connexion unifiée pour Snowflake. Pour de plus amples informations, veuillez consulter [Considérations](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Création d’une connexion Snowflake](creating-snowflake-connection.md)
+ [Création d'un nœud source Snowflake](creating-snowflake-source-node.md)
+ [Création d'un nœud cible Snowflake](creating-snowflake-target-node.md)
+ [Options avancées](#creating-snowflake-connection-advanced-options)

# Création d’une connexion Snowflake
<a name="creating-snowflake-connection"></a>

**Note**  
 Les connexions unifiées (connexion v2) normalisent toutes les connexions pour utiliser les clés `USERNAME` et `PASSWORD` pour les informations d’identification d’authentification de base. Vous pouvez toujours créer une connexion v1 via l’API avec des secrets contenant `sfUser`, `sfPassword`. 

 Lorsque vous ajoutez une **source de données - nœud Snowflake**AWS Glue Studio, vous pouvez choisir une connexion AWS Glue Snowflake existante ou créer une nouvelle connexion. Vous devez choisir un type de connexion `SNOWFLAKE` et non un type de connexion `JDBC` configuré pour se connecter à Snowflake. Suivez la procédure suivante pour créer une connexion AWS Glue Snowflake :

**Pour créer une connexion Snowflake**

1. Dans Snowflake, générez un utilisateur *snowflakeUser* et un mot de passe. *snowflakePassword* 

1. Déterminez avec quel entrepôt Snowflake cet utilisateur va interagir,. *snowflakeWarehouse* Vous pouvez le `DEFAULT_WAREHOUSE` définir comme forme *snowflakeUser* dans Snowflake ou vous en souvenir pour l'étape suivante.

1. Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification Snowflake. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html#create_secret_cli) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour *snowflakeUser* avec la clé. `sfUser`
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour *snowflakePassword* avec la clé. `sfPassword`
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour *snowflakeWarehouse* avec la clé. `sfWarehouse` Cela n’est pas nécessaire si une paire par défaut est définie dans Snowflake. 

1. Dans le catalogue de AWS Glue données, créez une connexion en suivant les étapes décrites dans [Ajouter une AWS Glue connexion](https://docs.aws.amazon.com//glue/latest/dg/console-connections.html). Après avoir créé la connexion, conservez le nom de la connexion pour l'étape suivante. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez Snowflake.
   + Lorsque vous sélectionnez **URL Snowflake**, indiquez le nome d’hôte de votre instance Snowflake. L’URL utilisera un nom d’hôte sous la forme `account_identifier.snowflakecomputing.com`.
   + Lorsque vous sélectionnez un **AWS secret**, fournissez*secretName*.

# Création d'un nœud source Snowflake
<a name="creating-snowflake-source-node"></a>

## Autorisations nécessaires
<a name="creating-snowflake-source-node-permissions"></a>

 AWS Glue Studio les tâches utilisant des sources de données Snowflake nécessitent des autorisations supplémentaires. Pour plus d'informations sur la façon d'ajouter des autorisations aux tâches ETL, consultez [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 `SNOWFLAKE` AWS Glue les connexions utilisent un AWS Secrets Manager secret pour fournir des informations d'identification. Vos rôles de prévisualisation des tâches et des données AWS Glue Studio doivent être autorisés à lire ce secret.

## Ajout d'une source de données Snowflake
<a name="creating-snowflake-source-node-add"></a>

**Prérequis :**
+ Un AWS Secrets Manager secret pour vos identifiants Snowflake
+ Une connexion au catalogue de AWS Glue données de type Snowflake

**Pour ajouter un nœud **Source de données – Snowflake** :**

1.  Choisissez la connexion pour votre source de données Snowflake. Cela suppose que la connexion existe déjà et que vous pouvez la sélectionner parmi les connexions existantes. Si vous devez créer une connexion, choisissez **Créer une connexion Snowflake**. Pour en savoir plus, consultez [ Overview of using connectors and connections ](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. Les informations relatives à la connexion sont visibles, notamment l'URL, les groupes de sécurité, le sous-réseau, la zone de disponibilité, la description et les horodatages de création (UTC) et de dernière mise à jour (UTC). 

1.  Choisissez une option de source Snowflake : 
   +  **Choisir une seule table** : il s'agit de la table qui contient les données auxquelles vous souhaitez accéder à partir d'une seule table Snowflake. 
   +  **Saisir une requête personnalisée** : vous permet d'accéder à un jeu de données à partir de plusieurs tables Snowflake en fonction de votre requête personnalisée. 

1.  Si vous avez choisi une seule table, saisissez le nom d'un schéma Snowflake. 

    Vous pouvez également choisir **Saisir une requête personnalisée**. Choisissez cette option pour accéder à un jeu de données personnalisé à partir de plusieurs tables Snowflake. Lorsque vous choisissez cette option, saisissez la requête Snowflake. 

1.  Dans les options **Performance et sécurité** (facultatif), 
   +  **Activer le pushdown de requêtes** : choisissez cette option si vous souhaitez décharger le travail vers l'instance Snowflake. 

1.  Dans **Propriétés Snowflake personnalisées** (facultatif), saisissez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible Snowflake
<a name="creating-snowflake-target-node"></a>

## Autorisations nécessaires
<a name="creating-snowflake-target-node-permissions"></a>

 AWS Glue Studio les tâches utilisant des sources de données Snowflake nécessitent des autorisations supplémentaires. Pour plus d'informations sur la façon d'ajouter des autorisations aux tâches ETL, consultez [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job). 

 `SNOWFLAKE` AWS Glue les connexions utilisent un AWS Secrets Manager secret pour fournir des informations d'identification. Vos rôles de prévisualisation des tâches et des données AWS Glue Studio doivent être autorisés à lire ce secret.

## Ajout d'une cible de données Snowflake
<a name="creating-snowflake-target-node-add"></a>

**Pour créer un nœud cible Snowflake :**

1.  Choisissez une table Snowflake existante comme cible ou saisissez un nouveau nom de table. 

1.  Lorsque vous utilisez le nœud cible **Cible de données – Snowflake**, vous pouvez choisir l'une des options suivantes : 
   +  **APPREND** : si une table existe déjà, insérez toutes les nouvelles données dans la table sous forme d'insertion. Si la table n'existe pas, créez-la, puis insérez toutes les nouvelles données. 
   +  **MERGE** : AWS Glue met à jour ou ajoute des données à votre table cible en fonction des conditions que vous spécifiez. 

      Choisissez parmi les options : 
     + **Choisir des clés et des actions simples** : choisissez les colonnes à utiliser comme clés de correspondance entre les données source et votre jeu de données cible. 

       Spécifiez les options suivantes lorsqu'elles correspondent :
       + Mettez à jour l'enregistrement dans votre jeu de données cible avec les données de la source.
       + Supprimez l'enregistrement dans votre jeu de données cible.

       Spécifiez les options suivantes lorsqu'elles ne correspondent pas :
       + Insérez les données source en tant que nouvelle ligne dans votre jeu de données cible.
       + Ne rien faire.
     + **Saisir une instruction MERGE personnalisée** : vous pouvez ensuite choisir **Valider l'instruction de fusion** pour vérifier si l'instruction est valide ou non.
   +  **TRUNCATE** : si une table existe déjà, tronquez les données de la table en effaçant d'abord le contenu de la table cible. Si la troncature est réussie, insérez toutes les données. Si la table n'existe pas, créez-la, puis insérez toutes les nouvelles données. Si la troncature échoue, l'opération échouera. 
   +  **DROP** : si une table existe déjà, supprimez les métadonnées et les données de la table. Si la suppression est réussie, insérez toutes les données. Si la table n'existe pas, créez-la, puis insérez toutes les nouvelles données. Si la suppression échoue, l'opération échouera. 

## Options avancées
<a name="creating-snowflake-connection-advanced-options"></a>

Consultez la section [Connexions Snowflake](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-snowflake-home.html) dans le guide du AWS Glue développeur. 

# Connexion à Stripe dans AWS Glue Studio
<a name="connecting-to-data-stripe"></a>

 Stripe est une plateforme de traitement des paiements en ligne et de traitement des cartes de crédit destinée aux entreprises. La plateforme Stripe permet aux entreprises d’accepter des paiements en ligne, de créer des abonnements (facturation récurrente) pour leur commerce électronique et de configurer un compte bancaire pour recevoir les paiements. Stripe prend également en charge les paiements multipartites, dans lesquels il permet aux entreprises de configurer leur site de vente et de collecter les paiements, puis d’effectuer des paiements aux vendeurs ou aux fournisseurs de services via un compte « connecté ». 

**Topics**
+ [AWS Glue support pour Stripe](stripe-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](stripe-configuring-iam-permissions.md)
+ [Configuration de Stripe](stripe-configuring.md)
+ [Configuration de connexions Stripe](stripe-configuring-connections.md)
+ [Lecture à partir d’entités Stripe](stripe-reading-from-entities.md)
+ [Options de connexion Stripe](stripe-connection-options.md)
+ [Limitations](stripe-limitations.md)
+ [Création d’un compte Stripe et configuration de l’application client](stripe-new-account-creation.md)

# AWS Glue support pour Stripe
<a name="stripe-support"></a>

AWS Glue prend en charge Stripe comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Stripe.

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

**Versions de l’API Slack prises en charge**  
 v1. 

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="stripe-configuring-iam-permissions"></a>

 L’exemple de politique suivant décrit les autorisations IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants : 

------
#### [ JSON ]

****  

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

------

Vous pouvez également utiliser les politiques IAM gérées 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 et Amazon EC2. Amazon CloudWatch Logs 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. 

# Configuration de Stripe
<a name="stripe-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Stripe, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="stripe-configuring-min-requirements"></a>
+  Vous disposez d’un compte Stripe avec e-mail et mot de passe. Pour de plus amples informations, veuillez consulter [Création d’un compte Stripe et configuration de l’application client](stripe-new-account-creation.md). 
+  Votre compte Stripe est activé pour accéder à l’API. Toute utilisation de l’API Stripe est disponible sans frais supplémentaires. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Stripe. 

# Configuration de connexions Stripe
<a name="stripe-configuring-connections"></a>

 Stripe prend en charge l’authentification personnalisée. Pour plus d’informations sur la génération des clés d’API requises pour l’autorisation personnalisée, consultez la [documentation de l’API REST STRIPE](https://docs.stripe.com/api/authentication). 

Pour configurer une connexion Stripe :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé. 

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous : 

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Stripe.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes : 

------
#### [ JSON ]

****  

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

------

   1.  Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons. 

   1.  Sélectionnez les options réseau si vous souhaitez utiliser votre réseau. 

1.  Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`. 

# Lecture à partir d’entités Stripe
<a name="stripe-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Stripe à partir duquel vous souhaitez lire. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Balance | Non | Non | Non | Oui | Non | 
| Balance Transactions | Oui | Oui | Non | Oui | Oui | 
| Frais | Oui | Oui | Non | Oui | Oui | 
| Disputes | Oui | Oui | Non | Oui | Oui | 
| File Links | Oui | Oui | Non | Oui | Oui | 
| PaymentIntents | Oui | Oui | Non | Oui | Oui | 
| SetupIntents | Oui | Oui | Non | Oui | Oui | 
| Payouts | Oui | Oui | Non | Oui | Oui | 
| Remboursements | Oui | Oui | Non | Oui | Oui | 
| Produits | Oui | Oui | Non | Oui | Oui | 
| Prices | Oui | Oui | Non | Oui | Oui | 
| Coupons | Oui | Oui | Non | Oui | Oui | 
| Promotion Codes | Oui | Oui | Non | Oui | Oui | 
| Tax Codes | Non | Oui | Non | Oui | Non | 
| Tax Rates | Oui | Oui | Non | Oui | Oui | 
| Shipping Rates | Oui | Oui | Non | Oui | Oui | 
| Séances | Oui | Oui | Non | Oui | Oui | 
| Credit Notes | Oui | Oui | Non | Oui | Oui | 
| Client | Oui | Oui | Non | Oui | Oui | 
| Factures | Oui | Oui | Non | Oui | Oui | 
| Invoice Items | Oui | Oui | Non | Oui | Non | 
| Plans | Oui | Oui | Non | Oui | Oui | 
| Quotes | Oui | Oui | Non | Oui | Non | 
| Abonnements | Oui | Oui | Non | Oui |  | 
| Subscription Items | Non | Oui | Non | Oui | Non | 
| Subscription Schedules | Oui | Oui | Non | Oui | Oui | 
| Comptes | Non | Oui | Non | Oui | Oui | 
| Application Fees | Oui | Oui | Non | Oui | Oui | 
| Country Specs | Non | Oui | Non | Oui | Non | 
| Transferts | Oui | Oui | Non | Oui | Oui | 
| Early Fraud Warnings | Oui | Oui | Non | Oui | Oui | 
| Types de rapport | Non | Non | Non | Oui | Non | 

 **Exemple** 

```
stripe_read = glueContext.create_dynamic_frame.from_options(
    connection_type="stripe",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupons",
        "API_VERSION": "v1"
    }
)
```

 **Détails des entités et des champs Stripe** 


| Entité | Champ | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | --- | 
| Balance |  |  |  | 
|  | available | List |  | 
|  | connect\$1reserved | List |  | 
|  | en suspens | List |  | 
|  | livemode | Booléen |  | 
|  | objet | String |  | 
|  | instant\$1available | List |  | 
|  | issuing | Struct |  | 
| Balance Transactions |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier |  | 
|  | available\$1on | DateTime | =, >=, <=,<,> | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | description | String |  | 
|  | exchange\$1rate | BigDecimal |  | 
|  | fee | Entier |  | 
|  | fee\$1details | List |  | 
|  | net | Entier |  | 
|  | reporting\$1category | String |  | 
|  | source | String | = | 
|  | status | String |  | 
|  | type | String | = | 
|  | cross\$1border\$1classification | String |  | 
| Frais |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier | =, <, > | 
|  | amount\$1captured | Entier |  | 
|  | amount\$1refunded | Entier |  | 
|  | vigie | String |  | 
|  | application\$1fee | String |  | 
|  | application\$1fee\$1amount | Entier |  | 
|  | balance\$1transaction | String |  | 
|  | billing\$1details | Struct |  | 
|  | calculated\$1statement\$1descriptor | String |  | 
|  | captured | Booléen |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | description | String |  | 
|  | destination | String |  | 
|  | dispute | String |  | 
|  | disputed | Booléen | = | 
|  | failure\$1balance\$1transaction | String |  | 
|  | failure\$1code | String |  | 
|  | failure\$1message | String |  | 
|  | fraud\$1details | Struct |  | 
|  | facture | String |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | on\$1behalf\$1of | String |  | 
|  | order | String |  | 
|  | outcome | Struct |  | 
|  | paid | Booléen |  | 
|  | payment\$1intent | String | = | 
|  | payment\$1method | String |  | 
|  | payment\$1method\$1details | Struct |  | 
|  | receipt\$1email | String |  | 
|  | receipt\$1number | String |  | 
|  | receipt\$1url | String |  | 
|  | refunded | Booléen | = | 
|  | refunds | Struct |  | 
|  | review | String |  | 
|  | shipping | Struct |  | 
|  | source | Struct |  | 
|  | source\$1transfer | String |  | 
|  | statement\$1descriptor | String |  | 
|  | statement\$1descriptor\$1suffix | String |  | 
|  | status | String |  | 
|  | transfert | String |  | 
|  | transfer\$1data | Struct |  | 
|  | transfer\$1group | String | = | 
| Disputes |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier | =, <, > | 
|  | balance\$1transaction | String |  | 
|  | balance\$1transactions | List |  | 
|  | charge | String | = | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | evidence | Struct |  | 
|  | evidence\$1details | Struct |  | 
|  | is\$1charge\$1refundable | Booléen |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | payment\$1intent | String | = | 
|  | raison | String | = | 
|  | status | String |  | 
|  | payment\$1method\$1details | Struct |  | 
| File Links |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | expired | Booléen | = | 
|  | expires\$1at | DateTime |  | 
|  | dans le fichier | String | = | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | url | String |  | 
| PaymentIntents |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier |  | 
|  | amount\$1capturable | Entier |  | 
|  | amount\$1details | Struct |  | 
|  | amount\$1received | Entier |  | 
|  | vigie | String |  | 
|  | application\$1fee\$1amount | Entier |  | 
|  | automatic\$1payment\$1methods | Struct |  | 
|  | canceled\$1at | DateTime |  | 
|  | cancellation\$1reason | String |  | 
|  | capture\$1method | String |  | 
|  | client\$1secret | String |  | 
|  | confirmation\$1method | String |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | description | String |  | 
|  | facture | String |  | 
|  | last\$1payment\$1error | Struct |  | 
|  | latest\$1charge | String |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | next\$1action | Struct |  | 
|  | on\$1behalf\$1of | String |  | 
|  | payment\$1method | String |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | List |  | 
|  | payment\$1method\$1configuration\$1details | Struct |  | 
|  | traitement | Struct |  | 
|  | receipt\$1email | String |  | 
|  | review | String |  | 
|  | setup\$1future\$1usage | String |  | 
|  | shipping | Struct |  | 
|  | source | String |  | 
|  | statement\$1descriptor | String |  | 
|  | statement\$1descriptor\$1suffix | String |  | 
|  | status | String |  | 
|  | transfer\$1data | Struct |  | 
|  | transfer\$1group | String |  | 
| SetupIntents |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | vigie | String |  | 
|  | cancellation\$1reason | String |  | 
|  | client\$1secret | String |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | customer | String | = | 
|  | description | String |  | 
|  | flow\$1directions | List |  | 
|  | last\$1setup\$1error | Struct |  | 
|  | latest\$1attempt | String |  | 
|  | livemode | Booléen |  | 
|  | mandate | String |  | 
|  | metadata | Struct |  | 
|  | next\$1action | Struct |  | 
|  | on\$1behalf\$1of | String |  | 
|  | payment\$1method | String |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | List |  | 
|  | single\$1use\$1mandate | String |  | 
|  | status | String |  | 
|  | utilisation | String |  | 
|  | automatic\$1payment\$1methods | Struct |  | 
| Payouts |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier | =, <, > | 
|  | arrival\$1date | DateTime | =, >=, <=,<,> | 
|  | automatic | Booléen |  | 
|  | balance\$1transaction | String |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | description | String | = | 
|  | destination | String |  | 
|  | failure\$1balance\$1transaction | String |  | 
|  | failure\$1code | String |  | 
|  | failure\$1message | String |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | méthode | String |  | 
|  | original\$1payout | String |  | 
|  | reversed\$1by | String |  | 
|  | reconciliation\$1status | String |  | 
|  | source\$1type | String |  | 
|  | statement\$1descriptor | String |  | 
|  | status | String |  | 
|  | type | String |  | 
|  | application\$1fee | String |  | 
|  | application\$1fee\$1amount | Entier |  | 
| Remboursements |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier |  | 
|  | balance\$1transaction | String |  | 
|  | charge | String | = | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | metadata | Struct |  | 
|  | destination\$1details | Struct |  | 
|  | payment\$1intent | String | = | 
|  | raison | String |  | 
|  | receipt\$1number | String |  | 
|  | source\$1transfer\$1reversal | String |  | 
|  | status | String |  | 
|  | transfer\$1reversal | String |  | 
| Produits |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | actif | Booléen | = | 
|  | attributs | List |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | default\$1price | String |  | 
|  | description | String |  | 
|  | images | List |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | name | String |  | 
|  | package\$1dimensions | Struct |  | 
|  | shippable | Booléen |  | 
|  | statement\$1descriptor | String |  | 
|  | tax\$1code | String |  | 
|  | type | String | = | 
|  | unit\$1label | String |  | 
|  | updated | DateTime |  | 
|  | url | String |  | 
|  | fonctionnalités | List |  | 
| Prices |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | actif | Booléen | = | 
|  | billing\$1scheme | String |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String | = | 
|  | custom\$1unit\$1amount | Struct |  | 
|  | livemode | Booléen |  | 
|  | lookup\$1key | String |  | 
|  | metadata | Struct |  | 
|  | nickname | String |  | 
|  | product | String | = | 
|  | recurring | Struct |  | 
|  | tax\$1behavior | String |  | 
|  | tiers\$1mode | String |  | 
|  | transform\$1quantity | Struct |  | 
|  | type | String | = | 
|  | unit\$1amount | Entier |  | 
|  | unit\$1montant\$1decimal | String |  | 
| Coupons |  |  |  | 
|  | Id | String |  | 
|  | objet | String |  | 
|  | amount\$1off | Entier |  | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String | = | 
|  | duration | String | = | 
|  | duration\$1in\$1months | Entier | =,<,> | 
|  | livemode | Booléen |  | 
|  | max\$1redemptions | Entier | =, <, > | 
|  | metadata | Struct |  | 
|  | name | String |  | 
|  | percent\$1off | Double | = | 
|  | redeem\$1by | DateTime | =, >=, <=, <, > | 
|  | times\$1redeemed | Entier |  | 
|  | valid | Booléen |  | 
| Promotion Codes |  |  |  | 
|  | Id | String |  | 
|  | objet | String |  | 
|  | actif | Booléen | = | 
|  | code | String | = | 
|  | coupon | Struct |  | 
|  | créé | DateTime | =,>=,<=,<,> | 
|  | customer | String |  | 
|  | expires\$1at | DateTime |  | 
|  | livemode | Booléen |  | 
|  | max\$1redemptions | Entier |  | 
|  | metadata | Struct |  | 
|  | restrictions | Struct |  | 
|  | times\$1redeemed | Entier |  | 
| Tax Codes |  |  |  | 
|  | Id | String |  | 
|  | objet | String |  | 
|  | description | String |  | 
|  | name | String |  | 
| Tax Rates |  |  |  | 
|  | Id | String |  | 
|  | objet | String |  | 
|  | actif | Booléen | = | 
|  | country | String |  | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | description | String |  | 
|  | display\$1name | String |  | 
|  | inclusive | Booléen | = | 
|  | jurisdiction | String |  | 
|  | jurisdiction\$1level | String |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | percentage | Double |  | 
|  | effective\$1percentage | Double |  | 
|  | state | String |  | 
|  | tax\$1type | String |  | 
| Shipping Rates |  |  |  | 
|  | Id | String |  | 
|  | objet | String |  | 
|  | actif | Booléen | = | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | delivery\$1estimate | Struct |  | 
|  | display\$1name | String |  | 
|  | fixed\$1amount | Struct |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | tax\$1behavior | String |  | 
|  | tax\$1code | String |  | 
|  | type | String |  | 
| Séances |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | after\$1expiration | Struct |  | 
|  | allow\$1promotion\$1codes | Booléen |  | 
|  | amount\$1subtotal | Entier |  | 
|  | amount\$1total | Entier |  | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1address\$1collection | String |  | 
|  | cancel\$1url | String |  | 
|  | client\$1reference\$1id | String |  | 
|  | consent | Struct |  | 
|  | consent\$1collection | Struct |  | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | currency | String |  | 
|  | custom\$1text | Struct |  | 
|  | customer | String |  | 
|  | customer\$1creation | String |  | 
|  | customer\$1details | Struct |  | 
|  | customer\$1email | String |  | 
|  | expires\$1at | DateTime |  | 
|  | facture | String |  | 
|  | invoice\$1creation | Struct |  | 
|  | livemode | Booléen |  | 
|  | locale | String |  | 
|  | metadata | Struct |  | 
|  | mode | String |  | 
|  | payment\$1intent | String | = | 
|  | payment\$1link | String |  | 
|  | payment\$1method\$1collection | String |  | 
|  | payment\$1method\$1options | Struct |  | 
|  | payment\$1method\$1types | List |  | 
|  | payment\$1status | String |  | 
|  | phone\$1number\$1collection | Struct |  | 
|  | recovered\$1from | String |  | 
|  | setup\$1intent | String |  | 
|  | shipping\$1address\$1collection | Struct |  | 
|  | shipping\$1cost | Struct |  | 
|  | shipping\$1details | Struct |  | 
|  | shipping\$1options | List |  | 
|  | status | String |  | 
|  | submit\$1type | String |  | 
|  | abonnement | String |  | 
|  | success\$1url | String |  | 
|  | tax\$1id\$1collection | Struct |  | 
|  | total\$1details | Struct |  | 
|  | url | String |  | 
|  | ui\$1mode | String |  | 
| Credit Notes |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier |  | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | customer\$1balance\$1transaction | String |  | 
|  | discount\$1amount | Entier |  | 
|  | discount\$1amounts | List |  | 
|  | facture | String | = | 
|  | lines | Struct |  | 
|  | livemode | Booléen |  | 
|  | memo | String |  | 
|  | metadata | Struct |  | 
|  | number | String |  | 
|  | out\$1of\$1band\$1amount | Entier |  | 
|  | pdf | String |  | 
|  | raison | String |  | 
|  | refund | String |  | 
|  | status | String |  | 
|  | subtotal | Entier |  | 
|  | subtotal\$1excluding\$1tax | Entier |  | 
|  | tax\$1amounts | List |  | 
|  | total | Entier |  | 
|  | total\$1excluding\$1tax | Entier |  | 
|  | type | String |  | 
|  | voided\$1at | DateTime |  | 
|  | amount\$1shipping | Entier |  | 
|  | effective\$1at | DateTime |  | 
|  | shipping\$1cost | Struct |  | 
| Client |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | adresse | Struct |  | 
|  | balance | Entier |  | 
|  | créé | DateTime |  | 
|  | currency | String | =, >=, <=, <, > | 
|  | default\$1source | String |  | 
|  | delinquent | Booléen | = | 
|  | description | String |  | 
|  | discount | Struct |  | 
|  | e-mail | String | = | 
|  | invoice\$1prefix | String |  | 
|  | invoice\$1settings | Struct |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | name | String |  | 
|  | next\$1invoice\$1sequence | Entier |  | 
|  | phone | String |  | 
|  | preferred\$1locales | List |  | 
|  | shipping | Struct |  | 
|  | tax\$1exempt | String |  | 
|  | test\$1clock | String |  | 
| Factures |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | account\$1country | String |  | 
|  | account\$1name | String |  | 
|  | account\$1tax\$1ids | List |  | 
|  | amount\$1due | Entier |  | 
|  | amount\$1paid | Entier |  | 
|  | amount\$1remaining | Entier |  | 
|  | vigie | String |  | 
|  | application\$1fee\$1amount | Entier |  | 
|  | attempt\$1count | Entier |  | 
|  | attempted | Booléen | = | 
|  | auto\$1advance | Booléen | = | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1reason | String |  | 
|  | charge | String |  | 
|  | collection\$1method | String | = | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | currency | String |  | 
|  | custom\$1fields | List |  | 
|  | customer | String | = | 
|  | customer\$1address | Struct |  | 
|  | customer\$1email | String |  | 
|  | customer\$1name | String |  | 
|  | customer\$1phone | String |  | 
|  | customer\$1shipping | Struct |  | 
|  | customer\$1tax\$1exempt | String |  | 
|  | customer\$1tax\$1ids | List |  | 
|  | default\$1payment\$1method | String |  | 
|  | default\$1source | String |  | 
|  | default\$1tax\$1rates | List |  | 
|  | description | String |  | 
|  | discount | Struct |  | 
|  | discounts | List |  | 
|  | due\$1date | DateTime | =, >=, <=, <, > | 
|  | ending\$1balance | Entier |  | 
|  | footer | String |  | 
|  | from\$1invoice | Struct |  | 
|  | hosted\$1invoice\$1url | String |  | 
|  | invoice\$1pdf | String |  | 
|  | last\$1finalization\$1error | Struct |  | 
|  | latest\$1revision | String |  | 
|  | lines | Struct |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | next\$1payment\$1attempt | DateTime |  | 
|  | number | String |  | 
|  | on\$1behalf\$1of | String |  | 
|  | paid | Booléen | = | 
|  | paid\$1out\$1of\$1band | Booléen |  | 
|  | payment\$1intent | String |  | 
|  | payment\$1settings | Struct |  | 
|  | period\$1end | DateTime | =, >=, <=, <, > | 
|  | period\$1start | DateTime | =, >=, <=, <, > | 
|  | post\$1payment\$1credit\$1notes\$1amount | Entier |  | 
|  | pre\$1payment\$1credit\$1notes\$1amount | Entier |  | 
|  | quote | String |  | 
|  | receipt\$1number | String |  | 
|  | rendering | Struct |  | 
|  | rendering\$1options | Struct |  | 
|  | starting\$1balance | Entier |  | 
|  | statement\$1descriptor | String |  | 
|  | status | String | = | 
|  | status\$1transitions | Struct |  | 
|  | abonnement | String |  | 
|  | subscription\$1details | Struct |  | 
|  | subtotal | Entier | =, <, > | 
|  | subtotal\$1excluding\$1tax | Entier |  | 
|  | tax | Entier |  | 
|  | test\$1clock | String |  | 
|  | total | Entier | =, <, > | 
|  | total\$1discount\$1amounts | List |  | 
|  | total\$1excluding\$1tax | Entier |  | 
|  | total\$1tax\$1amounts | List |  | 
|  | transfer\$1data | Struct |  | 
|  | webhooks\$1delivered\$1at | DateTime |  | 
|  | automatically\$1finalizes\$1at | DateTime |  | 
|  | effective\$1at | DateTime |  | 
|  | émetteur | Struct |  | 
| Invoice Items |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier | =, <, > | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | date | DateTime |  | 
|  | description | String |  | 
|  | discountable | Booléen |  | 
|  | discounts | List |  | 
|  | facture | String | = | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | point | Struct |  | 
|  | plan | Struct |  | 
|  | prix | Struct |  | 
|  | proration | Booléen | = | 
|  | quantity | Entier |  | 
|  | abonnement | String |  | 
|  | subscription\$1item | String |  | 
|  | tax\$1rates | List |  | 
|  | test\$1clock | String |  | 
|  | unit\$1amount | Entier |  | 
|  | unit\$1montant\$1decimal | String |  | 
| Plans |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | actif | Booléen | = | 
|  | aggregate\$1usage | String |  | 
|  | montant | Entier |  | 
|  | amount\$1decimal | String |  | 
|  | billing\$1scheme | String |  | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | currency | String | = | 
|  | interval | String | = | 
|  | interval\$1count | Entier |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | nickname | String |  | 
|  | product | String | = | 
|  | tiers\$1mode | String |  | 
|  | transform\$1usage | Struct |  | 
|  | trial\$1period\$1days | Entier | =, <, > | 
|  | usage\$1type | String |  | 
|  | meter | String |  | 
| Quotes |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | amount\$1subtotal | Entier |  | 
|  | amount\$1total | Entier |  | 
|  | vigie | String |  | 
|  | application\$1fee\$1amount | Entier |  | 
|  | application\$1fee\$1percent | Double |  | 
|  | automatic\$1tax | Struct |  | 
|  | collection\$1method | String |  | 
|  | computed | Struct |  | 
|  | créé | DateTime |  | 
|  | currency | String |  | 
|  | customer | String | = | 
|  | default\$1tax\$1rates | List |  | 
|  | description | String |  | 
|  | discounts | List |  | 
|  | expires\$1at | DateTime |  | 
|  | footer | String |  | 
|  | from\$1quote | Struct |  | 
|  | header | String |  | 
|  | facture | String |  | 
|  | invoice\$1settings | Struct |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | number | String |  | 
|  | on\$1behalf\$1of | String |  | 
|  | status | String | = | 
|  | status\$1transitions | Struct |  | 
|  | abonnement | String |  | 
|  | subscription\$1data | Struct |  | 
|  | subscription\$1schedule | String |  | 
|  | test\$1clock | String |  | 
|  | total\$1details | Struct |  | 
|  | transfer\$1data | Struct |  | 
| Abonnements |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | vigie | String |  | 
|  | application\$1fee\$1percent | Double |  | 
|  | automatic\$1tax | Struct |  | 
|  | billing\$1cycle\$1anchor | DateTime |  | 
|  | billing\$1thresholds | Struct |  | 
|  | cancel\$1at | DateTime |  | 
|  | cancel\$1at\$1period\$1end | Booléen |  | 
|  | canceled\$1at | DateTime |  | 
|  | collection\$1method | String | = | 
|  | créé | DateTime | =, >=, <=,<,> | 
|  | currency | String |  | 
|  | current\$1period\$1end | DateTime | =, >=, <= | 
|  | current\$1period\$1start | DateTime | =, >=, <= | 
|  | customer | String | = | 
|  | days\$1until\$1due | Entier |  | 
|  | default\$1payment\$1method | String |  | 
|  | default\$1source | String |  | 
|  | default\$1tax\$1rates | List |  | 
|  | description | String |  | 
|  | discount | Struct |  | 
|  | ended\$1at | DateTime |  | 
|  | items | Struct |  | 
|  | latest\$1invoice | String |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | next\$1pending\$1invoice\$1item\$1invoice | DateTime |  | 
|  | pause\$1collection | Struct |  | 
|  | payment\$1settings | Struct |  | 
|  | pending\$1invoice\$1item\$1interval | Struct |  | 
|  | pending\$1setup\$1intent | String |  | 
|  | pending\$1update | Struct |  | 
|  | plan | Struct |  | 
|  | quantity | Entier |  | 
|  | schedule | String |  | 
|  | start\$1date | DateTime |  | 
|  | status | String | = | 
|  | test\$1clock | String |  | 
|  | transfer\$1data | Struct |  | 
|  | trial\$1end | DateTime |  | 
|  | trial\$1start | DateTime |  | 
| Subscription Items |  |  |  | 
|  | Id | String |  | 
|  | objet | String |  | 
|  | billing\$1thresholds | Struct |  | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | metadata | Struct |  | 
|  | plan | Struct |  | 
|  | prix | Struct |  | 
|  | abonnement | String |  | 
|  | tax\$1rates | List |  | 
|  | discounts | List |  | 
| Subscription Schedules |  |  |  | 
|  | objet | String |  | 
|  | vigie | String |  | 
|  | canceled\$1at | DateTime |  | 
|  | completed\$1at | DateTime |  | 
|  | créé | DateTime |  | 
|  | current\$1phase | Struct |  | 
|  | customer | String | = | 
|  | default\$1settings | Struct |  | 
|  | end\$1behavior | String |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | phases | List |  | 
|  | released\$1at | DateTime |  | 
|  | released\$1subscription | String |  | 
|  | renewal\$1interval | String |  | 
|  | status | String |  | 
|  | abonnement | String |  | 
|  | test\$1clock | String |  | 
| Comptes |  |  |  | 
|  | details\$1submitted | Booléen |  | 
|  | tos\$1acceptance | Struct |  | 
|  | type | String |  | 
|  | metadata | Struct |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | default\$1currency | String |  | 
|  | caractéristiques | Struct |  | 
|  | charges\$1enabled | Booléen |  | 
|  | paramètres | Struct |  | 
|  | requirements | Struct |  | 
|  | payouts\$1enabled | Booléen |  | 
|  | future\$1requirements | Struct |  | 
|  | external\$1accounts | Struct |  | 
|  | contrôleur | Struct |  | 
|  | country | String |  | 
|  | e-mail | String |  | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | business\$1profile | Struct |  | 
|  | business\$1type | String |  | 
|  | company | Struct |  | 
| Application Fees |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | compte | String |  | 
|  | montant | Entier | =, <, > | 
|  | amount\$1refunded | Entier | =, <, > | 
|  | vigie | String |  | 
|  | balance\$1transaction | String |  | 
|  | charge | String | = | 
|  | créé | DateTime |  | 
|  | currency | String |  | 
|  | livemode | Booléen |  | 
|  | originating\$1transaction | String |  | 
|  | refunded | Booléen | = | 
|  | refunds | Struct |  | 
|  | fee\$1source | Struct |  | 
| Country Specs |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | default\$1currency | String |  | 
|  | supported\$1bank\$1account\$1currencies | Struct |  | 
|  | supported\$1payment\$1currencies | List |  | 
|  | supported\$1payment\$1methods | List |  | 
|  | supported\$1transfer\$1countries | List |  | 
|  | verification\$1fields | Struct |  | 
| Transferts |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | montant | Entier | =, <, > | 
|  | amount\$1reversed | Entier |  | 
|  | balance\$1transaction | String |  | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | currency | String | = | 
|  | description | String |  | 
|  | destination | String | = | 
|  | destination\$1payment | String |  | 
|  | livemode | Booléen |  | 
|  | metadata | Struct |  | 
|  | reversals | Struct |  | 
|  | reversed | Booléen |  | 
|  | source\$1transaction | String |  | 
|  | source\$1type | String |  | 
|  | transfer\$1group | String | = | 
| Early Fraud Warnings |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | actionable | Booléen |  | 
|  | charge | String | = | 
|  | créé | DateTime | =, >=, <=, <, > | 
|  | fraud\$1type | String |  | 
|  | livemode | Booléen |  | 
|  | payment\$1intent | String | = | 
| Types de rapport |  |  |  | 
|  | id | String |  | 
|  | objet | String |  | 
|  | data\$1available\$1end | DateTime |  | 
|  | data\$1available\$1start | DateTime |  | 
|  | default\$1columns | List |  | 
|  | livemode | Booléen |  | 
|  | name | String |  | 
|  | updated | DateTime |  | 
|  | version | Entier |  | 

 **Requêtes de partitionnement** 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. 
+  `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi. 

   Pour le champ Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemple de valeur valide : `"2024-07-01T00:00:00.000Z"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau ci-dessous. 


| Nom de l'entité | Champ de partitionnement | Type de données | 
| --- | --- | --- | 
| Balance Transactions | créé | DateTime | 
| Frais | créé | DateTime | 
| Disputes | créé | DateTime | 
| File Links | créé | DateTime | 
| PaymentIntents | créé | DateTime | 
| SetupIntents | créé | DateTime | 
| Payouts | créé | DateTime | 
| Remboursements | créé | DateTime | 
| Produits | créé | DateTime | 
| Prices | créé | DateTime | 
| Coupons | créé | DateTime | 
| Promotion Codes | créé | DateTime | 
| Tax Rates | créé | DateTime | 
| Shipping Rates | créé | DateTime | 
| Séances | créé | DateTime | 
| Credit Notes | créé | DateTime | 
| Client | créé | DateTime | 
| Factures | créé | DateTime | 
| Plans | créé | DateTime | 
| Abonnements | créé | DateTime | 
| Subscription Schedules | créé | DateTime | 
| Comptes | créé | DateTime | 
| Application Fees | créé | DateTime | 
| Transferts | créé | DateTime | 
| Early Fraud Warnings | créé | DateTime | 

 **Exemple** 

```
stripe_read = glueContext.create_dynamic_frame.from_options(
    connection_type="stripe",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupons",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "created"
        "LOWER_BOUND": "2024-05-01T20:55:02.000Z"
        "UPPER_BOUND": "2024-07-11T20:55:02.000Z"
        "NUM_PARTITIONS": "10"
    }
)
```

# Options de connexion Stripe
<a name="stripe-connection-options"></a>

Les options de connexion pour Stripe sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Stripe. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Stripe que vous souhaitez utiliser. Exemple : v1. 
+  `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. 
+  `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. 
+  `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. 
+  `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. 
+  `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi. 
+  `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. 

# Limitations
<a name="stripe-limitations"></a>

Les restrictions du connecteur Stripe sont les suivantes :
+  Seul le partitionnement basé sur les champs est pris en charge par le connecteur. 
+  Le partitionnement basé sur les enregistrements n’est pas pris en charge par le connecteur, aucune disposition ne permet de récupérer le nombre total d’enregistrements. 
+  Le type de données de clé primaire étant String, le partitionnement basé sur l’identifiant n’est donc pas pris en charge par le connecteur. 

# Création d’un compte Stripe et configuration de l’application client
<a name="stripe-new-account-creation"></a>

**Création d’un compte Stripe**

1. Choisissez sur le lien **https://dashboard.stripe.com/enregistrement.**

1. Saisissez votre e-mail, votre nom complet, votre mot de passe et choisissez **Créer un compte**.

1. Après vous être connecté avec le compte, vérifiez le compte en choisissant **Ouvrir Gmail**.

1. Vérifiez le compte en cliquant sur le lien de vérification reçu par e-mail.

1. Après avoir cliqué sur Vérifier l’adresse e-mail, vous serez redirigé vers une autre page.

1. Après avoir cliqué sur **Activer les paiements** pour activer le compte, il sera redirigé vers la page Activer les paiements (**https://dashboard.stripe.com/bienvenue**). Assurez-vous de renseigner toutes vos informations valides, puis de choisir le bouton **Continuer**.



**Création d’une application pour développeurs Slack**

1. Connectez-vous à [Stripe](https://dashboard.stripe.com/login).

1. Choisissez **Développeurs** comme indiqué tout en haut de l’image ci-dessous.

1. Choisissez **Clés d’API** sous Développeurs.

1. Choisissez **Révéler la clé de test** pour obtenir les clés d’API.

# Connexion à Teradata Vantage dans AWS Glue Studio
<a name="connecting-to-data-teradata"></a>

 AWS Glue fournit une prise en charge intégrée pour Teradata Vantage. AWS Glue Studio fournit une interface visuelle pour se connecter à Teradata, créer des tâches d’intégration de données et les exécuter sur l’exécution Spark AWS Glue Studio sans serveur. 

 AWS Glue Studio crée une connexion unifiée pour Teradata Vantage. Pour de plus amples informations, veuillez consulter [Considérations](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Création d'une connexion Teradata Vantage](creating-teradata-connection.md)
+ [Création d'un nœud source Teradata](creating-teradata-source-node.md)
+ [Création d'un nœud cible Teradata](creating-teradata-target-node.md)
+ [Options avancées](#creating-teradata-connection-advanced-options)

# Création d'une connexion Teradata Vantage
<a name="creating-teradata-connection"></a>

Pour vous connecter à Teradata Vantage depuis AWS Glue, vous devez créer et stocker vos informations d'identification Teradata dans un AWS Secrets Manager secret, puis associer ce secret à une AWS Glue connexion Teradata.

**Prérequis :**
+ Si vous accédez à votre environnement Teradata via Amazon VPC, configurez Amazon VPC pour permettre à AWS Glue votre tâche de communiquer avec l'environnement Teradata. Nous vous déconseillons d'accéder à l'environnement Teradata via l'Internet public.

  Dans Amazon VPC, identifiez ou créez un **VPC**, un **sous-réseau** et un **groupe de sécurité** qui AWS Glue seront utilisés lors de l'exécution de la tâche. En outre, vous devez vous assurer qu'Amazon VPC est configuré pour autoriser le trafic réseau entre votre instance Teradata et cet emplacement. Votre tâche devra établir une connexion TCP avec votre port client Teradata. Pour de plus amples informations sur les ports Teradata, consultez la [documentation Teradata](https://docs.teradata.com/r/Teradata-VantageTM-on-AWS-DIY-Installation-and-Administration-Guide/April-2020/Before-Deploying-Vantage-on-AWS-DIY/Security-Groups-and-Ports).

  Selon la configuration de votre réseau, la connectivité VPC sécurisée peut nécessiter des modifications dans Amazon VPC et dans d'autres services réseau. Pour plus d'informations sur AWS la connectivité, consultez [les options de AWS connectivité](https://docs.teradata.com/r/Teradata-VantageCloud-Enterprise/Get-Started/Connecting-Your-Environment/AWS-Connectivity-Options) dans la documentation Teradata.

**Pour configurer une connexion AWS Glue Teradata :**

1. Dans votre configuration Teradata, identifiez ou créez un utilisateur et un mot de passe AWS Glue vous permettra de vous connecter à, *teradataUser* et*teradataPassword*. Pour plus d'informations, consultez la [présentation de Vantage Security](https://docs.teradata.com/r/Configuring-Teradata-VantageTM-After-Installation/January-2021/Security-Overview/Vantage-Security-Overview) dans la documentation Teradata.

1. Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification Teradata. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `user` contenant la valeur. *teradataUsername*
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `password` contenant la valeur. *teradataPassword*

1. Dans la AWS Glue console, créez une connexion en suivant les étapes décrites dans[Ajouter une AWS Glue connexion](console-connections.md). Après avoir créé la connexion, conservez le nom de la connexion pour l'étape suivante. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez Teradata.
   + Lorsque vous fournissez l'**URL JDBC**, indiquez l'URL de votre instance. Vous pouvez également coder en dur certains paramètres de connexion séparés par des virgules dans votre URL JDBC. L'URL doit être conforme au format suivant : `jdbc:teradata://teradataHostname/ParameterName=ParameterValue,ParameterName=ParameterValue`

     Les paramètres d'URL pris en charge sont les suivants :
     + `DATABASE` – nom de la base de données sur l'hôte à laquelle accéder par défaut.
     + `DBS_PORT` – le port de base de données utilisé lors de l'exécution sur un port non standard.
   + Lorsque vous sélectionnez un **type d'identifiant**, sélectionnez **AWS Secrets Manager**, puis définissez **AWS Secret** sur*secretName*.

1. Dans les situations suivantes, vous pouvez avoir besoin d'une configuration supplémentaire :
   + 

     Pour les instances Teradata hébergées sur AWS un Amazon VPC
     + Vous devrez fournir les informations de connexion Amazon VPC à la AWS Glue connexion qui définit vos informations d'identification de sécurité Teradata. Lorsque vous créez ou mettez à jour votre connexion, définissez le **VPC**, le **sous-réseau** et les **groupes de sécurité** dans les **options réseau**.

# Création d'un nœud source Teradata
<a name="creating-teradata-source-node"></a>

## Prérequis
<a name="creating-teradata-source-node-prerequisites"></a>
+ Une connexion AWS Glue Teradata Vantage, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,. [Création d'une connexion Teradata Vantage](creating-teradata-connection.md)
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table Teradata que vous souhaitez lire ou interroger*targetQuery*. *tableName*

## Ajout d'une source de données Teradata
<a name="creating-teradata-source-node-add"></a>

**Pour ajouter un nœud **Source de données – Teradata** :**

1.  Choisissez la connexion pour votre source de données Teradata. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une nouvelle connexion**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion Teradata Vantage](creating-teradata-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1.  Choisissez une option **Source Teradata :** 
   +  **Choisissez une seule table** : accéder à toutes les données à partir d'une seule table. 
   +  **Saisir une requête personnalisée** : accéder à un jeu de données à partir de plusieurs tables en fonction de votre requête personnalisée. 

1.  Si vous avez choisi une seule table, entrez*tableName*. 

    Si vous avez choisi **Saisir une requête personnalisée**, saisissez une requête SQL SELECT. 

1.  Dans les **Propriétés Teradata personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible Teradata
<a name="creating-teradata-target-node"></a>

## Prérequis
<a name="creating-teradata-target-node-prerequisites"></a>
+ Une connexion AWS Glue Teradata Vantage, configurée avec un AWS Secrets Manager secret, comme décrit dans la section précédente,. [Création d'une connexion Teradata Vantage](creating-teradata-connection.md)
+ Les autorisations appropriées sur votre tâche pour lire le secret utilisé par la connexion.
+ Une table Teradata dans laquelle vous souhaitez écrire,*tableName*.

## Ajout d'une cible de données Teradata
<a name="creating-teradata-target-node-add"></a>

**Pour ajouter un nœud **Cible de données – Teradata** :**

1.  Choisissez la connexion pour votre source de données Teradata. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion Teradata**. Pour en savoir plus, consultez [ Overview of using connectors and connections ](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Configurez **le nom de la table** en fournissant*tableName*.

1.  Dans les **Propriétés Teradata personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

## Options avancées
<a name="creating-teradata-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d’un nœud Teradata. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Consultez [Connexions Teradata Vantage](aws-glue-programming-etl-connect-teradata-home.md). 

# Connexion à Twilio
<a name="connecting-to-data-twilio"></a>

Twilio fournit des outils de communication programmables pour passer et recevoir des appels téléphoniques, envoyer et recevoir des messages texte, et exécuter d'autres fonctions de communication à l'aide de son service APIs Web. Twilio APIs alimente sa plateforme de communication. Derrière cela se APIs trouve une couche logicielle qui connecte et optimise les réseaux de communication du monde entier pour permettre à vos utilisateurs d'appeler et d'envoyer des messages à n'importe qui, dans le monde entier. En tant qu'utilisateur de Twilio, vous pouvez vous connecter AWS Glue à votre compte Twilio. Vous pouvez ensuite utiliser Twilio comme source de données dans vos tâches ETL. Exécutez ces jobs pour transférer des données entre Twilio et AWS des services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Twilio](twilio-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](twilio-configuring-iam-permissions.md)
+ [Configuration de Twilio](twilio-configuring.md)
+ [Configuration de connexions Twilio](twilio-configuring-connections.md)
+ [Lecture à partir d’entités Twilio](twilio-reading-from-entities.md)
+ [Options de connexion Twilio](twilio-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Twilio](twilio-connector-limitations.md)

# AWS Glue support pour Twilio
<a name="twilio-support"></a>

AWS Glue soutient Twilio comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Twilio.

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

**Versions de l’API Twilio prises en charge**  
Les versions d’API Twilio suivantes sont prises en charge :
+ v1
+ 2010-04-01

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="twilio-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Twilio
<a name="twilio-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Twilio, vous devez répondre aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Twilio avec e-mail et mot de passe.
+ Votre compte Twilio est activé pour accéder à l’API.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Twilio. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Twilio.

# Configuration de connexions Twilio
<a name="twilio-configuring-connections"></a>

Twilio prend en charge le nom d’utilisateur et le mot de passe pour l’authentification de base. L'authentification de base est une méthode d'authentification simple dans laquelle les clients fournissent des informations d'identification directement pour accéder aux ressources protégées. AWS Glue est capable d'utiliser le nom d'utilisateur (SID du compte) et le mot de passe (jeton d'authentification) pour authentifier Twilio. APIs

Pour consulter la documentation publique de Twilio pour le flux d’authentification de base, consultez [Basic Authentication \$1 Twilio](https://www.twilio.com/docs/glossary/what-is-basic-authentication).

Pour configurer une connexion Twilio :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :
   + Pour l’authentification de base : le secret doit contenir le secret du consommateur de l’application connectée avec le **SID du compte** (nom d’utilisateur) et le **jeton d’authentification** (mot de passe).
**Note**  
Vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Twilio.

   1. Indiquez l’`[Edge\$1Location](https://www.twilio.com/docs/global-infrastructure/edge-locations)` de l’instance Twilio à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Twilio
<a name="twilio-reading-from-entities"></a>

**Prérequis**

Un objet Twilio à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme `SMS-Message` ou `SMS-CountryPricing`.

**Entités prises en charge pour la source** :


| Entité | Interface | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | --- | 
| SMS-Message | REST | Oui | Oui | Non | Oui | Oui | 
| SMS- CountryPricing | REST | Non | Non | Non | Oui | Non | 
| Voice-Call | REST | Oui | Oui | Non | Oui | Non | 
| Voice-Application | REST | Oui | Oui | Non | Oui | Non | 
| OutgoingCallerIdentification vocale | REST | Oui | Oui | Non | Oui | Non | 
| Voice-Queue | REST | Oui | Oui | Non | Oui | Non | 
| Conversations-Conversation | REST | Oui | Oui | Non | Oui | Non | 
| Conversations-User | REST | Non | Oui | Non | Oui | Non | 
| Conversations-Role | REST | Non | Oui | Non | Oui | Non | 
| Conversations-Configuration | REST | Non | Non | Non | Oui | Non | 
| Conversations- AddressConfiguration | REST | Oui | Oui | Non | Oui | Non | 
| Conversations- WebhookConfiguration | REST | Non | Non | Non | Oui | Non | 
| Conversations- ParticipantConversation | REST | Non | Non | Non | Oui | Non | 
| Conversations-Credential | REST | Non | Oui | Non | Oui | Non | 
| Conversations- ConversationService | REST | Non | Oui | Non | Oui | Non | 

**Exemple :**

```
twilio_read = glueContext.create_dynamic_frame.from_options(
    connection_type="twilio",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "sms-message",
        "API_VERSION": "2010-04-01",
        "Edge_Location": "sydney.us1"
    }
```

**Détails des entités et des champs Twilio** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/twilio-reading-from-entities.html)

## Requêtes de partitionnement
<a name="twilio-reading-partitioning-queries"></a>

**Champs prenant en charge le partitionnement** :

Dans Twilio, les champs de type de DateTime données prennent en charge le partitionnement basé sur les champs.

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "2024-05-01T20:55:02.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
twilio_read = glueContext.create_dynamic_frame.from_options(
    connection_type="twilio",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "sms-message",
        "API_VERSION": "2010-04-01",
        "PARTITION_FIELD": "date_sent"
        "LOWER_BOUND": "2024-05-01T20:55:02.000Z"
        "UPPER_BOUND": "2024-06-01T20:55:02.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Options de connexion Twilio
<a name="twilio-connection-options"></a>

Les options de connexion pour Twilio sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Twilio.
+ `EDGE_LOCATION`(Chaîne) - (Obligatoire) Un emplacement périphérique Twilio valide.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Twilio que vous souhaitez utiliser. Twilio prend en charge deux versions d’API : « v1 » et « 2010-04-01 ».
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Une URL d’instance Twilio valide.

# Restrictions et remarques relatives au connecteur Twilio
<a name="twilio-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Twilio :
+ Le partitionnement basé sur les enregistrements n’est pas pris en charge par le connecteur, car aucune disposition ne permet de récupérer le nombre total d’enregistrements de Twilio.
+ Les champs `date_sent`, `start_time` et `end_time` sont du type Datetime, mais lors du filtrage, ils ne prennent en charge que les valeurs date (les composants temporels ne sont pas pris en compte).
+ Le filtrage des champs « from » ou « to » ne fonctionne que si les valeurs n’incluent aucun préfixe (par exemple, un protocole ou une étiquette). Si un préfixe est présent, le filtrage du champ correspondant ne fonctionne pas. Par exemple, si vous transmettez « to » : « whatsapp : \$114xxxxxxxxxx » comme filtre, Twilio ne renverra aucune réponse. Vous devez le transmettre en tant que « to » : « \$114xxxxxxxx », puis il renverra les enregistrements s’ils existent.
+ Le filtre de champ « identity » est obligatoire lorsque vous interrogez l’entité `conversation-participant-conversation`.

# Connexion à Vertica dans AWS Glue Studio
<a name="connecting-to-data-vertica"></a>

 AWS Glue fournit une prise en charge intégrée pour Vertica. AWS Glue Studio fournit une interface visuelle pour se connecter à Vertica, créer des tâches d'intégration de données et les exécuter sur l'exécution Spark AWS Glue Studio sans serveur. 

 AWS Glue Studio crée une connexion unifiée pour Vertica. Pour de plus amples informations, veuillez consulter [Considérations](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations). 

**Topics**
+ [Création d'une connexion Vertica](creating-vertica-connection.md)
+ [Création d'un nœud source Vertica](creating-vertica-source-node.md)
+ [Création d'un nœud cible Vertica](creating-vertica-target-node.md)
+ [Options avancées](#creating-vertica-connection-advanced-options)

# Création d'une connexion Vertica
<a name="creating-vertica-connection"></a>

**Prérequis :**
+ Un compartiment ou un dossier Amazon S3 à utiliser pour le stockage temporaire lors de la lecture et de l'écriture dans la base de données, désigné par*tempS3Path*.
**Note**  
Lorsque vous utilisez Vertica dans les aperçus des données de AWS Glue travail, il est possible que les fichiers temporaires ne soient pas automatiquement supprimés. *tempS3Path* Pour garantir la suppression des fichiers temporaires, mettez directement fin à la session de prévisualisation des données en choisissant **Mettre fin à la session** dans le volet **Prévisualisation des données**.  
Si vous ne pouvez pas garantir la fin directe de la session de prévisualisation des données, pensez à configurer le cycle de vie d’Amazon S3 pour supprimer les anciennes données. Nous recommandons de supprimer les données de plus de 49 heures, sur la base de la durée d'exécution maximale des tâches plus une marge. Pour de plus amples informations sur la configuration du cycle de vie Amazon S3, consultez [Gestion du cycle de vie de votre stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) dans la documentation Amazon S3.
+ Une politique IAM avec les autorisations appropriées pour votre chemin Amazon S3 que vous pouvez associer à votre rôle AWS Glue professionnel.
+ Si votre instance Vertica se trouve dans un Amazon VPC, configurez Amazon VPC pour permettre à AWS Glue votre tâche de communiquer avec l'instance Vertica sans que le trafic ne transite par l'Internet public. 

  Dans Amazon VPC, identifiez ou créez un **VPC**, un **sous-réseau** et un **groupe de sécurité** qui AWS Glue seront utilisés lors de l'exécution de la tâche. En outre, vous devez vous assurer qu'Amazon VPC est configuré pour autoriser le trafic réseau entre votre instance Vertica et cet emplacement. Votre tâche devra établir une connexion TCP avec votre port client Vertica (par défaut 5433). Selon la configuration de votre réseau, cela peut nécessiter des modifications des règles du groupe de sécurité, du réseau ACLs, des passerelles NAT et des connexions d'appairage.

**Pour configurer une connexion à Vertica :**

1. Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification Vertica, *verticaUsername* et*verticaPassword*. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) dans la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret *secretName* pour l'étape suivante. 
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `user` contenant la valeur. *verticaUsername*
   + Lorsque vous sélectionnez des **paires clé/valeur**, créez une paire pour la clé `password` contenant la valeur. *verticaPassword*

1. Dans la AWS Glue console, créez une connexion en suivant les étapes décrites dans[Ajouter une AWS Glue connexion](console-connections.md). Après avoir créé la connexion, conservez le nom de la connexion pour l'étape suivante. *connectionName* 
   + Lorsque vous sélectionnez un **type de connexion**, sélectionnez Vertica.
   + Lorsque vous sélectionnez l'**hôte Vertica**, indiquez le nome d'hôte de votre installation Vertica.
   + Lorsque vous sélectionnez le **port Vertica**, le port via lequel votre installation Vertica est disponible.
   + Lorsque vous sélectionnez un **AWS secret**, fournissez*secretName*.

1. Dans les situations suivantes, vous pouvez avoir besoin d'une configuration supplémentaire :
   + 

     Pour les instances Vertica hébergées AWS dans un Amazon VPC
     + Fournissez les informations de connexion Amazon VPC à la AWS Glue connexion qui définit vos identifiants de sécurité Vertica. Lorsque vous créez ou mettez à jour votre connexion, définissez le **VPC**, le **sous-réseau** et les **groupes de sécurité** dans les **options réseau**.

Vous devez effectuer les étapes suivantes avant d'exécuter votre AWS Glue tâche :
+ Accordez le rôle IAM associé à vos autorisations de AWS Glue travail à*tempS3Path*.
+ Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire*secretName*.

# Création d'un nœud source Vertica
<a name="creating-vertica-source-node"></a>

## Prérequis
<a name="creating-vertica-source-node-prerequisites"></a>
+ Une connexion au catalogue de AWS Glue données de type Vertica *connectionName* et un emplacement Amazon S3 temporaire*tempS3Path*, comme décrit dans la section précédente,[Création d'une connexion Vertica](creating-vertica-connection.md).
+ Une table Vertica que vous souhaitez lire ou interroger*targetQuery*. *tableName*

## Ajout d'une source de données Vertica
<a name="creating-vertica-source-node-add"></a>

**Pour ajouter un nœud **Source de données – Vertica** :**

1.  Choisissez la connexion pour votre source de données Vertica. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion Vertica**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion Vertica](creating-vertica-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Choisissez la **Base de données** contenant votre table.

1. Choisissez la **zone de transit dans Amazon S3**, entrez un URI S3A pour*tempS3Path*.

1. Choisissez la **Source Vertica**.
   +  **Choisissez une seule table** : accéder à toutes les données à partir d'une seule table. 
   +  **Saisir une requête personnalisée** : accéder à un jeu de données à partir de plusieurs tables en fonction de votre requête personnalisée. 

1.  Si vous avez choisi une seule table, entrez *tableName* et sélectionnez éventuellement un **schéma**. 

    Si vous avez choisi **Saisir une requête personnalisée**, saisissez une requête SQL SELECT et sélectionnez éventuellement un **Schéma**. 

1.  Dans les **Propriétés Vertica personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

# Création d'un nœud cible Vertica
<a name="creating-vertica-target-node"></a>

## Prérequis
<a name="creating-vertica-target-node-prerequisites"></a>
+ Une connexion au catalogue de AWS Glue données de type Vertica *connectionName* et un emplacement Amazon S3 temporaire*tempS3Path*, comme décrit dans la section précédente,[Création d'une connexion Vertica](creating-vertica-connection.md).

## Ajout d'une cible de données Vertica
<a name="creating-vertica-target-node-add"></a>

**Pour ajouter un nœud **Cible de données – Vertica** :**

1.  Choisissez la connexion pour votre source de données Vertica. Puisque vous l'avez créé, il devrait être disponible dans le menu déroulant. Si vous devez créer une connexion, choisissez **Créer une connexion Vertica**. Pour de plus amples informations, veuillez consulter la section précédente [Création d'une connexion Vertica](creating-vertica-connection.md). 

    Une fois que vous avez choisi une connexion, vous pouvez afficher ses propriétés en cliquant sur **Afficher les propriétés**. 

1. Choisissez la **Base de données** contenant votre table.

1. Choisissez la **zone de transit dans Amazon S3**, entrez un URI S3A pour*tempS3Path*.

1. Entrez *tableName* et sélectionnez éventuellement un **schéma**. 

1.  Dans les **Propriétés Vertica personnalisées**, saisissez les paramètres et les valeurs nécessaires. 

## Options avancées
<a name="creating-vertica-connection-advanced-options"></a>

Vous pouvez fournir des options avancées lors de la création d’un nœud Vertica. Ces options sont les mêmes que celles disponibles lors de la programmation AWS Glue de scripts Spark.

Consultez [Connexions Vertica](aws-glue-programming-etl-connect-vertica-home.md).

# Connexion à WooCommerce
<a name="connecting-to-data-woocommerce"></a>

WooCommerce est une solution logicielle flexible open source conçue pour les sites Web WordPress basés sur le Web. Elle est couramment utilisée pour créer des boutiques de commerce électronique en ligne. Avec cette solution logicielle, n’importe qui peut transformer son site Web habituel en un magasin en ligne entièrement fonctionnel.

**Topics**
+ [AWS Glue support pour WooCommerce](woocommerce-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](woocommerce-configuring-iam-permissions.md)
+ [Configuration WooCommerce](woocommerce-configuring.md)
+ [Configuration des WooCommerce connexions](woocommerce-configuring-connections.md)
+ [Lecture à partir d' WooCommerce entités](woocommerce-reading-from-entities.md)
+ [WooCommerce options de connexion](woocommerce-connection-options.md)

# AWS Glue support pour WooCommerce
<a name="woocommerce-support"></a>

AWS Glue prend en charge WooCommerce les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de WooCommerce.

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

**Versions WooCommerce d'API prises en charge**  
Les versions WooCommerce d'API suivantes sont prises en charge :
+ v3

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="woocommerce-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration WooCommerce
<a name="woocommerce-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis WooCommerce, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous avez un WooCommerce compte avec a `consumerKey` et `consumerSecret` a.
+ Votre WooCommerce compte dispose d'un accès à l'API avec une licence valide.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre WooCommerce compte. Pour les connexions classiques, vous n'avez rien d'autre à faire dans WooCommerce.

# Configuration des WooCommerce connexions
<a name="woocommerce-configuring-connections"></a>

WooCommerce prend en charge l'authentification personnalisée. Pour consulter WooCommerce la documentation publique sur la génération des clés d'API requises pour une autorisation personnalisée, consultez [Authentication — Documentation de l' WooCommerce API REST](https://woocommerce.github.io/woocommerce-rest-api-docs/#authentication).

Pour configurer une WooCommerce connexion :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :
   + Pour une application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `consumerKey` et `consumerSecret` comme clés. Remarque : Vous devez créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez WooCommerce.

   1. Indiquez `INSTANCE_URL` l' WooCommerce instance à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d' WooCommerce entités
<a name="woocommerce-reading-from-entities"></a>

**Prérequis**

Un WooCommerce objet que vous aimeriez lire. Vous aurez besoin du nom de l’objet tel que coupon, order, product, etc.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Coupon | Oui | Oui | Oui | Oui | Oui | 
| Coupon Total | Non | Non | Non | Oui | Non | 
| Customers Total | Non | Non | Non | Oui | Non | 
| Ordre | Oui | Oui | Oui | Oui | Oui | 
| Orders Total | Non | Non | Non | Oui | Non | 
| Payment Gateway | Non | Non | Non | Oui | Non | 
| Produit (langue française non garantie) | Oui | Oui | Oui | Oui | Oui | 
| Product attribute | Oui | Oui | Oui | Oui | Oui | 
| Product category | Oui | Oui | Oui | Oui | Oui | 
| Product review | Oui | Oui | Oui | Oui | Oui | 
| Product shipping class | Oui | Oui | Oui | Oui | Oui | 
| Product tag | Oui | Oui | Oui | Oui | Oui | 
| Product variation | Oui | Oui | Oui | Oui | Oui | 
| Products Total | Non | Non | Non | Oui | Non | 
| Report (List) | Non | Non | Non | Oui | Non | 
| Reviews Total | Non | Non | Non | Oui | Non | 
| Sales Report | Oui | Non | Non | Oui | Non | 
| Shipping Method | Non | Non | Non | Oui | Non | 
| Shipping Zone | Non | Non | Non | Oui | Non | 
| Shipping Zone Location | Non | Non | Non | Oui | Non | 
| Shipping Zone Method | Non | Non | Non | Oui | Non | 
| Tax Rate | Oui | Oui | Oui | Oui | Oui | 
| Tax Class | Non | Non | Non | Oui | Non | 
| Top Sellers Report | Oui | Non | Non | Oui | Non | 

**Exemple :**

```
woocommerce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.woocommerce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupon",
        "API_VERSION": "v3",
        "INSTANCE_URL": "instanceUrl"
    }
```

**WooCommerce détails de l'entité et du champ** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/woocommerce-reading-from-entities.html)

**Note**  
Les types de données Struct et List sont convertis en type de données String, et le type de DateTime données est converti en Timestamp dans la réponse des connecteurs.

## Requêtes de partitionnement
<a name="woocommerce-reading-partitioning-queries"></a>

**Partitionnement basé sur des enregistrements** :

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.

Dans le partitionnement basé sur les enregistrements, le nombre total d'enregistrements présents est demandé à partir de l' WooCommerce API et divisé par le nombre fourni. `NUM_PARTITIONS` Le nombre d’enregistrements qui en résulte est ensuite extrait simultanément par chaque sous-requête.
+ `NUM_PARTITIONS` : le nombre de partitions.

Les entités suivantes prennent en charge le partitionnement basé sur les enregistrements :
+ coupon
+ order
+ product
+ product-attribute
+ product-attribute-term
+ product-category
+ product-review
+ product-shipping-class
+ product-tag
+ product-variation
+ tax-rate

Exemple :

```
woocommerce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="glue.spark.woocommerce",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "coupon",
        "API_VERSION": "v3",
        "INSTANCE_URL": "instanceUrl"
        "NUM_PARTITIONS": "10"
    }
```

**Partitionnement basé sur des enregistrements** :

La requête d’origine est divisée en `NUM_PARTITIONS` nombres de sous-requêtes qui peuvent être exécutées simultanément par les tâches Spark :
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
WooCommerce_read = glueContext.create_dynamic_frame.from_options(
    connection_type="WooCommerce",
    connection_options={
        "connectionName": "connectionName",
        "REALMID": "1234567890123456789",
        "ENTITY_NAME": "Bill",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# WooCommerce options de connexion
<a name="woocommerce-connection-options"></a>

Les options de connexion suivantes sont disponibles pour WooCommerce :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans WooCommerce.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. WooCommerce Version de l'API Rest que vous souhaitez utiliser.
+ `REALM_ID`(Chaîne) - Un identifiant identifiant une entreprise WooCommerce en ligne individuelle à laquelle vous envoyez des demandes.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `INSTANCE_URL`(String) - (Obligatoire) Une URL d' WooCommerce instance valide au format : https ://<instance>.wpcomstaging.com
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Connexion à Zendesk
<a name="connecting-to-data-zendesk"></a>

Zendesk est une solution de gestion de centre d’assistance cloud qui propose des outils personnalisables pour créer un portail de service client, une base de connaissances et des communautés en ligne.

**Topics**
+ [AWS Glue support pour Zendesk](zendesk-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](zendesk-configuring-iam-permissions.md)
+ [Configuration de Zendesk](zendesk-configuring.md)
+ [Configuration de connexions Zendesk](zendesk-configuring-connections.md)
+ [Lecture à partir d’entités Zendesk](zendesk-reading-from-entities.md)
+ [Options de connexion Zendesk](zendesk-connection-options.md)
+ [Limitations](zendesk-limitations.md)

# AWS Glue support pour Zendesk
<a name="zendesk-support"></a>

AWS Glue prend en charge Zendesk comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Zendesk.

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

**Versions d’API Zendesk prises en charge**  
Les versions d’API Zendesk suivantes sont prises en charge :
+   v2

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="zendesk-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Zendesk
<a name="zendesk-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Zendesk, vous devez répondre aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Zendesk. Pour de plus amples informations, veuillez consulter [Création d’un compte Zendesk](#zendesk-configuring-creating-account).
+ Votre compte Zendesk est activé pour accéder à l’API.
+ Votre compte Zendesk vous permet d’installer des applications connectées.

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Zendesk.

## Création d’un compte Zendesk
<a name="zendesk-configuring-creating-account"></a>

Pour créer un compte Zendesk :

1. Accéder à l' https://www.zendesk.com/in/enregistrement/

1. Saisissez les informations telles que votre adresse e-mail professionnelle, votre prénom, votre nom de famille, votre numéro de téléphone, le titre du poste, le nom de l’entreprise, le nombre d’employés de l’entreprise, le mot de passe et la langue de votre choix. Choisissez ensuite **Inscription complète à l’essai**.

1. Une fois votre compte créé, utilisez le lien de vérification que vous avez reçu pour vérifier votre adresse e-mail.

1. Une fois l’adresse e-mail professionnelle vérifiée, vous êtes redirigé vers votre compte Zendesk. Choisissez l’**option Acheter Zendesk** pour votre plan préféré. Remarque : Pour le connecteur Zendesk, il est recommandé d’acheter le plan Suite Enterprise.

## Création d'une application cliente et d'informations d'identification OAuth 2.0
<a name="zendesk-configuring-creating-client-app"></a>

Pour créer une application cliente et des informations d'identification OAuth 2.0 :

1. Connectez-vous à votre compte Zendesk où vous souhaitez que l'application OAuth 2.0 soit créée https://www.zendesk.com/in/ login/

1. Cliquez sur l’icône d’engrenage. Cliquez sur le lien **Accéder au centre d’administration** pour ouvrir la page du centre d’administration.

1. Choisissez **Applications et intégrations** dans la barre latérale gauche, puis sélectionnez **APIs**> API **Zendesk**.

1. Sur la page de l'API Zendesk, choisissez l'onglet **OAuth Clients**.

1. Choisissez **Ajouter un client OAuth** sur le côté droit.

1. Renseignez les champs suivants pour créer un client :

   1. Nom du client : saisissez un nom pour votre application. Il s’agit du nom que les utilisateurs verront lorsqu’on leur demandera d’autoriser l’accès à votre application et lorsqu’ils consulteront la liste des applications tierces ayant accès à leur application Zendesk.

   1. Description (facultatif). Brève description de votre application que les utilisateurs verront lorsqu’on leur demandera d’autoriser l’accès à celle-ci.

   1. Entreprise (facultatif). Le nom de l’entreprise que les utilisateurs verront lorsqu’ils seront invités à autoriser l’accès à votre application. Ces informations peuvent les aider à comprendre à qui ils accordent l’accès.

   1. Logo (facultatif). Il s’agit du logo que les utilisateurs verront lorsqu’on leur demandera d’autoriser l’accès à votre application. L’image peut être au format JPG, GIF ou PNG. Pour obtenir de meilleurs résultats, importez une image carrée. Elle sera redimensionnée pour la page d’autorisation.

   1. Identifiant unique : le champ est rempli automatiquement avec une version reformatée du nom que vous avez saisi pour votre application. Vous pouvez modifier les noms si vous le souhaitez.

   1. Redirection URLs  : entrez l'URL ou l'URL URLs que Zendesk doit utiliser pour envoyer la décision de l'utilisateur d'autoriser l'accès à votre application.

      Par exemple : https://us-east-1.console.aws.amazon.com/gluestudio/ oauth

1. Cliquez sur **Sauvegarder**

1. Une fois la page actualisée, un nouveau champ **Secret** prérempli apparaît en bas de la page. Il s'agit de la valeur « client\$1secret » spécifiée dans la OAuth2 spécification. Copiez la valeur Secret dans votre presse-papiers et enregistrez-la dans un endroit sûr. Remarque : Les caractères peuvent dépasser la largeur de la zone de texte. Assurez-vous donc de tout sélectionner avant de copier.

1. Cliquez sur **Sauvegarder**

# Configuration de connexions Zendesk
<a name="zendesk-configuring-connections"></a>

Le connecteur Zendesk prend en charge le type d’autorisation Authorization Code.
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée qu'il AWS Glue possède (application client AWS Glue gérée) pour laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'URL de son instance Zendesk. La AWS Glue console redirige l'utilisateur vers Zendesk où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Zendesk.
+ Vous pouvez toujours choisir de créer votre propre application connectée dans Zendesk et de fournir votre propre identifiant client et votre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, vous serez toujours redirigé vers Zendesk pour vous connecter et autoriser l'accès AWS Glue à vos ressources.
+ Ce type d’autorisation donne lieu à un jeton d’accès. Le jeton d’accès n’expire jamais.

Pour consulter la documentation publique de Zendesk sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez la section [OAuth Tokens pour les types de subvention](https://developer.zendesk.com/api-reference/ticketing/oauth/grant_type_tokens/).

Pour configurer une connexion Zendesk :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour le type de AuthorizationCode subvention : pour une application connectée gérée par le client, le secret doit contenir le secret du consommateur de l'application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret par connexion dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Zendesk.

   1. Indiquez l’INSTANCE\$1URL de l’instance Zendesk à laquelle vous souhaitez vous connecter.

   1. Indiquez l’environnement Zendesk.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Zendesk
<a name="zendesk-reading-from-entities"></a>

**Prérequis**

Un objet Zendesk à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet tel que ticket, user ou article, comme indiqué dans le tableau suivant.


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Ticket | Y | Y | Y | Y | N | 
| Utilisateur | Y | Y | Y | Y | N | 
| Organisation | Y | Y | Y | Y | N | 
| Article | Y | Y | N | Y | N | 
| Ticket Event | Y | Y | N | Y | N | 
| Ticket Metric Event | Y | Y | N | Y | N | 
| Ticket Comment | Y | Y | Y | Y | N | 
| Ticket Field | Y | Y | N | Y | N | 
| Ticket Metric | Y | Y | N | Y | N | 
| Ticket Activity | Y | Y | N | Y | N | 
| Ticket Skip | N | Y | N | Y | N | 
| Groupe | Y | Y | Y | Y | N | 
| Group Membership | N | Y | Y | Y | N | 
| Satisfaction Rating | Y | Y | N | Y | N | 
| Afficher | Y | Y | Y | Y | N | 
| Déclencheur | Y | Y | Y | Y | N | 
| Trigger Category | N | Y | Y | Y | N | 
| Macro | Y | Y | Y | Y | N | 
|  Automatisation | N | Y | Y | Y | N | 

**Exemple :**

```
Zendesk_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Zendesk",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v2"
    }
```

**Entités Zendesk et détails des champs** :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/zendesk-reading-from-entities.html)

**Note**  
Les types de données Struct et List sont convertis en type de données String dans la réponse du connecteur.

## Requêtes de partitionnement
<a name="zendesk-reading-partitioning-queries"></a>

Les partitions ne sont pas prises en charge dans Zendesk.

# Options de connexion Zendesk
<a name="zendesk-connection-options"></a>

Les options de connexion pour Zendesk sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Zendesk.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Zendesk que vous souhaitez utiliser. Par exemple : v2.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet. Par exemple : id, name, url, created\$1at
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark. Par exemple : group\$1id = 100
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète. Par exemple : "SELECT id,url FROM users WHERE role=\$1"end-user\$1""
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête. Le champ par défaut est `update_at` pour les entités prenant en charge l’API d’exportation incrémentielle (`created_at` pour `ticket-events` et `time` pour `ticket-metric-events`).
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi. Facultatif : cette option sera gérée par le connecteur si elle n’est pas fournie dans l’option de tâche. Valeur par défaut : "2024-05-01T20:55:02.000Z
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture. Facultatif : cette option sera gérée par le connecteur si elle n’est pas fournie dans l’option de tâche. Valeur par défaut : 1.
+ `IMPORT_DELETED_RECORDS`(Chaîne) - Par défaut : FALSE. Utilisé pour la lecture. Pour obtenir les enregistrements supprimés lors de la requête.
+ `ACCESS_TOKEN` : jeton d’accès à utiliser dans la demande.
+ `INSTANCE_URL` : URL de l’instance sur laquelle l’utilisateur souhaite exécuter les opérations. Par exemple : https://\$1subdomain\$1/.zendesk.com

# Limitations
<a name="zendesk-limitations"></a>

Les restrictions du connecteur Zendesk sont les suivantes :
+ La pagination basée sur le décalage limite le nombre de pages pouvant être extraites à 100, mais cela n’est pas recommandé, car le nombre total d’enregistrements pouvant être extraits est de 10 000. Cependant, la pagination basée sur un curseur mise en œuvre pour le connecteur Zendesk permet de contourner cette restriction. Seul l’opérateur de filtre EQUAL\$1TO est pris en charge par l’API Zendesk.

  En raison de cette restriction, le partitionnement n’est pas pris en charge pour le connecteur Zendesk.
+ Pour l’entité « Ticket Event », la limite de débit est de 10 demandes par minute. Lors de l'exécution d'une tâche AWS Glue ETL, vous pouvez recevoir un message d'erreur 429 (trop de demandes).

# Connexion à Zoho CRM
<a name="connecting-to-data-zoho-crm"></a>

Zoho CRM fait office de référentiel unique pour regrouper les activités de vente, de marketing et de support client, et rationaliser les processus, les politiques et les personnes dans une seule plateforme. Zoho CRM peut être facilement personnalisé pour répondre aux besoins spécifiques des entreprises de tout type et de toute taille.

La plateforme de développement de Zoho CRM offre la bonne combinaison d'outils low-code et pro-code pour automatiser le travail, intégrer les données businesses/enterprises au sein de l'entreprise et créer des solutions personnalisées pour le Web et le mobile.

**Topics**
+ [AWS Glue support pour Zoho CRM](zoho-crm-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](zoho-crm-configuring-iam-permissions.md)
+ [Configuration de Zoho CRM](zoho-crm-configuring.md)
+ [Configuration de connexions Zoho CRM](zoho-crm-configuring-connections.md)
+ [Lecture depuis les entités Zoho CRM](zoho-crm-reading-from-entities.md)
+ [Options de connexion Zoho CRM](zoho-crm-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Zoho CRM](zoho-crm-connector-limitations.md)

# AWS Glue support pour Zoho CRM
<a name="zoho-crm-support"></a>

AWS Glue prend en charge Zoho CRM comme suit :

**Prise en charge en tant que source ?**  
Oui : synchrone et asynchrone. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Zoho CRM.

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

**Versions d’API Zoho CRM prises en charge**  
Les versions d’API Zoho CRM suivantes sont prises en charge :
+ v7

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="zoho-crm-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Zoho CRM
<a name="zoho-crm-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Zoho CRM, vous devez répondre aux exigences suivantes :

## Configuration requise
<a name="zoho-crm-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous possédez un compte Zoho CRM.
+ Votre compte Zoho CRM est activé pour accéder à l’API.
+ Vous avez un client d'API enregistré dans la console API pour obtenir des OAuth informations d'identification.

# Configuration de connexions Zoho CRM
<a name="zoho-crm-configuring-connections"></a>

Le type de subvention détermine le mode AWS Glue de communication avec Zoho CRM pour demander l'accès à vos données. Votre choix influe sur les exigences que vous devez respecter avant de créer la connexion. Zoho CRM prend uniquement en charge le type de subvention AUTHORIZATION\$1CODE pour la version 2.0. OAuth 
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. La AWS Glue console redirige l'utilisateur vers Zoho CRM où il doit se connecter et accorder à Glue les autorisations demandées pour accéder à son instance Zoho CRM.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Zoho CRM et de fournir leur propre identifiant client, URL d'authentification, URL de jeton et URL d'instance lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Zoho CRM pour se connecter et autoriser l'accès AWS Glue à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès restera valide pendant une heure et pourra être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter la documentation publique de Zoho CRM sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez [Authentification](https://www.zoho.com/crm/developer/docs/api/v7/oauth-overview.html).

Pour configurer une connexion Zoho CRM :

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Zoho CRM.

   1. Indiquez l’`INSTANCE_URL` de l’instance Zoho CRM à laquelle vous souhaitez vous connecter.

   1. Indiquez l’ID client de l’application du client utilisateur.

   1. Sélectionnez l’**URL d’authentification** appropriée dans le menu déroulant.

   1. Sélectionnez l’**URL du jeton** appropriée dans le menu déroulant.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

1. Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**.

# Lecture depuis les entités Zoho CRM
<a name="zoho-crm-reading-from-entities"></a>

**Prérequis**

Objets Zoho CRM à partir desquels vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source de synchronisation** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Produit (langue française non garantie) | Oui | Oui | Oui | Oui | Oui | 
| Quote | Oui | Oui | Oui | Oui | Oui | 
| Bon de commande | Oui | Oui | Oui | Oui | Oui | 
| Solution | Oui | Oui | Oui | Oui | Oui | 
| Appelez | Oui | Oui | Oui | Oui | Oui | 
| Sous-tâche | Oui | Oui | Oui | Oui | Oui | 
| Événement | Oui | Oui | Oui | Oui | Oui | 
| Invoice | Oui | Oui | Oui | Oui | Oui | 
| Compte | Oui | Oui | Oui | Oui | Oui | 
| Contact | Oui | Oui | Oui | Oui | Oui | 
| Vendor | Oui | Oui | Oui | Oui | Oui | 
| Campaign | Oui | Oui | Oui | Oui | Oui | 
| Deal | Oui | Oui | Oui | Oui | Oui | 
| Lead | Oui | Oui | Oui | Oui | Oui | 
| Custom Module | Oui | Oui | Oui | Oui | Oui | 
| Sales Order | Oui | Oui | Oui | Oui | Oui | 
| Price Books | Oui | Oui | Oui | Oui | Oui | 
| Cas | Oui | Oui | Oui | Oui | Oui | 

**Exemple :**

```
zoho_read = glueContext.create_dynamic_frame.from_options(
    connection_type="ZOHO",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v7",
        "INSTANCE_URL": "https://www.zohoapis.in/"
    }
```

**Entités prises en charge pour la source asynchrone** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Produit (langue française non garantie) | Oui | Non | Non | Oui | Non | 
| Quote | Oui | Non | Non | Oui | Non | 
| Bon de commande | Oui | Non | Non | Oui | Non | 
| Solution | Oui | Non | Non | Oui | Non | 
| Appelez | Oui | Non | Non | Oui | Non | 
| Sous-tâche | Oui | Non | Non | Oui | Non | 
| Événement | Oui | Non | Non | Oui | Non | 
| Invoice | Oui | Non | Non | Oui | Non | 
| Compte | Oui | Non | Non | Oui | Non | 
| Contact | Oui | Non | Non | Oui | Non | 
| Vendor | Oui | Non | Non | Oui | Non | 
| Campaign | Oui | Non | Non | Oui | Non | 
| Deal | Oui | Non | Non | Oui | Non | 
| Lead | Oui | Non | Non | Oui | Non | 
| Custom Module | Oui | Non | Non | Oui | Non | 
| Sales Order | Oui | Non | Non | Oui | Non | 
| Price Books | Oui | Non | Non | Oui | Non | 
| Cas | Oui | Non | Non | Oui | Non | 

**Exemple :**

```
zoho_read = glueContext.create_dynamic_frame.from_options(
    connection_type="ZOHO",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v7",
        "INSTANCE_URL": "https://www.zohoapis.in/",
        "TRANSFER_MODE": "ASYNC"
    }
```

**Détails du champ Zoho CRM** :

Zoho CRM fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique pour les entités prises en charge. Par conséquent, la prise en charge des opérateurs est capturée au niveau du type de données.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/zoho-crm-reading-from-entities.html)

## Requêtes de partitionnement
<a name="zoho-crm-reading-partitioning-queries"></a>

Le partitionnement n’est pas pris en charge en mode asynchrone.

**Partitionnement basé sur des filtres (mode de synchronisation)** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
zoho_read = glueContext.create_dynamic_frame.from_options(
    connection_type="zohocrm",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v7",
        "PARTITION_FIELD": "Created_Time"
        "LOWER_BOUND": "2022-01-01T01:01:01.000Z"
        "UPPER_BOUND": "2024-01-01T01:01:01.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Options de connexion Zoho CRM
<a name="zoho-crm-connection-options"></a>

Les options de connexion pour Zoho CRM sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Zoho CRM.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Zoho CRM que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. URL d’instance Zoho CRM valide.
+ `TRANSFER_MODE`(Chaîne) - Utilisé pour indiquer si la requête doit être exécutée en mode asynchrone.

# Restrictions et remarques relatives au connecteur Zoho CRM
<a name="zoho-crm-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Zoho CRM :
+ Avec la version 7 de l’API, vous pouvez récupérer un maximum de 100 000 enregistrements. Consultez la [documentation Zoho](https://www.zoho.com/crm/developer/docs/api/v7/get-records.html).
+ Pour l’entité Event, l’étiquette « Meeting » s’affiche comme indiqué dans la [documentation Zoho](https://www.zoho.com/crm/developer/docs/api/v7/modules-api.html).
+ Pour la fonctionnalité Tout sélectionner :
  + Vous pouvez récupérer un maximum de 50 champs depuis SaaS pour les appels GET et POST.
  + Si vous souhaitez avoir des données pour un champ spécifique qui n’appartient pas aux 50 premiers champs, vous devez indiquer manuellement la liste des champs sélectionnés.
  + Si plus de 50 champs sont sélectionnés, tous les champs au-delà des 50 champs seront rognés et contiendront des données nulles dans Amazon S3. 
  + Dans le cas d’une expression de filtre, si la liste de 50 champs fournie par l’utilisateur n’inclut pas les champs « id » et « Created\$1Time », une exception personnalisée sera déclenchée pour inviter l’utilisateur à les inclure.
+ Les opérateurs de filtre peuvent être différents field-to-field même s'ils ont le même type de données. Par conséquent, vous devez spécifier manuellement un opérateur différent pour chaque champ qui déclenche une erreur dans la plateforme SaaS. 
+ Pour la fonctionnalité Trier par :
  + Les données ne peuvent être triées que selon un seul champ sans expression de filtre, tandis que les données peuvent être triées selon plusieurs champs lorsqu’une expression de filtre est appliquée.
  + Si aucun ordre de tri n’est spécifié pour le champ sélectionné, les données seront extraites par ordre croissant par défaut. 
+ Les régions prises en charge par le connecteur Zoho CRM sont les États-Unis, l’Europe, l’Inde, l’Australie et le Japon.
+ [Restrictions](https://www.zoho.com/crm/developer/docs/api/v7/bulk-read/limitations.html) de la fonctionnalité de lecture asynchrone :
  + Limit, Order by et le partitionnement ne sont pas pris en charge en mode asynchrone. 
  + En mode asynchrone, nous pouvons transférer jusqu’à 500 pages de données avec 200 000 enregistrements par page.
  + Pendant un intervalle d’une minute, seules 10 demandes sont autorisées à être téléchargées. Lorsque vous dépassez la limite de téléchargement, le système renvoie une erreur HTTP 429 et suspend toutes les demandes de téléchargement pendant une minute avant que le traitement ne puisse reprendre.
  + Une fois la tâche groupée terminée, vous ne pouvez accéder au fichier téléchargeable que pendant une journée. Ensuite, vous ne pouvez plus accéder au fichier via les points de terminaison.
  + Un maximum de 200 champs de sélection peuvent être fournis via un point de terminaison. Si vous spécifiez plus de 200 champs de sélection dans un point de terminaison, le système exportera automatiquement tous les champs disponibles pour ce module.
  + Les champs externes créés dans un module ne sont pas pris en charge dans Bulk Read APIs.
  + Le tri et les clauses `Group_by` ne sont pas pris en charge via ce point de terminaison d’API.
  + Les valeurs des champs contenant des données d’intégrité sensibles ne seront récupérées que lorsque l’option **Restreindre l’accès aux données via l’API** dans les paramètres de conformité est **désactivée**. Si l’option est activée, la valeur sera **vide** dans le résultat.
  + Limites de filtrage/critères
    + Le nombre maximum de critères qu’une requête peut utiliser est de 25.
    + Le filtrage/les critères sur les champs de texte à lignes multiples ne sont pas pris en charge.

# Connexion à Zoom Meetings
<a name="connecting-to-data-zoom-meetings"></a>

Zoom Meetings est une plateforme de visioconférence cloud qui peut être utilisée pour les réunions par visioconférence, les audioconférences, les webinaires, les enregistrements de réunions et le chat en direct.

**Topics**
+ [AWS Glue support pour Zoom Meetings](zoom-meetings-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](zoom-meetings-configuring-iam-permissions.md)
+ [Configuration de Zoom Meetings](zoom-meetings-configuring.md)
+ [Configuration de l’application client Zoom Meetings](zoom-meetings-configuring-client-app.md)
+ [Configuration des connexions Zoom Meetings](zoom-meetings-configuring-connections.md)
+ [Lecture depuis les entités de Zoom Meetings](zoom-meetings-reading-from-entities.md)
+ [Options de connexion Zoom Meetings](zoom-meetings-connection-options.md)
+ [Restrictions de Zoom Meetings](zoom-meetings-limitations.md)

# AWS Glue support pour Zoom Meetings
<a name="zoom-meetings-support"></a>

AWS Glue prend en charge Zoom Meetings comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Zoom Meetings.

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

**Versions d’API Zoom Meetings prises en charge**  
Les versions d’API Zoom Meetings suivantes sont prises en charge :
+   v2

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="zoom-meetings-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [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.

# Configuration de Zoom Meetings
<a name="zoom-meetings-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Zoom Meetings, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="zoom-meetings-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Zoom Meetings.
+ Votre compte Zoom est activé pour accéder à l’API.
+ Vous avez créé une OAuth2 application dans votre compte Zoom Meetings. Cette intégration fournit les informations d'identification qui AWS Glue permettent d'accéder à vos données en toute sécurité lorsqu'elle passe des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Configuration de l’application client Zoom Meetings](zoom-meetings-configuring-client-app.md).

Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Zoom Meetings. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Zoom Meetings.

# Configuration de l’application client Zoom Meetings
<a name="zoom-meetings-configuring-client-app"></a>

1. Connectez-vous à la marketplace de l’application Zoom.

1. Choisissez **Développer** > **Créer l’application**.

1. Choisissez **General App** pour une application basée sur la OAuth version 2.0.

1. Sur la page **Informations de base**, ajoutez ou mettez à jour des informations sur l'application, telles que le nom de l'application, son mode de gestion, ses informations d'identification et autres OAuth informations.

1. Dans la section **Sélectionner le mode de gestion de l’application**, confirmez la manière dont vous souhaitez que votre application soit gérée :

   1. **Gestion par l’administrateur** : les administrateurs de compte ajoutent et gèrent l’application.

   1. **Gestion par l’utilisateur** : des utilisateurs individuels ajoutent et gèrent l’application. L’application n’a accès qu’aux données autorisées de l’utilisateur.

1. **Identifiants de l’application** : le flux de création génère automatiquement les informations d’identification (ID client et secret client) pour votre application.

1. Dans la section OAuth Informations, configurez OAuth votre application.

   1. **OAuth URL de redirection** (obligatoire) : entrez l'URL de redirection ou le point de terminaison à configurer OAuth entre votre application et Zoom.

   1. **Utiliser l’URL en mode strict** (facultatif)

   1. **Vérification du sous-domaine** (facultatif)

   1. **OAuth listes d'**autorisation (obligatoire) : ajoutez toute adresse unique URLs que Zoom doit autoriser comme redirections valides pour vos OAuth flux.

1. Sur la page **Portées**, sélectionnez les méthodes de l’API Zoom que votre application est autorisée à appeler. Les portées définissent les informations et les fonctionnalités mises à la disposition de votre utilisateur. Sélectionnez les portées granulaires suivantes :
   + user:read:list\$1users:admin
   + zoom\$1rooms:read:list\$1rooms:admin
   + group:read:list\$1members:admin
   + group:read:administrator:admin
   + group:read:list\$1groups:admin
   + report:read:admin
   + role:read:list\$1roles, role:read:list\$1roles:admin

   Une fois les portées ajoutées, choisissez **Continuer** et l’application sera alors prête à être utilisée.

Pour plus d'informations sur la configuration OAuth 2.0, voir [Intégrations (OAuth applications).](https://developers.zoom.us/docs/integrations/)

# Configuration des connexions Zoom Meetings
<a name="zoom-meetings-configuring-connections"></a>

Zoom Meetings prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 Le type de subvention détermine le mode AWS Glue de communication avec Zoom Meetings pour demander l'accès à vos données.
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion doit fournir des informations OAuth connexes telles que l'ID client et le secret du client pour son application client Zoom Meetings. La AWS Glue console redirige l'utilisateur vers Zoom où il doit se connecter et autoriser AWS Glue les autorisations demandées pour accéder à son instance Zoom Meetings.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée dans Zoom Meetings et de fournir leur propre identifiant client et leur secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés vers Zoom Meetings pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter la documentation publique de Zoom Meetings sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir [Utilisation de la OAuth version 2.0](https://developers.zoom.us/docs/api/using-zoom-apis/#using-oauth-20).

Pour configurer une connexion Zoom Meetings :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez Zoom Meetings.

   1. Indiquez l’environnement Zoom Meetings auquel vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

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

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture depuis les entités de Zoom Meetings
<a name="zoom-meetings-reading-from-entities"></a>

**Prérequis**

Un objet Zoom Meetings à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, comme `Group` ou `Zoom Rooms`.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Zoom Rooms | Non | Oui | Non | Oui | Non | 
| Groupe | Non | Non | Non | Oui | Non | 
| Group Member | Oui | Oui | Non | Oui | Non | 
| Group Admin | Non | Oui | Non | Oui | Non | 
| Report (daily) | Oui | Non | Non | Oui | Non | 
| Roles | Non | Non | Non | Oui | Non | 
| Utilisateurs | Oui | Oui | Non | Oui | Non | 

**Exemple :**

```
zoom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="zoom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v2"
    }
)
```

**Détails des entités et des champs Zoom Meetings** :

Zoom Meetings charge dynamiquement les champs disponibles sous l’entité sélectionnée. Les opérateurs de filtrage suivants sont pris en charge en fonction du type de données du champ.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/zoom-meetings-reading-from-entities.html)

## Requêtes de partitionnement
<a name="zoom-meetings-reading-partitioning-queries"></a>

Zoom Meetings ne prend pas en charge le partitionnement basé sur des filtres ni le partitionnement basé sur des enregistrements.

# Options de connexion Zoom Meetings
<a name="zoom-meetings-connection-options"></a>

Les options de connexion pour Zoom Meetings sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de l’entité Zoom Meetings. Par exemple, `group`.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest de Zoom Meetings que vous souhaitez utiliser. La valeur sera `v2`, car Zoom Meetings ne prend actuellement en charge que la version 2.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Liste de colonnes séparées par des virgules que vous souhaitez sélectionner pour l’entité sélectionnée.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.

# Restrictions de Zoom Meetings
<a name="zoom-meetings-limitations"></a>

Les restrictions ou remarques suivantes concernent Zoom Meetings :
+ Zoom Meetings ne prend pas en charge la commande Order by.
+ Zoom Meetings ne prend pas en charge le partitionnement basé sur des filtres, car aucun champ ne peut répondre aux critères requis.
+ Zoom Meetings ne prend pas en charge le partitionnement basé sur les enregistrements, car la limite de pagination et la pagination basée sur le décalage ne sont pas prises en charge.

# Ajout d'une connexion JDBC à l'aide de vos propres pilotes JDBC
<a name="console-connections-jdbc-drivers"></a>

 Vous pouvez utiliser votre propre pilote JDBC lorsque vous utilisez une connexion JDBC. Lorsque le pilote par défaut utilisé par le AWS Glue robot d'exploration ne parvient pas à se connecter à une base de données, vous pouvez utiliser votre propre pilote JDBC. Par exemple, si vous souhaitez utiliser SHA-256 avec votre base de données Postgres et que les anciens pilotes Postgres ne le prennent pas en charge, vous pouvez utiliser votre propre pilote JDBC. 

## Sources de données prises en charge
<a name="w2aac25c27d135b5"></a>


| Sources de données prises en charge | Sources de données non prises en charge | 
| --- | --- | 
| MySQL | Snowflake | 
| Postgres |  | 
| Oracle |  | 
| Redshift |  | 
| SQL Server |  | 
| Aurora\$1 |  | 

 \$1 Pris en charge si le pilote JDBC natif est utilisé. Toutes les fonctionnalités du pilote ne peuvent pas être exploitées. 

## Ajout d'un pilote JDBC à une connexion JDBC
<a name="w2aac25c27d135b9"></a>

**Note**  
 Si vous choisissez d'utiliser vos propres versions de pilote JDBC, les robots d' AWS Glue exploration consommeront des ressources dans les AWS Glue tâches et les compartiments Amazon S3 pour s'assurer que le pilote que vous avez fourni est exécuté dans votre environnement. L’utilisation supplémentaire des ressources sera reflétée sur votre compte. Le coût des AWS Glue robots d'exploration et des tâches figure dans la AWS Glue catégorie indiquée dans la facturation. De plus, le fait de fournir votre propre pilote JDBC ne signifie pas que le Crawler est capable de tirer parti de toutes les fonctionnalités du pilote. 

**Pour ajouter votre propre pilote JDBC à une connexion JDBC :**

1.  Ajoutez le fichier du pilote JDBC à un emplacement Amazon S3. Vous pouvez créer un and/or dossier de bucket ou utiliser un and/or dossier de bucket existant. 

1.  Dans la AWS Glue console, choisissez **Connexions** dans le menu de gauche sous **Catalogue de données**, puis créez une nouvelle connexion. 

1.  Complétez les champs pour **Propriétés de connexion** et choisissez JDBC pour **Type de connexion**. 

1.  Dans **Accès à la connexion**, entrez l'**URL JDBC** et le **nom de la classe de pilote JDBC** *(facultatif)*. Le nom de classe du pilote doit être celui d'une source de données prise en charge par les robots d' AWS Glue exploration.   
![\[La capture d'écran montre une source de données avec JDBC sélectionné et une connexion dans la fenêtre Ajouter une source de données.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/add-connection-connection-access.png)

1.  Choisissez le chemin Amazon S3 où se trouve le pilote JDBC dans **chemin Amazon S3 du pilote JDBC** : champ *(facultatif)*. 

1.  Complétez les champs du type d'informations d'identification si vous saisissez un nom d'utilisateur et un mot de passe ou un code secret. Lorsque vous avez terminé, choisissez **Créer une connexion**. 
**Note**  
 Le test de connexion n'est pas pris en charge pour le moment. Lorsque vous effectuez une indexation de site web de la source de données à l'aide d'un pilote JDBC que vous avez fourni, le Crawler ignore cette étape. 

1.  Ajoutez la connexion nouvellement créée à un Crawler. Dans la AWS Glue console, choisissez **Crawlers** dans le menu de gauche sous **Data Catalog**, puis créez un nouveau robot d'exploration. 

1.  Dans l'assistant **Ajouter un Crawler**, à l'étape 2, choisissez **Ajouter une source de données**.   
![\[La capture d'écran montre une source de données avec JDBC sélectionné et une connexion dans la fenêtre Ajouter une source de données.\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/images/add-crawler-add-data-source.png)

1.  Choisissez **JDBC** comme source de données et choisissez la connexion créée lors des étapes précédentes. Complet 

1.  Pour utiliser votre propre pilote JDBC avec un AWS Glue robot d'exploration, ajoutez les autorisations suivantes au rôle utilisé par le robot d'exploration :
   +  Accordez des autorisations pour les actions de tâches suivantes : `CreateJob`, `DeleteJob`, `GetJob`, `GetJobRun`, `StartJobRun`. 
   +  Accordez des autorisations pour les actions IAM : `iam:PassRole` 
   +  Accordez des autorisations pour les actions Amazon S3 : `s3:DeleteObjects`, `s3:GetObject`, `s3:ListBucket`, `s3:PutObject`. 
   +  Accordez l'accès principal au service bucket/folder dans la politique IAM. 

    Exemple de politique IAM : 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:GetObject",
           "s3:ListBucket",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/driver-parent-folder/driver.jar",
           "arn:aws:s3:::amzn-s3-demo-bucket"
         ]
       }
     ]
   }
   ```

------

    Le AWS Glue robot crée deux dossiers : \$1glue\$1job\$1crawler et \$1crawler.

   Si le fichier JAR du pilote se trouve dans le dossier `s3://amzn-s3-demo-bucket/driver.jar"`, ajoutez les ressources suivantes : 

   ```
   "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket/_glue_job_crawler/*",
     		 "arn:aws:s3:::amzn-s3-demo-bucket/_crawler/*"
               ]
   ```

   Si le fichier JAR du pilote se trouve dans le dossier `s3://amzn-s3-demo-bucket/tmp/driver/subfolder/driver.jar"`, ajoutez les ressources suivantes : 

   ```
   "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket/tmp/_glue_job_crawler/*",
     		"arn:aws:s3:::amzn-s3-demo-bucket/tmp/_crawler/*"
               ]
   ```

1.  Si vous utilisez un VPC, vous devez autoriser l'accès au point de AWS Glue terminaison en créant le point de terminaison de l'interface et en l'ajoutant à votre table de routage. Pour plus d'informations, consultez [Création d'un point de terminaison VPC d'interface](https://docs.aws.amazon.com/glue/latest/dg/vpc-interface-endpoints.html#vpc-endpoint-create) pour AWS Glue

1.  Si vous utilisez le chiffrement dans votre catalogue de données, créez le point de terminaison de l' AWS KMS interface et ajoutez-le à votre table de routage. Pour de plus amples informations, consultez [Creating a VPC endpoint for AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html#vpce-create-endpoint). 