本頁面說明如何建立並啟動從 Amazon S3 移轉至 Cloud Storage 的移轉工作。
設定權限
建立轉移作業前,您必須先設定 Amazon S3 儲存桶的權限。詳情請參閱「設定來源存取權:Amazon S3」。
您也必須為下列Google Cloud 實體設定權限:
用於建立轉移作業的使用者帳戶。這是登入 Google Cloud 控制台的帳戶,或是在驗證 `gcloud` CLI 時指定的帳戶。使用者帳戶可以是一般使用者帳戶,也可以是使用者管理的服務帳戶。 | |
Google 代管的服務帳戶 (也稱為服務代理程式),由 Storage 移轉服務使用。這個帳戶通常會透過電子郵件地址識別,格式為 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com 。 |
如需操作說明,請參閱無代理程式轉移權限。
輸出選項
Storage 移轉服務提供多種將 S3 資料移轉至 Cloud Storage 的選項。
輸出選項 | 說明 |
---|---|
預設無代理程式 | 這個選項會使用由 S3 管理的無代理程式轉移作業。您需要支付 Amazon 的輸出費用。 請按照本頁的說明操作,使用這個選項。 |
CloudFront 發布 | 使用 Amazon CloudFront 分配做為輸出路徑。相較於直接從 S3 進行資料移轉,透過 CloudFront 進行資料移轉可能可享有較低的 AWS 出站費用。詳情請參閱 CloudFront 定價和 S3 外送費用。 請按照「透過 CloudFront 從 S3 轉移」一文中的操作說明,設定發布內容並建立轉移作業。 |
代管私人網路 | 透過 Google 管理的網路轉移資料。您不需要支付 S3 輸出費用,而是向Google Cloud支付每 GB 的費用。詳情請參閱「定價」頁面。您可能仍須支付 AWS 的作業費用 (例如 LIST 或 GET 呼叫)。詳情請參閱相關定價。所有專案透過代管私人網路進行的轉移作業,都會共用相同的頻寬。在使用量高峰期間,轉移作業可能會變慢。傳輸大型檔案的影響會比傳輸小型檔案來得大。 請按照本頁的說明操作,使用這個選項。在 Google Cloud 控制台或 REST API 的 managedPrivateNetwork 欄位中指定「Managed private network」選項。gcloud 命令列介面和用戶端程式庫不支援受管理的私人網路轉移作業。請參閱支援的區域。 |
由代理程式主導 | 適用於所有 S3 相容儲存空間,包括 Amazon S3。只要在可存取 S3 值區的機器上安裝代理程式軟體,即可控制網路路徑和頻寬。這個選項需要代理程式和代理程式集區。 如要使用這個選項,請按照「從 S3 相容來源轉移資料」一文的操作說明操作。 |
支援的地區
Storage 移轉服務支援下列 Amazon S3 區域:
af-south-1 ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ap-southeast-3 |
ap-southeast-4 ca-central-1 ca-west-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2
|
eu-west-3 il-central-1 me-central-1 me-south-1 sa-east-1 us-east-1 us-east-2 us-west-1 us-west-2
|
ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ca-central-1 ca-west-1 eu-central-1 eu-central-2 |
eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 us-east-1 us-east-2 us-west-1 us-west-2
|
轉移作業選項
下列 Storage 移轉服務功能可用於從 S3 移轉至 Cloud Storage
- 使用資訊清單轉移特定檔案
- 您可以傳遞檔案清單,讓 Storage 移轉服務採取行動。詳情請參閱「使用資訊清單轉移特定檔案或物件」。
- 依前置字串或上次修改時間篩選來源物件
-
您可以根據檔案名稱和路徑,或上次修改時間,選擇要將哪些物件納入或排除在移轉作業中。
如要瞭解前置字串篩選器,請參閱「前置字串篩選器」。
時間篩選器包括:
- 自上次修改後,經過的最短時間和最長時間。兩者都會接受以秒為單位的值,用於篩選在特定時間範圍內已修改或未修改的物件。
- 「上次修改時間晚於」和「上次修改日期早於」,兩者都接受 dateTime 值。
請注意,S3 轉移作業的時間篩選器會依據 AWS 的「上次修改時間」定義,也就是物件開始上傳的時間。由於物件必須上傳完成才能使用,因此您可能會發現上次修改時間符合篩選條件的物件,但仍在進行上傳。這些物件不會納入移轉工作。為避免發生任何問題,建議您採取下列做法:
- 請使用 [事件驅動轉移作業](/storage-transfer/docs/event-driven-aws),而非時間篩選器,以便在物件可用時轉移。
- 為避免在週期性轉移作業中遺漏物件,請將「上次修改時間」回溯期設為大於週期性時間表。舉例來說,如果工作每小時執行一次,回溯時間窗口為兩小時,則可提供緩衝區。
- 指定儲存空間級別
- 您可以指定要用於目的地值區的
Cloud Storage 儲存類別。請參閱
StorageClass
選項,瞭解 REST 詳細資訊,或在 Google Cloud CLI 中使用--custom-storage-class
標記。請注意,如果目的地值區已啟用 Autoclass,系統會忽略任何儲存空間級別設定。如果啟用自動調整級別功能,轉移至值區的物件一開始會設為 Standard 儲存空間。
- 保存中繼資料
-
從 S3 轉移檔案時,Storage 移轉服務可以選擇保留特定屬性做為自訂中繼資料。
如要進一步瞭解可保留哪些中繼資料,以及如何設定移轉作業,請參閱「 中繼資料保留」一文中的「從 Amazon S3 移轉至 Cloud Storage」一節。
- 事件導向轉移作業
- Storage 移轉服務可監聽傳送至 Amazon SQS 的 Amazon S3 事件通知,自動轉移在來源位置新增或更新的資料。詳情請參閱「事件導向移轉作業」。
- 記錄和監控
- 您可以在 Cloud Logging 和 Cloud Monitoring 中查看從 S3 進行的轉移作業。詳情請參閱 Storage 移轉服務的 Cloud Logging 和監控移轉工作。您也可以設定 Pub/Sub 通知。
建立轉移作業
Storage 移轉服務提供多種介面,可用於建立移轉作業。
請勿在轉移作業名稱中加入個人識別資訊 (PII) 或安全性資料等機密資訊。資源名稱可能會傳播至其他 Google Cloud 資源的名稱,並可能會公開給專案以外的 Google 內部系統。
Google Cloud 控制台
前往 Google Cloud 控制台的「Storage Transfer Service」頁面。
按一下「建立移轉工作」。系統會顯示「Create a transfer job」(建立移轉工作) 頁面。
在「Source type」(來源類型) 下方,選取「Amazon S3」。
在「目的地類型」中,選取「Google Cloud Storage」。
選取排程模式。批次轉移作業會依據一次性或排程執行。事件驅動移轉會持續監控來源,並在資料新增或修改時移轉資料。
如要設定以事件為依據的轉移作業,請按照「以事件為依據的轉移作業」中的操作說明進行。
點選「下一步」。
在「值區或資料夾名稱」欄位中,輸入來源值區名稱。
值區名稱即是在 AWS 管理主控台中顯示的名稱。
如果您使用 CloudFront 發布渠道從 S3 進行轉移,請在「CloudFront 網域」欄位中輸入發布渠道網域名稱。例如,
https://dy1h2n3l4ob56.cloudfront.net
。請參閱「透過 CloudFront 從 S3 轉移」一文,瞭解如何設定 CloudFront 發布端。如要為這項轉移作業使用代管的私人網路,請選取核取方塊。詳情請參閱「出口選項」。
選取 Amazon Web Services (AWS) 驗證方法。詳情請參閱「設定來源存取權:Amazon S3」。
存取金鑰:在「Access key ID」欄位中輸入存取金鑰,並在「Secret access key」欄位中輸入與存取金鑰相關聯的私密金鑰。
用於連結身分識別的 AWS 身分與存取權管理角色:在「AWS IAM role ARN」欄位中輸入 ARN,並使用以下語法:
arn:aws:iam::ACCOUNT:role/ROLE-NAME-WITH-PATH
其中:
ACCOUNT
:不含連字號的 AWS 帳戶 ID。ROLE-NAME-WITH-PATH
:AWS 角色名稱,包括路徑。
如要進一步瞭解 ARN,請參閱「IAM ARN」。
密鑰資源:選取這個選項,即可使用儲存在 Secret Manager 中的 Amazon 憑證。從清單中選取一個機密金鑰,或以
projects/PROJECT_NUMBER/secrets/SECRET_NAME
格式手動輸入。
如果這是事件驅動轉移,請輸入 Amazon SQS 佇列 ARN,格式如下:
arn:aws:sqs:us-east-1:1234567890:event-queue
- 您可以選擇依前置字元篩選物件或依上次修改日期篩選物件。如果您指定資料夾做為來源位置,前置字元篩選器會相對於該資料夾。舉例來說,如果來源是
my-test-bucket/path/
,則file
的包含篩選器會納入開頭為my-test-bucket/path/file
的所有檔案。 點選「下一步」。
在「Bucket or folder」欄位中輸入目的地值區和 (選用) 資料夾名稱,或按一下「Browse」,從目前專案中現有的值區清單中選取值區。如要建立新的值區,請按一下
「建立新的值區」。
點選「下一步」。
選擇轉移工作的設定。
在「Description」欄位中輸入轉移作業的說明。最佳做法是輸入有意義且不重複的說明,以便區分工作。
在「中繼資料選項」下方,選擇要使用預設選項,或按一下「查看並選取選項」,指定所有支援的中繼資料的值。詳情請參閱「中繼資料保留」一文。
在「何時覆寫」下方,選取下列其中一個選項:
如果不同:如果名稱相同的來源檔案具有不同的 ETag 或總和檢查碼值,則會覆寫目的地檔案。
一律:來源檔案的名稱與目的地檔案相同時,一律會覆寫目的地檔案,即使兩者為相同檔案亦然。
在「刪除時間」下方,選取下列任一選項:
一律不刪除:一律不要從來源或目的地刪除檔案。
轉移後刪除來源檔案:在檔案轉移至目的地後刪除來源檔案。如果來源檔案已存在目的地,系統就不會移轉該檔案,因此不會刪除來源檔案。
如果檔案未同時存在於來源,則將檔案從目的地中刪除:如果目的地 Cloud Storage 值區中的檔案未同時存在於來源,請從 Cloud Storage 值區中刪除檔案。
這個選項可確保目的地 Cloud Storage 值區與來源完全相符。
在「Notification options」下方,選取 Pub/Sub 主題和要通知的事件。詳情請參閱「Pub/Sub 通知」。
點選「下一步」。
選擇排程選項:
在「Run once」下拉式選單中,選取下列其中一個選項:
一次:從您選定的時間開始執行單一轉移作業。
每天執行:每天在您選取的時間執行一次轉移作業。
您可以視需要輸入結束日期,也可以將結束日期留空,讓轉移作業持續執行。
每週執行一次:每週執行一次轉移作業,並從您選定的時間開始。
按照自訂頻率執行:按照您選取的頻率執行移轉作業。您可以選擇以固定的小時、天或週間隔重複執行轉移作業。
您可以視需要輸入結束日期,也可以將結束日期留空,讓轉移作業持續執行。
在「Starting now」下拉式清單中,選取下列其中一個選項:
立即開始:點選「建立」後開始轉移。
Starting on:在您選取的日期和時間開始移轉。點選「日曆」,即可顯示日曆,選取開始日期。
如要建立轉移工作,請按一下「建立」。
gcloud CLI
如要建立新的轉移工作,請使用 gcloud transfer jobs create
指令。除非指定排程或 --do-not-run
,否則建立新工作會啟動指定的轉移作業。
gcloud CLI 不支援透過 CloudFront 或 Managed 私人網路進行轉移。
gcloud transfer jobs create \
s3://S3_BUCKET_NAME gs://STORAGE_BUCKET_NAME \
--source-creds-file="relative_path/to/creds.json"
其中:
S3_BUCKET_NAME 是這項轉移作業的資料來源。您可以選擇加入路徑:
s3://S3_BUCKET_NAME/S3_FOLDER_PATH
STORAGE_BUCKET_NAME 是轉移至其中的 Cloud Storage 值區。如要轉移至特定目錄,請指定
gs://STORAGE_BUCKET_NAME/STORAGE_FOLDER_PATH/
,包括結尾斜線。--source-creds-file
會指定本機上本機檔案的相對路徑,其中包含轉移來源的 AWS 憑證。內容必須採用以下 JSON 格式:{ "accessKeyId": string, "secretAccessKey": string }
其他選項包括:
--do-not-run
可防止 Storage 移轉服務在提交指令時執行工作。如要執行工作,請更新工作以新增排程,或使用jobs run
手動啟動。--manifest-file
會指定 Cloud Storage 中 CSV 檔案的路徑,其中包含要從來源轉移的檔案清單。如需瞭解資訊清單檔案格式,請參閱「使用資訊清單轉移特定檔案或物件」。工作資訊:您可以指定
--name
和--description
。時間表:指定
--schedule-starts
、--schedule-repeats-every
和--schedule-repeats-until
,或--do-not-run
。物件條件:使用條件判斷要轉移哪些物件。包括
--include-prefixes
和--exclude-prefixes
,以及--include-modified-[before | after]-[absolute | relative]
中的時間條件。如果您已指定來源資料夾,前置字串篩選器會相對於該資料夾。詳情請參閱「依前置字元篩選來源物件」。移轉選項:指定是否覆寫目的地檔案 (
--overwrite-when=different
或always
),以及是否在移轉期間或之後刪除特定檔案 (--delete-from=destination-if-unique
或source-after-transfer
);指定要保留哪些中繼資料值 (--preserve-metadata
);以及視需要在已移轉的物件上設定儲存類別 (--custom-storage-class
)。通知:使用
--notification-pubsub-topic
、--notification-event-types
和--notification-payload-format
設定轉移作業的 Pub/Sub 通知。Cloud Logging:使用
--log-actions
和--log-action-states
啟用 Cloud Logging。詳情請參閱「Storage 移轉服務的 Cloud Logging」。
如要查看所有選項,請執行 gcloud transfer jobs create --help
或參閱 gcloud
參考說明文件。
REST
以下範例說明如何透過 REST API 使用 Storage 移轉服務。
當您使用 Storage Transfer Service API 設定或編輯移轉工作時,時間必須為世界標準時間 (UTC)。如要進一步瞭解如何指定移轉工作時間表,請參閱「時間表」。
建立移轉工作時,請勿在 Amazon S3 值區來源名稱中加入 bucketName
的 s3://
前置字串。
無代理程式轉移
以下範例會使用標準無代理程式設定建立移轉工作。詳情請參閱 transferJobs.create 參考資料。
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
如需其他驗證選項,請參閱「設定來源存取權:Amazon S3」。
CloudFront 發布
如果您是透過 CloudFront 發布內容從 S3 進行轉移,請將發布內容網域名稱指定為 transferSpec.awsS3DataSource.cloudfrontDomain
欄位的值:
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
代管的私人網路
如要使用 Google 代管的私人網路從 S3 進行轉移,請指定 transferSpec.awsS3DataSource.managedPrivateNetwork
欄位:
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "managedPrivateNetwork": TRUE, "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
用戶端程式庫
下列範例說明如何透過 Go、Java、Node.js 和 Python 以程式化方式使用 Storage 移轉服務。
當您以程式化方式設定或編輯移轉工作時,系統時間必須為世界標準時間 (UTC)。如要進一步瞭解如何指定移轉工作時間表,請參閱「時間表」。
如要進一步瞭解 Storage 移轉服務用戶端程式庫,請參閱「Storage 移轉服務用戶端程式庫的使用說明」。
將資料從 Amazon S3 移轉至 Cloud Storage
在此範例中,您將瞭解如何將檔案從 Amazon S3 移至 Cloud Storage 值區。
建立移轉工作時,請勿在 Amazon S3 值區來源名稱中加入 bucketName
的 s3://
前置字串。
Storage 轉移服務用戶端程式庫不支援透過 CloudFront 或受管理的私人網路進行轉移。