View a markdown version of this page

教學課程:跨 將資料從內部部署儲存傳輸到 Amazon S3 AWS 帳戶 - AWS DataSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:跨 將資料從內部部署儲存傳輸到 Amazon S3 AWS 帳戶

AWS DataSync 搭配內部部署儲存使用 時,您通常會將資料傳輸到 AWS 與 AWS 帳戶 DataSync 代理程式屬於相同的儲存服務。不過,在某些情況下,您可能需要將資料傳輸到與不同帳戶相關聯的 Amazon S3 儲存貯體。

重要

只有在 Amazon S3 是 DataSync 傳輸位置之一時, AWS 帳戶 才能使用本教學課程中的方法跨 傳輸資料。

概觀

需要在不同的 之間傳輸資料並不常見 AWS 帳戶,特別是如果您有獨立的團隊管理組織的資源。以下是使用 DataSync 進行跨帳戶傳輸的外觀:

  • 來源帳戶:用於管理網路資源 AWS 帳戶 的 。這是您用來啟用 DataSync 代理程式的帳戶。

  • 目的地帳戶: AWS 帳戶 用於管理您需要傳輸資料的 S3 儲存貯體的 。

下圖說明了這種案例。

資料從內部部署儲存系統透過網際網路 Direct Connect 連線移動到 的範例 DataSync 案例 AWS。資料會先傳輸到一個 AWS 帳戶 (您的來源帳戶),最後再傳輸到不同 AWS 帳戶 (您的目的地帳戶) 的 Amazon S3 儲存貯體。

先決條件:必要的來源帳戶許可

對於您的來源 AWS 帳戶,有兩組許可可以考慮這種跨帳戶轉移:

  • 允許使用者使用 DataSync 的使用者許可 (可能是您或您的儲存管理員)。這些許可可讓您建立 DataSync 位置和任務。

  • 允許 DataSync 將資料傳輸至目的地帳戶儲存貯體的 DataSync 服務許可。 DataSync

User permissions

在您的來源帳戶中,將至少下列許可新增至 IAM 角色,以建立 DataSync 位置和任務。如需如何將許可新增至角色的資訊,請參閱建立或修改 IAM 角色。

{ "Version":"2012-10-17", "Statement": [ { "Sid": "SourceUserRolePermissions", "Effect": "Allow", "Action": [ "datasync:CreateLocationS3", "datasync:CreateTask", "datasync:DescribeLocation*", "datasync:DescribeTaskExecution", "datasync:ListLocations", "datasync:ListTaskExecutions", "datasync:DescribeTask", "datasync:CancelTaskExecution", "datasync:ListTasks", "datasync:StartTaskExecution", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Sid": "IAMPermissions", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:ListRoles", "iam:CreatePolicy" ], "Resource": "arn:aws:iam::111122223333:role/DataSync-*" }, { "Sid": "IAMAttachRolePermissions", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy" ], "Resource": "arn:aws:iam::111122223333:role/DataSync-*", "Condition": { "ArnLike": { "iam:PolicyARN": [ "arn:aws:iam::111122223333:policy/DataSync-*", "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess", "arn:aws:iam::aws:policy/service-role/AWSDataSyncFullAccess" ] } } }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "datasync.amazonaws.com" ] } } } ] }
提示

若要設定您的使用者許可,請考慮使用 AWSDataSyncFullAccess。這是 AWS 受管政策,可讓使用者完整存取 DataSync 並盡可能減少對其相依性的存取。

DataSync service permissions

DataSync 服務需要來源帳戶中的下列許可,才能將資料傳輸至目的地帳戶儲存貯體。

在本教學課程稍後,您會在為 DataSync 建立 IAM 角色時新增這些許可。您也可以在目的地儲存貯體政策和建立 DataSync 目的地位置時指定此角色 (source-datasync-role)。

{ "Version":"2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObjectTagging", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ] }

先決條件:必要的目的地帳戶許可

在您的目的地帳戶中,您的使用者許可必須允許您更新目的地儲存貯體的政策,並停用其存取控制清單 ACLs)。如需這些特定許可的詳細資訊,請參閱 Amazon S3 使用者指南https://docs.aws.amazon.com/AmazonS3/latest/userguide/。

步驟 1:在您的來源帳戶中,建立 DataSync 代理程式

若要開始使用,您必須建立可從內部部署儲存系統讀取並與 DataSync 服務通訊的 DataSync 代理程式。此程序包括在內部部署儲存環境中部署 代理程式,並在來源 中啟用 代理程式 AWS 帳戶。

注意

本教學中的步驟適用於您使用的任何類型的代理程式和服務端點。

建立 DataSync 代理程式
  1. 在內部部署儲存環境中部署 DataSync 代理程式。

  2. 選擇客服人員用來與之通訊的服務端點 AWS。

  3. 在來源帳戶中啟用您的代理程式。

步驟 2:在您的來源帳戶中,建立目的地儲存貯體存取的 DataSync IAM 角色

在來源帳戶中,您需要一個 IAM 角色,授予 DataSync 將資料傳輸到目的地帳戶儲存貯體的許可。

由於您要跨帳戶轉移,因此您必須手動建立角色。(在相同帳戶中轉移時,DataSync 可以在主控台中為您建立此角色。)

建立 DataSync IAM 角色

使用 DataSync 做為信任的實體來建立 IAM 角色。

建立 IAM 角色
  1. AWS 管理主控台 使用您的來源帳戶登入 。

  2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  3. 在左側導覽窗格的存取管理下,選擇角色,然後選擇建立角色。

  4. 在選取信任的實體頁面上,針對信任的實體類型,選擇 AWS 服務。

  5. 針對使用案例,在下拉式清單中選擇 DataSync,然後選取 DataSync。選擇下一步。

  6. 在 Add permissions (新增許可) 頁面上,選擇 Next (下一步)。

  7. 為您的角色命名,然後選擇建立角色。

如需詳細資訊,請參閱《IAM 使用者指南》中的為 AWS 服務 (主控台) 建立角色。

將許可新增至 DataSync IAM 角色

您剛建立的 IAM 角色需要許可,允許 DataSync 將資料傳輸到目的地帳戶中的 S3 儲存貯體。

將許可新增至您的 IAM 角色
  1. 在 IAM 主控台的角色頁面上,搜尋您剛建立的角色,然後選擇其名稱。

  2. 在角色的詳細資訊頁面上,選擇許可索引標籤。選擇新增許可,然後選擇建立內嵌政策。

  3. 選擇 JSON 索引標籤並執行下列動作:

    1. 將下列 JSON 貼到政策編輯器中:

      注意

      的值aws:ResourceAccount應該是擁有政策中指定 Amazon S3 儲存貯體的帳戶 ID。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }
    2. 將 的每個執行個體取代amzn-s3-demo-destination-bucket為目的地帳戶中 S3 儲存貯體的名稱。

  4. 選擇下一步。為您的政策命名,然後選擇建立政策。

