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)

      如要瞭解如何啟用服務,請參閱「啟用服務」。

    如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。

設定連接器

連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連線,請按照下列步驟操作:

  1. Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。

    前往「連線」頁面

  2. 按一下「+ 建立新項目」開啟「建立連線」頁面。
  3. 在「位置」部分中,選擇連線位置。
    1. 區域:從下拉式清單中選取位置。

      連接器支援的地區包括:

      如需所有支援的地區清單,請參閱「位置」一文。

    2. 點選「下一步」
  4. 在「連線詳細資料」部分,完成下列步驟:
    1. 連接器:從可用連接器的下拉式清單中選取「Amazon S3」
    2. 連接器版本:從可用版本的下拉式清單中選取連接器版本。
    3. 在「連線名稱」欄位中,輸入連線執行個體的名稱。

      連線名稱必須符合下列條件:

      • 連線名稱可使用英文字母、數字或連字號。
      • 字母必須為小寫。
      • 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
      • 連結名稱不得超過 49 個字元。
    4. 視需要輸入連線執行個體的「Description」(說明)
    5. 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為 Error
    6. 服務帳戶:選取具備必要角色的服務帳戶。
    7. 視需要設定「連線節點設定」

      • 節點數量下限:輸入連線節點數量下限。
      • 節點數量上限:輸入連線節點數量上限。

      節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連接器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。

    8. AWS 區域:代管 Amazon S3 執行個體的區域
    9. (選用) 按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
    10. 點選「下一步」
  5. 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。
    1. 目的地類型:選取目的地類型
      • 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
      • 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。

      如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。

      如要輸入其他目的地,請按一下「+新增目的地」

    2. 點選「下一步」
  6. 在「Authentication」(驗證) 部分中,輸入驗證詳細資料。
    1. 選取「驗證類型」並輸入相關詳細資料。

      Amazon S3 連線支援下列驗證類型:

      • 根憑證
      • AWS IAM 角色
      • AWS 臨時憑證
    2. 如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。

    3. 點選「下一步」
  7. 檢查:檢查連線和驗證詳細資料。
  8. 點選「建立」

設定驗證機制

根據要使用的驗證方式輸入詳細資料。

  • 根憑證

    使用帳戶根憑證進行驗證。

    • 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。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 CopyObject 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "BucketSource": "aws-s3-bucket-source",
    "ObjectSource": "pic.jpg",
    "BucketDestination": "aws-s3-bucket-destination",
    "ObjectDestination": "new_pic.jpg"
    }
  4. 如果動作成功,CopyObject 工作項目的 connectorOutputPayload 回應參數會包含類似下列內容的值:

    [{
    "Status": "Success"
    }]

範例 - 下載物件

這個範例會從指定 bucket 下載物件。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 DownloadObjects 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "Bucket": "aws-s3-bucket-source",
    "HasBytes": true
    }
  4. 如果動作成功,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=="
    }]

範例 - 上傳物件

這個範例會將物件上傳至指定值區。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 UploadObject 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "Bucket": "aws-s3-bucket-source",
    "FileName": "upload_1.txt",
    "Content": "This is a testing file",
    "AccessPolicy": "PUBLIC"
    }
  4. 如果動作成功,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"
    }]

範例 - 刪除物件

這個範例會從指定值區刪除物件。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 DeleteObject 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "Bucket": "aws-s3-bucket-source",
    "Object": "abc.png"
    }
  4. 如果動作成功,DeleteObject 工作項目的 connectorOutputPayload 回應參數會包含類似下列內容的值:

    [{
    "Status": "Success"
    }]

範例 - 移動物件

這個範例會將物件從一個值區移至另一個值區。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 MoveObject 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "BucketSource": "aws-s3-bucket-source",
    "ObjectSource": "abc.png",
    "BucketDestination": "aws-s3-bucket-destination",
    "ObjectDestination": "moved.png"
    }
  4. 如果動作成功,MoveObject 工作項目的 connectorOutputPayload 回應參數會包含類似下列內容的值:

    [{
    "Status": "Success"
    }]

範例 - 更新 Bucket 的 ACL

這個範例會更新 bucket 的存取權控管權限。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 PutBucketAcl 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "BucketSource": "aws-s3-bucket-source",
    "ACL": "public-read"
    }
  4. 如果動作成功,PutBucketAcl 工作項目的 connectorOutputPayload 回應參數會包含類似下列內容的值:

    [{
    "Status": "Success"
    }]

範例 - 更新物件的 ACL

這個範例會更新 bucket 中物件的存取控制權限。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 PutObjectAcl 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "Bucket": "aws-s3-bucket-source",
    "ACL": "aws-exec-read",
    "Key": "AWS_S3_BusinessCase_V2.xlsx"
    }
  4. 如果動作成功,PutObjectAcl 工作項目的 connectorOutputPayload 回應參數會包含類似下列內容的值:

    [{
    "Status": "Success"
    }]

實體作業範例

本節說明如何使用這個連接器執行部分實體作業。

範例 - 列出所有物件的中繼資料

這個範例會擷取 Object 實體中所有物件的中繼資料。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Object
  3. 選取「List」作業,然後按一下「完成」
  4. (選用) 在「連結器」工作的「工作輸入」部分,您可以指定篩選子句,篩選結果集。 請一律在單引號 (') 內指定篩選子句值,例如 Bucket='test-bucket'。您也可以使用邏輯運算子指定多個篩選條件。例如:Bucket='test-bucket' and OwnerId='b1ecc809ad8467088afb'

範例 - 取得 bucket 的中繼資料

這個範例會從 Bucket 實體取得具有指定 ID 的 bucket 中繼資料。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Bucket
  3. 選取「Get」作業,然後按一下「完成」
  4. 在「連線器」工作的「工作輸入」部分,按一下「EntityId」,然後在「預設值」欄位中輸入 demo_replication

    其中 demo_replicationBucket 實體中的專屬 bucket ID。

範例 - 建立 bucket

這個範例會在 Bucket 實體中建立 bucket。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Bucket
  3. 選取「Create」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
    "Bucket": "Demo1697528098686"
    }

    如果整合成功,連接器工作的 connectorOutputPayload 欄位會包含類似下列內容的值:

    [{
    "Bucket": "Demo1697528098686"
    }]

範例 - 刪除值區

這個範例會刪除 Bucket 實體中具有指定 ID 的 bucket。

  1. 在「Configure connector task」對話方塊中,按一下 Entities
  2. Entity 清單中選取 Bucket
  3. 選取「Delete」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下「entityId」,然後在「Default Value」(預設值) 欄位中輸入 demo1697528098686

在整合中運用 Amazon S3 連線

建立連線後,Apigee Integration 和 Application Integration 都會提供該連線。您可以在整合中透過「連接器」工作使用連線。

  • 如要瞭解如何在 Apigee Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
  • 如要瞭解如何在 Application Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。

向 Google Cloud 社群尋求協助

如要發布問題及討論這個連接器,請前往 Cloud 論壇的 Google Cloud 社群。

後續步驟