

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