

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