

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Connexion à 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).