本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學:以不同的方式將資料從 Amazon S3 傳輸至 Amazon S3AWS 帳戶
您可以使用AWS DataSync,在屬於不同的 Amazon S3 儲存貯體之間移動資料AWS 帳戶。
重要
AWS 帳戶使用本教學中的各種方法複製資料僅適用於 Amazon S3。
概要
在本教學中,您將了解AWS Identity and Access Management (IAM) 和AWS Command Line Interface (AWS CLI) 如何協助您建立將資料從 Amazon S3 傳輸到另一個 S3 儲存貯體的DataSync任務AWS 帳戶。
提示
如果您的 S3 儲存貯體也位於不同的位置,請遵循本教學AWS 區域。除了一些額外的步驟外,該過程大多是相同的。但是請記住,這DataSync並不支援這些類型的移轉功能,預設為停用的區域。
以下是這種情況可能是什麼樣子:
-
帳戶 A:AWS 帳戶用於管理您要複製資料的目的地 S3 儲存貯體。
-
帳戶 B:AWS 帳戶用於管理您要複製資料複製資料的目的地 S3 儲存貯體。
先決條件
在開始 IAM 工作以促進跨帳戶轉移之前,如果尚未執行以下操作:
-
決定要複製的物件數目。使用 Amazon S3 儲存鏡頭來確定儲存貯體中有多少物件。
-
設定AWS CLI帳戶 A。您需要在帳戶 B 中建立 S3 儲存貯體的DataSync目標位置。AWS CLI
步驟 1:DataSync在帳戶 A 中建立的 IAM 角色
您需要DataSync授予您帳戶 B 中 S3 儲存貯體的寫入許可。
當您為值區建立位置時,DataSync可以自動建立並扮演具有存取該值區之正確權限的角色。由於跨帳戶轉移,因此必須手動建立角色。
如需詳細資訊,請參閱《IAM 使用者指南》中的〈為AWS 服務 (主控台) 建立角色〉。
建立 IAM 角色
建立DataSync身為受信任實體的角色。
建立 IAM 角色
AWS Management Console使用帳戶 A 登錄。
前往網址 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽窗格的 [存取管理] 下,選擇 [角色],然後選擇 [建立角色]。
-
在 [選取信任的實體] 頁面上,針對 [信任的實體類型] 選擇AWS 服務。
-
對於 [使用案例],請DataSync在下拉式清單中選擇並選取DataSync。選擇 下一步。
-
在 Add permissions (新增許可) 頁面上,選擇 Next (下一步)。
-
為您的角色命名,然後選擇 [建立角色]。
將自訂政策連接至 IAM 角色
IAM 角色需要允許DataSync寫入帳戶 B 中的 S3 儲存貯體的政策。
將自訂政策連接至 IAM 角色
在 IAM 主控台的 [角色] 頁面上,搜尋剛建立的角色,然後選擇其名稱。
在角色的詳細資訊頁面上選擇「許可」標籤。選擇新增權限,然後選擇建立內嵌政策
-
選擇 JSON 索引標籤,然後執行下列動作:
將下列 JSON 貼入政策編輯器中:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::
account-b-bucket
" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObjectTagging", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::account-b-bucket
/*" } ] }
以帳戶 B 中的 S3 儲存貯體之名稱取代。account-b-bucket
-
選擇 Review policy (檢閱政策)。
-
為您的原則命名,然後選擇 [建立原則]。
步驟 2:停用帳戶 B 中 S3 儲存貯體的 ACL
複製到 S3 儲存貯體的所有資料必須屬於帳戶 B。若要確保帳戶 B 是資料的擁有者,請停用儲存貯體的存取控制清單 (ACL)。如需詳細資訊,請參閱《Simple Storage Service (Amazon S3) 使用者指南》中的控制物件的所有權並停用儲存貯體的 ACL。
停用 S3 儲存貯體的 ACL
-
在中AWS Management Console,切換至帳戶 B。
請在 https://console.aws.amazon.com/s3/
開啟 Amazon Simple Storage Service (Amazon S3) 主控台。 -
在左側導覽窗格中,選擇 Buckets (儲存貯體)。
-
在 [儲存貯體] 清單中,選擇要傳輸資料的 S3 儲存貯體。
-
在值區的詳細資訊頁面上,選擇 [權限] 索引標籤。
-
在 Object Ownership (物件擁有權) 下,選擇 Edit (編輯)。
-
如果尚未選取,請選擇停用 ACL (建議) 選項。
-
選擇 Save changes (儲存變更)。
步驟 3:更新帳戶 B 中的 S3 儲存貯體政策
在帳戶 B 中修改 S3 儲存貯體政策,以將存取權授予您DataSync在帳戶 A 中建立的 IAM 角色。
更新後的原則 (在下列指示中提供給您) 包含兩個主參與者:
-
第一個主體會指定您在步驟 1 中建立的帳戶 A 中的 IAM 角色。此角色可DataSync將寫入帳戶 B 的 S3 儲存貯體。
-
第二個主體會在帳戶 A 中指定您用來存取主控台或的 IAM 角色AWS CLI。在步驟 4 中,您將在建立 S3 儲存貯體的目標位置時使用此角色。
更新 S3 儲存貯體政策
-
仍在 S3 主控台並使用帳戶 B 時,請選擇要將資料複製到的 S3 儲存貯體。
-
在值區的詳細資訊頁面上,選擇 [權限] 索引標籤。
-
在「儲存貯體政策」下,選擇「編輯」 並執行下列動作來修改 S3 儲存貯體政策:
-
更新編輯器中的內容以包含下列原則陳述式:
{ "Version": "2008-10-17", "Statement": [ { "Sid": "DataSyncCreateS3LocationAndTaskAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account-a-id
:role/name-of-datasync-role
" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObjectTagging", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::account-b-bucket
", "arn:aws:s3:::account-b-bucket
/*" ] }, { "Sid": "DataSyncCreateS3Location", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-a-id
:role/name-of-your-role
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::account-b-bucket
" } ] } -
以「帳戶 A」的AWS 帳戶編號取代。account-a-id
-
取代
為您DataSync在帳戶 A 中建立的 IAM 角色 (返回步驟 1)。name-of-datasync-role
-
以帳戶 B 中的 S3 儲存貯體之名稱取代。account-b-bucket
-
以您用來存取主控台或AWS CLI帳戶 A 的 IAM 角色取代
。name-of-your-role
-
選擇 Save changes (儲存變更)。
步驟 4:為 S3 儲存貯體建立DataSync目標位置
為 S3 儲存貯體建立位置後,您可以執行DataSync工作。不過,DataSync主控台不支援在不同帳戶中建立位置。您必須先使用建立位置,AWS CLI才能執行工作。
若要使用 CLI 建立DataSync位置
-
開啟 終端機。
-
確定您的 CLI 設定檔已設定為使用帳戶 A。
-
複製以下命令:
aws datasync create-location-s3 \ --s3-bucket-arn arn:aws:s3:::
account-b-bucket
\ --s3-config '{"BucketAccessRoleArn":"arn:aws:iam::account-a-id
:role/name-of-datasync-role
"}' -
以帳戶 B 中的 S3 儲存貯體之名稱取代。account-b-bucket
-
以「帳戶 A」的AWS 帳戶編號取代。account-a-id
-
取代
為您DataSync在帳戶 A 中建立的 IAM 角色 (返回步驟 1)。name-of-datasync-role
-
如果「科目 B」中的時段與「科目 A」中的時段位於不同的區域,請在指令結尾新增
--region
選項,以指定「科目 B」時段所在的「區域」。例如:--region
。us-west-1
-
執行命令。
如果指令傳回類似於此的DataSync位置 ARN,表示您已成功建立該位置:
{ "LocationArn": "arn:aws:datasync:us-east-2:123456789012:location/loc-abcdef01234567890" }
-
在中切換回帳戶 AAWS Management Console。
-
請在以下位置開啟DataSync主控台。
https://console.aws.amazon.com/datasync/ -
在左側導覽窗格中選擇 [位置]。
您可以在剛使用 CLI 建立的帳戶 B 中查看 S3 儲存貯體的位置。
步驟 5:建立並啟動工DataSync作
在移動數據之前,讓我們回顧一下您到目前為止所做的工作:
-
在帳戶 A 中建立 IAM 角色,DataSync以便將資料寫入帳戶 B 中的 S3 儲存貯體。
-
在帳戶 B 中設定 S3 儲存貯體,以確保您的DataSync任務正常運作。
-
在帳戶 A 中建立您的DataSync來源和目的地位置。
若要建立並啟動DataSync工作
在帳戶 A 中仍在使用DataSync主控台時,展開左側導覽窗格中的 [資料傳輸],然後選擇 [工作] 和 [建立工作]。
注意
您必須使用您在步驟 3 中在 S3 儲存貯體政策中指定的帳戶 A 相同的 IAM 角色登入主控台。
-
如果「科目 B」中的時段與「科目 A」中的時段位於不同的「區域」,請在導覽窗格中選擇「科目 B」時段的「區域」。
您必須從DataSync目的地位置的「區域」(在此情況下為「帳戶 B」值區) 啟動作業,以避免發生連線錯誤。
-
在 [設定來源位置] 頁面上,選擇 [選擇現有位置]。
-
對於跨區域的移轉,請選擇「科目 A」時段所在的「區域」。
-
選擇您要從中複製資料的來源位置 (帳戶 A 中的 S3 儲存貯體),然後選擇下一步。
-
在 [設定目的地位置] 頁面上,選擇 [選擇現有位置]。選擇要將資料複製到的目的地位置 (帳戶 B 中的 S3 儲存貯體),然後選擇下一步。
-
在 [規劃設定] 頁面上,為工作指定名稱。視需要設定其他設定,例如指定 AmazonCloudWatch 日誌群組。選擇 下一步。
-
在 [檢閱] 頁面上檢閱您的設定,然後選擇 [建立工作]。
-
在工作的詳細資訊頁面上選擇開始,然後選擇下列其中一個選項:
-
若要在不修改的情況下執行工作,請選擇以預設值啟動。
-
若要在執行工作之前修改工作,請選擇 [以覆寫選項開始]。
-
任務完成後,請檢查帳戶 B 中的 S3 儲存貯體。您應該會看到帳戶 A 儲存貯體中的資料。
相關資源
如需您在本教學中所做的工作,請參閱下列主題: