Storage 移轉服務可以監聽 AWS 中的事件通知,自動將來源位置新增或更新的資料移轉至 Cloud Storage bucket。進一步瞭解事件導向移轉作業的優點。
事件驅動型轉移作業會監聽傳送至 Amazon SQS 的 Amazon S3 事件通知,瞭解來源值區中的物件何時經過修改或新增。系統不會偵測物件刪除作業;在來源刪除物件不會一併刪除目的地值區中的相關聯物件。
事件驅動型移轉一律會使用 Cloud Storage 值區做為目的地。
事前準備
按照操作說明,在目標 Cloud Storage 值區中授予必要權限:
建立 SQS 佇列
在 AWS 控制台中,前往「Simple Queue Service」(簡單佇列服務) 頁面。
按一下「建立佇列」。
輸入這個佇列的名稱。
在「存取權政策」部分,選取「進階」。系統會顯示 JSON 物件:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__owner_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws:sqs:us-west-2:01234567890:test" } ] }
每個專案的
AWS
和Resource
值都不相同。將顯示的 JSON 中的
AWS
和Resource
特定值複製到下列 JSON 片段:{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "RESOURCE", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS" }, "ArnLike": { "aws:SourceArn": "S3_BUCKET_ARN" } } } ] }
上述 JSON 中的預留位置值採用下列格式:
- AWS 是代表 Amazon Web Services 專案的數值。例如:
"aws:SourceAccount": "1234567890"
。 - RESOURCE 是用來識別這個佇列的 Amazon 資源編號 (ARN)。例如:
"Resource": "arn:aws:sqs:us-west-2:01234567890:test"
。 - S3_BUCKET_ARN 是用來識別來源值區的 ARN。例如:
"aws:SourceArn": "arn:aws:s3:::example-aws-bucket"
。您可以在 AWS 控制台的 bucket 詳細資料頁面中,從「Properties」分頁找到 bucket 的 ARN。
- AWS 是代表 Amazon Web Services 專案的數值。例如:
將「存取權政策」部分顯示的 JSON 替換為上述更新後的 JSON。
按一下「建立佇列」。
完成後,請記下佇列的 Amazon Resource Name (ARN)。ARN 的格式如下:
arn:aws:sqs:us-east-1:1234567890:event-queue"
啟用 S3 值區的通知
在 AWS 控制台中,前往「S3」S3頁面。
在「Buckets」(值區) 清單中,選取來源值區。
選取「屬性」分頁標籤。
在「活動通知」部分,按一下「建立活動通知」。
指定這項活動的名稱。
在「事件類型」部分,選取「所有物件建立事件」。
在「目的地」中選取「SQS 佇列」,然後選取您為這項轉移作業建立的佇列。
按一下 [儲存變更]。
設定權限
請按照「設定來源存取權:Amazon S3」一文中的操作說明,建立存取金鑰 ID 和私密金鑰,或是 Federated Identity 角色。
將自訂權限 JSON 換成下列內容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME", "arn:aws:s3:::S3_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
建立後,請記下下列資訊:
- 記下使用者的存取金鑰 ID 和密鑰。
- 如果是聯合身分角色,請記下 Amazon Resource Name (ARN),格式為
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
。
建立移轉工作
您可以使用 REST API 或 Google Cloud 控制台建立以事件為準的轉移作業。
Cloud 控制台
前往 Google Cloud 控制台的「建立移轉工作」頁面。
選取「Amazon S3」做為來源類型,並選取「Cloud Storage」做為目的地。
在「Scheduling mode」中選取「Event-driven」,然後按一下「Next step」。
輸入 S3 bucket 名稱。值區名稱即是在 AWS 管理主控台中顯示的名稱。例如:
my-aws-bucket
。選取驗證方式,然後輸入您在上一個部分建立並記錄的資訊。
輸入您先前建立的 Amazon SQS 佇列 ARN。格式如下:
arn:aws:sqs:us-east-1:1234567890:event-queue"
視需要定義篩選器,然後按一下「下一步」。
選取目標 Cloud Storage 值區和路徑 (選用)。
視需要輸入轉移作業的開始和結束時間。如果未指定時間,轉移作業會立即開始,並持續執行,直到手動停止為止。
指定任何轉移選項。詳情請參閱「建立轉移作業」頁面。
點選「建立」。
建立完成後,移轉工作就會開始執行,事件監聽器則會等待 SQS 佇列的通知。工作詳細資料頁面每小時會顯示一項作業,並列出每項工作傳輸的資料詳細資料。
REST
如要使用 REST API 建立事件驅動的轉移作業,請將下列 JSON 物件傳送至 transferJobs.create 端點:
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "awsS3DataSource" { "bucketName": "AWS_SOURCE_NAME", "roleArn": "arn:aws:iam::1234567891011:role/role_for_federated_auth" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "arn:aws:sqs:us-east-1:1234567891011:s3-notification-queue", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
eventStreamStartTime
和 eventStreamExpirationTime
為選用欄位。如果省略開始時間,系統會立即開始轉移;如果省略結束時間,系統會持續轉移,直到手動停止為止。
用戶端程式庫
Go
如要瞭解如何安裝及使用 Storage 移轉服務的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Storage 移轉服務 Go API 參考說明文件。
如要向 Storage 移轉服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Storage 移轉服務的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Storage 移轉服務 Java API 參考說明文件。
如要向 Storage 移轉服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Storage 移轉服務的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Storage 移轉服務 Node.js API 參考說明文件。
如要向 Storage 移轉服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Storage 移轉服務的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Storage 移轉服務 Python API 參考說明文件。
如要向 Storage 移轉服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。