# Amazon S3

Amazon Simple Storage Service (Amazon S3) 是物件儲存服務，提供領先業界的可擴充性、資料可用性、安全性和效能。

## 準備驗證

若要存取 資料，您需要透過帳戶認證驗證連線。

資訊備註確認您使用的帳戶可讀取您要擷取的表格。

若要連線至 Amazon S3，您需要 AWS 識別存取管理 (IAM) 中的權限，以允許您建立政策、建立角色以及將政策附加到角色。需要此項，才能向您的 S3 值區授予授權：

* [建立 IAM 政策](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating)。
* [建立 IAM 角色](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating2)。

### 建立 IAM 政策

[IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)是基於 JSON 的存取政策語言，用於管理值區資源的權限。

Amazon S3 權限

| 權限名稱 | 運算 | 描述 |
| --- | --- | --- |
| **s3:GetObject** | **[GET 物件](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)** | 允許從 Amazon S3 擷取物件。 |
| **s3:GetObject** | **[HEAD 物件](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)** | 允許從物件擷取中繼資料，而不傳回物件本身。 |
| **s3:ListBucket** | **[GET 值區 (列出物件)](http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html)** | 允許傳回值區中的部分或全部 (最多 1,000 個) 物件。 |
| **s3:ListBucket** | **[HEAD 值區](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html)** | 用於判定值區是否存在且允許存取。 |

若要建立 IAM 政策：

1. 在 AWS 中，[前往 IAM 服務](https://console.aws.amazon.com/iam/home#/home)，方法是按一下 **服務** 功能表，然後輸入 IAM。
2. 一旦結果中顯示 IAM，請按一下。
3. 按一下頁面左側功能表中的政策略。
4. 按一下建立政策。
5. 在建立政策頁面中，按一下 JSON 索引標籤。
6. 選取文字欄位目前的所有內容並將其刪除。
7. 在文字欄位中，貼上以下 JSON 並用您的值區名稱取代 `MyBucketName`：
   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
               "s3:GetObject",
               "s3:ListBucket"
               ],
               "Resource": [
               "arn:aws:s3:::MyBucketName",
               "arn:aws:s3:::MyBucketName/*"
               ]
           }
       ]
   }
   ```
8. 按一下檢閱政策。
9. 在檢閱政策頁面上，為政策命名。例如：`qlik_amazon_s3`。
10. 按一下建立政策。

### 建立 IAM 角色

資訊備註

若要完成此步驟，您需要下列 AWS IAM 權限：`CreateRole` 和 `AttachRolePolicy`。請參閱 [Amazon 文件](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html)瞭解更多資訊。

如果您要建立多個 Amazon S3 整合，則需要為連接的每個整合完成此步驟。

1. 在 AWS 中，前往 [IAM 角色](https://console.aws.amazon.com/iam/home#/roles)頁面。
2. 按一下建立角色。
3. 在建立角色頁面上：
   1. 在選取受信任實體的類型區段中，按一下另一個 AWS 帳戶選項。

   2. 在帳戶 ID 欄位中，貼上 `338144066592`。

   3. 在選項區段中，選取需要外部 ID 核取方塊。

   4. 在顯示的外部 ID 欄位中，貼上 `qlik_connection_<tenant-id>` 並以您的租用戶 ID 取代 `<tenant-id>`。

      若要尋找您的租用戶 ID，請參閱[尋找租用戶資訊](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm)。

   5. 按一下下一步：權限。
4. 在附加權限頁面上：
   1. 搜尋您在[建立 IAM 政策](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating)中所建立的政策。
   2. 找到後，選取表格中該政策旁邊的方塊。
   3. 按一下下一步：標記。
5. 如果您想輸入任何標記，請在新增標記頁面上進行。否則，請按一下下一步：檢閱。
6. 在檢閱頁面上：
   1. 在角色名稱欄位中，貼上 `qlik_s3_<tenant-id>` 並以您的租用戶 ID 取代 `<tenant-id>`。

      若要尋找您的租用戶 ID，請參閱[尋找租用戶資訊](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm)。

   2. 在角色描述欄位中輸入描述。例如：`Qlik role for Amazon S3 integration.`

   3. 按一下建立角色。

### 定義搜尋模式

搜尋模式欄位定義了 Qlik 應用於選取和複寫檔案的搜尋條件。此欄位接受規則運算式，可用來納入單一檔案或多個檔案。

建立搜尋模式時，請記住以下幾點：

* 對單一表格納入多個檔案時，每個檔案應具有相同的標頭列值。
* 特殊字元 (例如句點 (`.`) ) 在規則運算式中具有特殊意義。為了精確比對，這需要進行逸出。例如：`.\`
* Qlik 對規則運算式使用 Python，其語法可能與其他變體有所不同。在儲存整合之前，請嘗試使用 [PyRegex](http://www.pyregex.com/) 測試您的運算式。
* 也支援 Parquet (`.parquet`) 和 Arvo (`.arvo`) 搜尋模式。
* 搜尋模式應該考慮檔案中的資料如何更新。請考慮這些範例：

| **情境** | 單一檔案，定期更新 | 多個檔案，每天產生 |
| --- | --- | --- |
| **如何進行更新** | 單一 JSONL 檔案會以新的和更新後的客戶資料定期更新。 | 每天會建立一個新的 CSV 檔案，其中包含新的和更新後的客戶資料。建立後，就不會更新舊檔案。 |
| **檔案名稱** | `customers.jsonl` | `customers-[STRING].csv`，其中 `[STRING]` 是唯一的隨機字串 |
| **搜尋模式** | 因為只會有一個檔案，所以您可以在 S3 值區中輸入該檔案的確切名稱：<br><br>```<br>customers\.jsonl<br>```<br><br>`customers\.jsonl`customers\.\.jsonl | 為了確保識別新的和更新後的檔案，您需要輸入搜尋模式，該模式會比對所有以 `customers` 開頭的檔案，而不管檔案名稱中的字串是什麼：<br><br>```<br>(customers-).*\.csv<br>```<br><br>`(customers-).*\.csv`((customers-)).\*\*\.\.csv |
| **相符** | `customer.jsonl`，確切 | <ul> <li><code>customers-reQDSwNG6U.csv</code> </li> <li><code>customers-xaPTXfN4tD.csv</code> </li> <li><code>customers-MBJMhCbNCp.csv</code> </li> <li>等。</li> </ul> |

### 檔案要求

| 第一列標頭 (僅限 CSV 檔案) | <ul> <li>每個檔案必須有包含欄名的首列標頭。任何檔案中的第一列都視為標頭列，並將這些值顯示為可供選取的欄。</li> <li>如果表格中包含多個檔案，則檔案的第一列標頭值必須相同。<span>Amazon S3</span> 整合允許您將多個檔案對應到單一目標表格。標頭列值用於決定表格的結構描述。為了獲得最佳結果，每個檔案都應具有相同的標頭列值。<p>這與設定多個表格不同。如需範例，請參閱<a href="https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Defining">定義搜尋模式</a>。</p></li> </ul> |
| --- | --- |
| 檔案類型 | <ul> <li>CSV (<code>.csv</code>)</li> <li>文字 (<code>.txt</code>)</li> <li>JSONL (<code>.jsonl</code>)</li> <li>Parquet (<code>.parquet</code>)</li> <li>Arvo (<code>.arvo</code>)<p>Arvo 檔案必須包含結構描述才能受到支援。</p></li> </ul> |
| 壓縮類型 | 這些檔案必須正確壓縮，否則解壓縮過程中會出現錯誤。<br><br><ul> <li>gzip 壓縮檔案 (<code>.gz</code>)</li> </ul> |
| 分隔符號 (僅限 CSV 檔案) | <ul> <li>逗號 (<code>,</code>)</li> <li>索引標籤 (<code>/t</code>)</li> <li>管道 (<code>\|</code>)</li> <li>分號 (<code>;</code>)</li> </ul> |
| 字元編碼 | UTF-8 (僅限 `.csv`、`.txt` 和 `.jsonl`)<br><br>資訊備註`.parquet` 和 `.arvo` 檔案是原始二進位檔案。 |

## 建立連線

如需詳細資訊，請參閱[連線到 SaaS 應用程式](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm)。

1. 填寫所需的連線屬性。

2. 在連線名稱中提供連線名稱。

3. 選取開啟連線中繼資料以在建立後定義連線的中繼資料。

4. 按一下建立。

連線設定

| 設定 | 描述 |
| --- | --- |
| 資料閘道 | 如您的使用情況有需要，選取 資料移動閘道。<br><br>資訊備註<br><br>此欄位無法用於 Qlik Talend Cloud 啟動器 訂閱，因為不支援 資料移動閘道。若您有另一個訂閱層級且不想使用 資料移動閘道，選取無。<br><br>如需關於 資料移動閘道 福利的資訊以及需要此項的使用案例，請參閱 [Qlik Data Gateway - Data Movement](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。 |
| 開始日期 | 以 `MM/DD/YYYY` 格式輸入資料必須從來源複寫到目標的日期。 |
| S3 值區 | S3 值區的名稱。 |
| AWS 帳戶 ID | 值區所在帳戶的 AWS 帳戶 ID。<br><br>您可以在 AWS 管理主控台的「帳戶」詳細資訊下找到您的 AWS 帳戶 ID。 |
| 搜尋模式 | 輸入要包含在表格中的檔案。您可以輸入單一檔案名稱或規則運算式。<br><br>範例：`users\*.csv``products\*.jsonl`。 |
| 目錄 | 將搜尋限制在此目錄路徑中。定義後，只會搜尋此位置的檔案，並選取符合搜尋模式的檔案。您無法使用規則運算式。<br><br>範例：csv-exports-folder 或 employee\_jsonl\_exports。 |
| 表格設定<br><br>指定要納入的檔案，以設定表格。<br><br>您可以設定多個表格。 |  |
| 表格名稱 | 表格名稱。<br><br>每個目標對於表格的命名方式都有自己的規則。例如，Amazon Redshift 表格名稱不能超過 127 個字元。 |
| 主要索引鍵 | 輸入主要索引鍵以識別唯一的列或記錄。當您輸入多個索引鍵時，請使用逗號分隔各個值。<br><br><ul><li>對於 CSV 檔案，輸入標頭欄位或欄名稱。</li><li>對於 JSONL 檔案，輸入屬性名稱或物件索引鍵。</li></ul><br><br>範例：id, name。 |
| 指定日期時間欄位 | 輸入表格中必須以日期時間 (而非字串) 顯示的值。<br><br>範例：created\_at, modified\_at。 |
| 分隔符號 | 從下拉式清單中選取分隔符號。 |