步驟 3:在您的目的地帳戶中,更新您的 S3 儲存貯體政策

在目的地帳戶中,修改目的地 S3 儲存貯體政策,以包含您在來源帳戶中建立的 DataSync IAM 角色。

開始之前:請確定您擁有目的地帳戶所需的許可。

更新目的地 S3 儲存貯體政策
  1. 在 中 AWS 管理主控台,切換到目的地帳戶。

  2. 開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon S3 主控台。

  3. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  4. 在儲存貯體清單中,選擇您要傳輸資料的 S3 儲存貯體。

  5. 在儲存貯體的詳細資訊頁面上,選擇許可索引標籤。

  6. 在儲存貯體政策下,選擇編輯並執行下列動作來修改 S3 儲存貯體政策:

    1. 更新編輯器中的內容,以包含下列政策陳述式:

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "DataSyncCreateS3LocationAndTaskAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/source-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:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }
    2. source-account 使用來源帳戶的 AWS 帳戶 ID 取代 的每個執行個體。

    3. source-datasync-role 將 取代為您在來源帳戶中為 DataSync 建立的 IAM 角色。

    4. 將 的每個執行個體取代amzn-s3-demo-destination-bucket為目的地帳戶中 S3 儲存貯體的名稱。

  7. 選擇儲存變更。

步驟 4:在您的目的地帳戶中,停用 S3 儲存貯體ACLs

請務必將您複製到 S3 儲存貯體的所有資料都屬於您的目的地帳戶。為了確保此帳戶擁有資料,請停用儲存貯體的存取控制清單 (ACLs)。如需詳細資訊,請參閱《Simple Storage Service (Amazon S3) 使用者指南》中的控制物件的所有權並停用儲存貯體的 ACL。

停用目的地儲存貯體ACLs
  1. 在仍使用目的地帳戶登入 S3 主控台時,請選擇您要傳輸資料的 S3 儲存貯體。

  2. 在儲存貯體的詳細資訊頁面上,選擇許可索引標籤。

  3. 在 Object Ownership (物件擁有權) 下,選擇 Edit (編輯)。

  4. 如果尚未選取,請選擇停用 (建議) ACLs 選項。

  5. 選擇儲存變更。

