

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 連線至 CircleCI
<a name="connecting-to-data-circleci"></a>

CircleCI 是一種持續整合和持續交付平台。您的 CircleCI 帳戶包含專案、管道、工作流程等相關資料。如果您是 CircleCI 使用者，您可以 AWS Glue 連線到您的 CircleCI 帳戶。然後，您可以在 ETL 任務中使用 CircleCI 作為資料來源。執行這些任務以在 CircleCI AWS 和服務或其他支援的應用程式之間傳輸資料。

**Topics**
+ [AWS Glue 支援 CircleCI](circleci-support.md)
+ [包含用於建立和使用連線的 API 操作的政策](circleci-configuring-iam-permissions.md)
+ [設定 CircleCI](circleci-configuring.md)
+ [設定 CircleCI 連線](circleci-configuring-connections.md)
+ [從 CircleCI 實體讀取](circleci-reading-from-entities.md)
+ [CircleCI 連線選項](circleci-connection-options.md)
+ [CircleCI 限制](circleci-connection-limitations.md)

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

AWS Glue 支援 CircleCI，如下所示：

**支援作為來源？**  
是。您可以使用 AWS Glue ETL 任務從 CircleCI 查詢資料。

**支援作為目標？**  
否。

**支援的 CircleCI API 版本**  
支援下列 CircleCI API 版本：
+   v2

# 包含用於建立和使用連線的 API 操作的政策
<a name="circleci-configuring-iam-permissions"></a>

下列範例政策說明建立和使用 連線所需的 AWS IAM 許可。如果您要建立新角色，請建立包含下列項目的政策：

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

****  

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

------

如果不想使用上述方法，可選擇使用下列受管 IAM 政策：
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – 准許存取各種 AWS Glue 程序代表您執行所需的資源。這些資源包括 AWS Glue Amazon S3、IAM、CloudWatch Logs 和 Amazon EC2。如果您遵循此政策中指定資源的命名慣例，則 AWS Glue 程序具有必要的許可。此政策通常會連接至定義編目程式、工作和開發端點時所指定的角色。
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) – 當政策連接至 的身分使用 AWS 管理主控台時，授予 AWS Glue 資源的完整存取權。如果您依照此政策中指定的資源命名慣例，使用者就能擁有完整的主控台功能。此政策通常連接到 AWS Glue 主控台的使用者。

# 設定 CircleCI
<a name="circleci-configuring"></a>

您必須先符合下列要求，才能使用 從 CircleCI AWS Glue 傳輸資料：

## 最低需求
<a name="circleci-configuring-min-requirements"></a>

以下是最低要求：
+ 您具有一個 CircleCI 帳戶，其中包含您要傳輸的資料。
+ 在您的帳戶的使用者設定中，您已建立個人 API 字符。如需詳細資訊，請參閱[建立個人 API 字符](https://circleci.com/docs/managing-api-tokens/#creating-a-personal-api-token)。
+ 您在建立連線 AWS Glue 時提供個人 API 權杖給 。

如果您符合這些要求，就可以 AWS Glue 連線到您的 CircleCI 帳戶。

# 設定 CircleCI 連線
<a name="circleci-configuring-connections"></a>

CircleCI 支援自訂身分驗證。

若要設定 CircleCI 連線，請執行以下操作：

1. 在 AWS Secrets Manager 中，建立包含下列詳細資訊的秘密：

   1. 對於客戶管理的連線應用程式 – 機密應包含以 `Circle-Token` 作為金鑰的連線應用程式 API 金鑰。

   1. 注意：您必須為 中的連線建立秘密 AWS Glue。

1. 在 AWS Glue Glue Studio 中，依照下列步驟在 **Data Connections** 下建立連線：

   1. 選取**資料來源**時，選取 CircleCI。

   1. 選取 AWS Glue 可以擔任並具有下列動作許可的 AWS IAM 角色：

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

****  

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

------

   1. 選取您要用於此連線`secretName`的 AWS Glue ，以放置字符。

   1. 如果想要使用您的網路，請選取網路選項。

1. 授予與您的 AWS Glue 任務相關聯的 IAM 角色讀取 的許可`secretName`。

# 從 CircleCI 實體讀取
<a name="circleci-reading-from-entities"></a>

**必要條件**

您想要從中讀取的 CircleCI 物件。將需要物件名稱。

**來源的支援實體**：


| 實體 | 可以篩選 | 支援限制 | 支援排序依據 | 支援選取 \$1 | 支援分區 | 
| --- | --- | --- | --- | --- | --- | 
| Context | 是 | 否 | 否 | 是 | 否 | 
| 組織摘要指標 | 是 | 否 | 否 | 是 | 否 | 
| 管道 | 否 | 否 | 否 | 是 | 否 | 
| 管道工作流程 | 是 | 否 | 否 | 是 | 否 | 
| 專案分支 | 是 | 否 | 否 | 是 | 否 | 
| 專案不穩定的測試 | 否 | 否 | 否 | 是 | 否 | 
| 專案摘要指標 | 是 | 否 | 否 | 是 | 否 | 
| Schedule | 否 | 否 | 否 | 是 | 否 | 
| 工作流程任務時間序列 | 是 | 否 | 否 | 是 | 否 | 
| 工作流程指標和趨勢 | 是 | 否 | 否 | 是 | 否 | 
| 工作流程最近執行 | 是 | 否 | 否 | 是 | 否 | 
| 工作流程摘要指標 | 是 | 否 | 否 | 是 | 否 | 
| 工作流程測試指標 | 是 | 否 | 否 | 是 | 否 | 

**範例**：

```
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"
    }
```

## CircleCI 實體和欄位詳細資訊
<a name="circleci-reading-from-entities-field-details"></a>

如需實體和欄位詳細資訊的更多資訊，請參閱：
+ [內容](https://circleci.com/docs/api/v2/#operation/listContexts)
+ [專案摘要指標](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowsPageData)
+ [工作流程任務時間序列](https://circleci.com/docs/api/v2/#operation/getJobTimeseries)
+ [組織摘要指標](https://circleci.com/docs/api/v2/#operation/getOrgSummaryData)
+ [專案分支](https://circleci.com/docs/api/v2/#operation/getAllInsightsBranches)
+ [專案不穩定的測試](https://circleci.com/docs/api/v2/#operation/getFlakyTests)
+ [工作流程最近執行](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowRuns)
+ [工作流程摘要指標](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowMetrics)
+ [工作流程指標和趨勢](https://circleci.com/docs/api/v2/#operation/getWorkflowSummary)
+ [工作流程測試指標](https://circleci.com/docs/api/v2/#operation/getProjectWorkflowTestMetrics)
+ [管道](https://circleci.com/docs/api/v2/#operation/listPipelinesForProject)
+ [管道工作流程](https://circleci.com/docs/api/v2/#operation/listWorkflowsByPipelineId)
+ [排程](https://circleci.com/docs/api/v2/#operation/listSchedulesForProject)

具有靜態中繼資料的實體：

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

**注意**  
在連接器的回應中，Struct 和 List 資料類型會轉換為 String 資料類型。

**分區查詢**

CircleCI 不支援欄位型分區或記錄型分區。

# CircleCI 連線選項
<a name="circleci-connection-options"></a>

以下是 CircleCI 的連線選項：
+ `ENTITY_NAME`(String) - (必要) 用於讀取。CircleCI 中的物件名稱。
+ `API_VERSION`(String) - (必要) 用於讀取。您想要使用的 CircleCI Rest API 版本。
+ `SELECTED_FIELDS`(List<String>) - 預設：empty(SELECT \$1)。用於讀取。您要為物件選取的資料欄。
+ `FILTER_PREDICATE`(String) - 預設：空白。用於讀取。其應該為 Spark SQL 格式。
+ `QUERY`(String) - 預設：空白。用於讀取。完整的 Spark SQL 查詢。

# CircleCI 限制
<a name="circleci-connection-limitations"></a>

以下是 CircleCI 的限制或備註：
+ CircleCI 不支援欄位型分區或記錄型分區。
+ 包含 '-' (連字號) 的篩選條件欄位只有當包裝在反引號內時才有效。例如：`workflow-name` = "abc"
+ 無法支援 GitLab VCS 類型，因為沒有以程式設計方式擷取 GitLab VCS 實體路徑所需的「專案 ID」。