Amazon S3
Amazon S3 連接器可提供 Amazon S3 儲存桶和物件的 SQL 存取權。
事前準備
使用 Amazon S3 連接器前,請先完成下列工作:
- 在 Google Cloud 專案中:
- 確認已設定網路連線。如要瞭解網路模式,請參閱「網路連線」。
- 將 roles/connectors.admin IAM 角色授予設定連線器的使用者。
- 將下列 IAM 角色授予要用於連接器的服務帳戶:
roles/secretmanager.viewer
roles/secretmanager.secretAccessor
服務帳戶是特殊的 Google 帳戶類型,主要用於代表需要驗證且必須取得授權才能存取 Google API 資料的非人類使用者。如果您沒有服務帳戶,請建立服務帳戶。詳情請參閱「建立服務帳戶」。
- 啟用下列服務:
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(Connectors API)
如要瞭解如何啟用服務,請參閱「啟用服務」。
如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。
設定連接器
連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連線,請按照下列步驟操作:
- 在 Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。
- 按一下「+ 建立新項目」開啟「建立連線」頁面。
- 在「位置」部分中,選擇連線位置。
- 區域:從下拉式清單中選取位置。
連接器支援的地區包括:
如需所有支援的地區清單,請參閱「位置」一文。
- 點選「下一步」。
- 區域:從下拉式清單中選取位置。
- 在「連線詳細資料」部分,完成下列步驟:
- 連接器:從可用連接器的下拉式清單中選取「Amazon S3」。
- 連接器版本:從可用版本的下拉式清單中選取連接器版本。
- 在「連線名稱」欄位中,輸入連線執行個體的名稱。
連線名稱必須符合下列條件:
- 連線名稱可使用英文字母、數字或連字號。
- 字母必須為小寫。
- 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
- 連結名稱不得超過 49 個字元。
- 視需要輸入連線執行個體的「Description」(說明)。
- 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為
Error
。 - 服務帳戶:選取具備必要角色的服務帳戶。
- 視需要設定「連線節點設定」:
- 節點數量下限:輸入連線節點數量下限。
- 節點數量上限:輸入連線節點數量上限。
節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連接器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。
- AWS 區域:代管 Amazon S3 執行個體的區域
- (選用) 按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
- 點選「下一步」。
- 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。
- 目的地類型:選取目的地類型。
- 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
- 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。
如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。
如要輸入其他目的地,請按一下「+新增目的地」。
- 點選「下一步」。
- 目的地類型:選取目的地類型。
-
在「Authentication」(驗證) 部分中,輸入驗證詳細資料。
- 選取「驗證類型」並輸入相關詳細資料。
Amazon S3 連線支援下列驗證類型:
- 根憑證
- AWS IAM 角色
- AWS 臨時憑證
- 點選「下一步」。
如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。
- 選取「驗證類型」並輸入相關詳細資料。
- 檢查:檢查連線和驗證詳細資料。
- 點選「建立」。
設定驗證機制
根據要使用的驗證方式輸入詳細資料。
-
根憑證
使用帳戶根憑證進行驗證。
- AWS 存取金鑰:根使用者的存取金鑰
- AWS 存取密鑰:根使用者的密鑰
-
AWS IAM 角色
如要使用 AWS IAM 角色進行驗證,
- AWS 存取金鑰:IAM 使用者的存取金鑰,用於擔任角色
- AWS 存取密鑰:IAM 使用者的私密金鑰,用於擔任角色
- AWS 角色 ARN:指定要用於驗證的角色 ARN。系統只會擷取指定角色的憑證。
- AWS 外部 ID:只有在您擔任其他帳戶中的角色時才需要。
-
AWS 臨時憑證
如要使用臨時憑證進行驗證,
- AWS 存取金鑰:IAM 使用者的存取金鑰,用於擔任角色
- AWS 存取密鑰:IAM 使用者的私密金鑰,用於擔任角色
- AWS 工作階段權杖:這是與臨時憑證一併產生的權杖。
- AWS 角色 ARN:指定要用於驗證的角色 ARN。系統只會擷取指定角色的憑證。
- AWS 外部 ID:只有在您擔任其他帳戶中的角色時才需要。
如要瞭解如何設定 AWS 帳戶,請參閱「設定 Amazon S3」。 如要瞭解如何建立 S3 值區,請參閱「建立 S3 值區」。請與 AWS 管理員聯絡,在 AWS 帳戶中建立 AWS IAM 角色憑證或 AWS 臨時憑證。
連線設定範例
本節列出建立 Amazon S3 連線時設定的各個欄位範例值。
根憑證連線類型
欄位名稱 | 詳細資料 |
---|---|
位置 | europe-west1 |
連接器 | Amazon S3 |
連接器版本 | 1 |
連線名稱 | aws-s3 |
說明 | aws-s3 |
服務帳戶 | SERVICE_ACCOUNT_NAME@serviceaccount |
AWS 區域 | 北維吉尼亞州 |
節點數量下限 | 2 |
節點數量上限 | 50 |
根憑證 | 是 |
AWS 存取金鑰 | AWS_ACCESS_KEY |
AWS 存取密鑰 | AWS_ACCESS_SECRET |
密鑰版本 | 1 |
AWS IAM 角色連線類型
欄位名稱 | 詳細資料 |
---|---|
位置 | europe-west1 |
連接器 | Amazon S3 |
連接器版本 | 1 |
連線名稱 | aws-s3 |
說明 | aws-s3 |
服務帳戶 | SERVICE_ACCOUNT_NAME@serviceaccount |
AWS 區域 | 北維吉尼亞州 |
節點數量下限 | 2 |
節點數量上限 | 50 |
AWS IAM 角色 | 是 |
AWS 存取金鑰 | AWS_ACCESS_KEY |
AWS 存取密鑰 | AWS_ACCESS_SECRET |
密鑰版本 | 1 |
AWS 臨時憑證連線類型
欄位名稱 | 詳細資料 |
---|---|
位置 | europe-west1 |
連接器 | Amazon S3 |
連接器版本 | 1 |
連線名稱 | aws-s3 |
說明 | aws-s3 |
服務帳戶 | SERVICE_ACCOUNT_NAME@serviceaccount |
AWS 區域 | 北維吉尼亞州 |
節點數量下限 | 2 |
節點數量上限 | 50 |
AWS 臨時憑證 | 是 |
AWS 存取金鑰 | AWS_ACCESS_KEY |
AWS 存取密鑰 | AWS_ACCESS_SECRET |
密鑰版本 | 1 |
AWS 工作階段權杖 | AWS_SESSION_TOKEN |
實體、作業和動作
所有整合連接器都會為所連應用程式的物件提供抽象層。您只能透過這個抽象化程序存取應用程式的物件。抽象化會以實體、作業和動作的形式呈現。
- 實體: 實體可以視為已連結應用程式或服務中的物件,或是屬性集合。實體的定義因連接器而異。舉例來說,在資料庫連接器中,資料表是實體;在檔案伺服器連接器中,資料夾是實體;在訊息系統連接器中,佇列是實體。
不過,連接器可能不支援或沒有任何實體,在這種情況下,
Entities
清單會是空白。 - 作業: 作業是指您可以在實體上執行的活動。您可以對實體執行下列任一操作:
從可用清單中選取實體,系統會產生該實體可用的作業清單。如需作業的詳細說明,請參閱 Connectors 工作的實體作業。 不過,如果連接器不支援任何實體作業,系統就不會在
Operations
清單中列出這些不支援的作業。 - 動作: 動作是透過連接器介面提供給整合的第一類函式。動作可讓您變更一或多個實體,且因連接器而異。一般來說,動作會有一些輸入參數和輸出參數。不過,連接器可能不支援任何動作,此時
Actions
清單會是空白。
動作
本節列出連接器支援的部分動作。如要瞭解如何設定動作,請參閱「動作範例」。
CopyObject 動作
這項動作可讓您將物件從一個值區複製到另一個值區,或複製到同一個值區。
CopyObject 動作的輸入參數
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
BucketSource | 字串 | 是 | 要從中複製物件的值區名稱。 |
ObjectSource | 物件 | 是 | 要複製的物件名稱。 |
BucketDestination | 字串 | 是 | 要將物件複製到的值區名稱。 |
ObjectDestination | 字串 | 否 | 目標值區中的物件名稱。如未指定,名稱會與原始名稱相同。 |
CopyObject 動作的輸出參數
如果複製成功,這項動作會傳回狀態 200 (OK)。
如要瞭解如何設定 CopyObject
動作,請參閱動作範例。
DownloadObjects 動作
這項動作會從 bucket 中取得更多物件。
DownloadObjects 動作的輸入參數
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
值區 | 字串 | 是 | 包含要下載物件的值區名稱。 |
物件 | 字串 | 否 | 要下載的物件名稱。如未指定,系統會下載指定 bucket 中的所有物件。 |
HasBytes | 布林值 | 是 | 指定是否應將內容下載為 Base64 編碼的字串。 |
UpdatedStartDate | 日期時間 | 否 | 下載物件的時間範圍開始日期。如未指定,系統會從最舊的物件開始下載,直到 UpdatedEndDate 為止。 |
UpdatedEndDate | 日期時間 | 否 | 下載物件的時間範圍結束日期。如未指定,系統會從指定的 UpdatedStartDate 下載物件,直到當天為止。 |
DownloadObjects 動作的輸出參數
如果下載成功,這項動作會傳回狀態 200 (OK)。
如要瞭解如何設定 DownloadObjects
動作,請參閱動作範例。
UploadObject 動作
這項動作可讓您將物件上傳至 bucket。
UploadObject 動作的輸入參數
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
值區 | 字串 | 是 | 要上傳物件的值區名稱。 |
ContentBytes | 字串 | 否 | 要上傳為檔案的位元組內容。 |
HasBytes | 布林值 | 是 | 指定是否應將內容上傳為 Base64 編碼的字串。 |
AccessPolicy | 字串 | 否 | 這個物件的存取權政策。允許的值為 PRIVATE、ANONREAD、ANONREADWRITE 和 AUTHREAD。預設值為 PRIVATE。 |
內容 | 字串 | 否 | 要上傳的內容。 |
FileName | 字串 | 否 | 要上傳的檔案名稱。指定 FileContent 參數時,必須提供這個值。 |
UploadObject 動作的輸出參數
如果物件上傳成功,這項動作會傳回狀態 200 (OK)。
如要瞭解如何設定 UploadObject
動作,請參閱動作範例。
DeleteObject 動作
這項操作可讓您從值區刪除物件。
DeleteObject 動作的輸入參數
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
值區 | 字串 | 是 | 要刪除的物件所在的值區名稱。 |
物件 | 字串 | 是 | 要刪除的物件名稱。 |
DeleteObject 動作的輸出參數
如果刪除作業成功,這項動作會傳回狀態 200 (OK)。
如要瞭解如何設定 DeleteObject
動作,請參閱動作範例。
MoveObject 動作
這項動作可讓使用者將特定值區的現有物件移至其他值區或同一值區。
MoveObject 動作的輸入參數
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
BucketSource | 字串 | 是 | 要移動的物件所在來源值區的名稱。 |
ObjectSource | 字串 | 是 | 要移動的物件名稱。 |
BucketDestination | 字串 | 是 | 物件應移至的目的地 bucket 名稱。 |
ObjectDestination | 字串 | 否 | 目標值區中的物件名稱。如未指定,則會保留原始名稱。 |
MoveObject 動作的輸出參數
如果移動作業成功,這項動作會傳回狀態 200 (OK)。
如要瞭解如何設定 MoveObject
動作,請參閱動作範例。
PutBucketAcl 動作
這項動作可讓您更新值區的存取控制清單 (ACL)。
PutBucketAcl 動作的輸入參數
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
值區 | 字串 | 是 | 要套用 ACL 的值區名稱。 |
ACL | 字串 | 是 | 要套用至 bucket 的存取層級。 |
PutBucketAcl 動作的輸出參數
如果 bucket ACL 更新成功,這項動作會傳回狀態 200 (OK)。
如要瞭解如何設定 PutBucketAcl
動作,請參閱動作範例。
PutObjectAcl 動作
這項動作可讓您更新值區中物件的存取控制清單 (ACL)。
PutObjectAcl 動作的輸入參數
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
值區 | 字串 | 是 | 物件所在的值區名稱。 |
ACL | 字串 | 是 | 要套用至物件的存取層級。 |
顏色釋義 | 字串 | 是 | 要套用 ACL 的物件名稱。 |
PutObjectAcl 動作的輸出參數
如果物件 ACL 更新成功,這項動作會傳回狀態 200 (OK)。
如要瞭解如何設定 PutObjectAcl
動作,請參閱動作範例。
動作範例
本節說明如何在這個連接器中執行部分動作。
範例 - 複製物件
這個範例會將物件從一個 bucket 複製到另一個 bucket。
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
CopyObject
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "BucketSource": "aws-s3-bucket-source", "ObjectSource": "pic.jpg", "BucketDestination": "aws-s3-bucket-destination", "ObjectDestination": "new_pic.jpg" }
如果動作成功,CopyObject
工作項目的 connectorOutputPayload
回應參數會包含類似下列內容的值:
[{ "Status": "Success" }]
範例 - 下載物件
這個範例會從指定 bucket 下載物件。
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
DownloadObjects
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Bucket": "aws-s3-bucket-source", "HasBytes": true }
如果動作成功,DownloadObjects
工作項目的 connectorOutputPayload
回應參數會包含類似下列內容的值:
[{ "Success": "True", "RemoteFile": "prefix1%2Faws-s3-bucket-source%2Finventory-test-1%2F2023-09-10T01-00Z%2Fmanifest.json", "ContentBytes": "ewogICJzb3VyY2VCdWNrZXQiIDogImF3cy1zMy1idWNrZXQtYmNvbmUiLAogICJnOK" }, { "Success": "True", "RemoteFile": "upload1.txt", "ContentBytes": "VGhpcyBpcyBhIHRlc3RpbmcgZmlsZQ==" }]
範例 - 上傳物件
這個範例會將物件上傳至指定值區。
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
UploadObject
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Bucket": "aws-s3-bucket-source", "FileName": "upload_1.txt", "Content": "This is a testing file", "AccessPolicy": "PUBLIC" }
如果動作成功,UploadObject
工作項目的 connectorOutputPayload
回應參數會包含類似下列內容的值:
[{ "Status": "success", "bucket": "aws-s3-bucket-source", "rss:title": "Object 'upload_1.txt' was created in the bucket: aws-s3-bucket-source", "object": "upload_1.txt" }]
範例 - 刪除物件
這個範例會從指定值區刪除物件。
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
DeleteObject
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Bucket": "aws-s3-bucket-source", "Object": "abc.png" }
如果動作成功,DeleteObject
工作項目的 connectorOutputPayload
回應參數會包含類似下列內容的值:
[{ "Status": "Success" }]
範例 - 移動物件
這個範例會將物件從一個值區移至另一個值區。
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
MoveObject
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "BucketSource": "aws-s3-bucket-source", "ObjectSource": "abc.png", "BucketDestination": "aws-s3-bucket-destination", "ObjectDestination": "moved.png" }
如果動作成功,MoveObject
工作項目的 connectorOutputPayload
回應參數會包含類似下列內容的值:
[{ "Status": "Success" }]
範例 - 更新 Bucket 的 ACL
這個範例會更新 bucket 的存取權控管權限。
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
PutBucketAcl
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "BucketSource": "aws-s3-bucket-source", "ACL": "public-read" }
如果動作成功,PutBucketAcl
工作項目的 connectorOutputPayload
回應參數會包含類似下列內容的值:
[{ "Status": "Success" }]
範例 - 更新物件的 ACL
這個範例會更新 bucket 中物件的存取控制權限。
- 在「
Configure connector task
」對話方塊中,按一下Actions
。 - 選取
PutObjectAcl
動作,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Bucket": "aws-s3-bucket-source", "ACL": "aws-exec-read", "Key": "AWS_S3_BusinessCase_V2.xlsx" }
如果動作成功,PutObjectAcl
工作項目的 connectorOutputPayload
回應參數會包含類似下列內容的值:
[{ "Status": "Success" }]
實體作業範例
本節說明如何使用這個連接器執行部分實體作業。
範例 - 列出所有物件的中繼資料
這個範例會擷取 Object
實體中所有物件的中繼資料。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Object
。 - 選取「
List
」作業,然後按一下「完成」。 - (選用) 在「連結器」工作的「工作輸入」部分,您可以指定篩選子句,篩選結果集。
請一律在單引號 (') 內指定篩選子句值,例如
Bucket='test-bucket'
。您也可以使用邏輯運算子指定多個篩選條件。例如:Bucket='test-bucket' and OwnerId='b1ecc809ad8467088afb'
。
範例 - 取得 bucket 的中繼資料
這個範例會從 Bucket
實體取得具有指定 ID 的 bucket 中繼資料。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Bucket
。 - 選取「
Get
」作業,然後按一下「完成」。 - 在「連線器」工作的「工作輸入」部分,按一下「EntityId」,然後在「預設值」欄位中輸入
demo_replication
。其中
demo_replication
是Bucket
實體中的專屬 bucket ID。
範例 - 建立 bucket
這個範例會在 Bucket
實體中建立 bucket。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Bucket
。 - 選取「
Create
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Bucket": "Demo1697528098686" }
如果整合成功,連接器工作的
connectorOutputPayload
欄位會包含類似下列內容的值:[{ "Bucket": "Demo1697528098686" }]
範例 - 刪除值區
這個範例會刪除 Bucket
實體中具有指定 ID 的 bucket。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取Bucket
。 - 選取「
Delete
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下「entityId」,然後在「Default Value」(預設值) 欄位中輸入
demo1697528098686
。
在整合中運用 Amazon S3 連線
建立連線後,Apigee Integration 和 Application Integration 都會提供該連線。您可以在整合中透過「連接器」工作使用連線。
- 如要瞭解如何在 Apigee Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
- 如要瞭解如何在 Application Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。