步驟 5:在您的來源帳戶中,為您的內部部署儲存體建立 DataSync 來源位置

在您的來源帳戶中,為您要從中傳輸資料的現場部署儲存系統建立 DataSync 來源位置。此位置會使用您在來源帳戶中啟用的代理程式。

步驟 6:在您的來源帳戶中,為您的 S3 儲存貯體建立 DataSync 目的地位置

仍在來源帳戶中時,請為您要傳輸資料的 S3 儲存貯體建立位置。

開始之前:請確定您擁有來源帳戶所需的許可。

由於您無法使用 DataSync 主控台界面建立跨帳戶位置,因此這些指示要求您執行create-location-s3命令來建立目的地位置。我們建議您使用直接從主控台啟動的 AWS CloudShell瀏覽器型預先驗證 Shell 來執行 命令。CloudShell 可讓您執行 之類的 AWS CLI 命令,create-location-s3而無需下載或安裝命令列工具。

注意

若要使用 CloudShell 以外的命令列工具完成下列步驟,請確定您的AWS CLI 設定檔使用相同的 IAM 角色,其中包含在來源帳戶中使用 DataSync 所需的使用者許可。

使用 CloudShell 建立 DataSync 目的地位置
  1. 仍在來源帳戶中時,請執行下列其中一項操作,從主控台啟動 CloudShell:

    • 從主控台的瀏覽列上選擇 CloudShell 圖示。該圖示位於搜尋方塊的右側。

    • 使用主控台瀏覽列上的搜尋方塊來搜尋 CloudShell,然後選擇 CloudShell 選項。

  2. 複製下列命令:

    aws datasync create-location-s3 \ --s3-bucket-arn arn:aws:s3:::amzn-s3-demo-destination-bucket \ --s3-config '{ "BucketAccessRoleArn":"arn:aws:iam::source-user-account:role/source-datasync-role" }'
  3. amzn-s3-demo-destination-bucket 將 取代為您目的地帳戶中 S3 儲存貯體的名稱。

  4. source-user-account 以來源帳戶的 AWS 帳戶 ID 取代 。

  5. source-datasync-role 將 取代為您在來源帳戶中建立的 DataSync IAM 角色。

  6. 在 CloudShell 中執行 命令。

    如果命令傳回類似這樣的 DataSync 位置 ARN,您已成功建立位置:

    { "LocationArn": "arn:aws:datasync:us-east-2:123456789012:location/loc-abcdef01234567890" }
  7. 在左側導覽窗格中,展開資料傳輸,然後選擇位置。

從來源帳戶,您可以看到您剛為目的地帳戶儲存貯體建立的 S3 位置。

步驟 7:在您的來源帳戶中,建立並啟動 DataSync 任務

開始 DataSync 任務以傳輸資料之前,讓我們回顧一下到目前為止所做的工作:

  • 在您的來源帳戶中,您已建立 DataSync 代理程式。代理程式可以從現場部署儲存系統讀取,並與 DataSync 服務通訊。

  • 在您的來源帳戶中,您建立了 IAM 角色,允許 DataSync 將資料傳輸到目的地帳戶中的 S3 儲存貯體。

  • 在您的目的地帳戶中,您已設定 S3 儲存貯體,讓 DataSync 可以將資料傳輸到該儲存貯體。

  • 在您的來源帳戶中,您已建立用於傳輸的 DataSync 來源和目的地位置。

建立和啟動 DataSync 任務
  1. 在來源帳戶中仍使用 DataSync 主控台時,請在左側導覽窗格中展開資料傳輸,然後選擇任務和建立任務。

  2. 在設定來源位置頁面上,選擇選擇現有位置。選擇您要從中複製資料的來源位置 (您的內部部署儲存),然後選擇下一步。

  3. 在設定目的地位置頁面上,選擇選擇現有位置。選擇您要將資料複製到其中的目的地位置 (目的地帳戶中的 S3 儲存貯體),然後選擇下一步。

  4. 在設定設定頁面上,為任務命名。視需要設定其他設定,例如指定 Amazon CloudWatch 日誌群組。選擇下一步。

  5. 在檢閱頁面上,檢閱您的設定,然後選擇建立任務。

  6. 在任務的詳細資訊頁面上,選擇開始,然後選擇下列其中一項:

    • 若要在不修改的情況下執行任務,請選擇從預設值開始。

    • 若要在執行任務之前修改任務,請選擇從覆寫選項開始。

任務完成後,請檢查目的地帳戶中的 S3 儲存貯體。您應該會看到從來源位置移動的資料。

相關資源

如需您在本教學課程中所做作業的詳細資訊,請參閱下列主題: