建立 Outposts 上的複寫規則 - Amazon Simple Storage Service

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

建立 Outposts 上的複寫規則

S3 Replication on Outposts 是跨相同或不同 AWS Outposts 的儲存貯體自動非同步的物件複寫。複寫會將來源 Outposts 儲存貯體中新建立的物件和物件更新複製至目的地 Outposts 儲存貯體。如需詳細資訊,請參閱 複寫 S3 on Outposts 的物件

注意

不會複寫您設定複寫規則之前就已存在於來源 Outposts 儲存貯體中的物件。換句話說,S3 on Outposts 不會追溯複寫物件。若要複寫您在複寫組態之前建立的物件,您可使用 CopyObject API 操作以將其複製到相同的儲存貯體。複製物件之後,這些物件會在儲存貯體中顯示為「新」物件,且複寫組態將套用至這些物件。如需複製物件的詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 使用 AWS SDK for Java 在 Amazon S3 on Outposts 儲存貯體中複製物件CopyObject

設定複寫時,會將複寫規則新增至來源 Outposts 儲存貯體。複寫規則會定義要複寫的來源 Outposts 儲存貯體物件,以及存放已複寫物件的目的地 Outposts 儲存貯體。您可以建立規則,以特定的金鑰名稱前綴、一或多個物件標籤、或兩種都用,複寫儲存貯體中的所有物件,或一部分的物件。目的地 Outposts 儲存貯體可以在與來源 Outposts 儲存貯體相同的 Outpost 中,也可以在不同的 Outpost 中。

對於 S3 on Outposts 複寫規則,您必須同時提供來源 Outposts 儲存貯體的存取點 Amazon Resource Name (ARN) 和目的地 Outposts 儲存貯體的存取點 ARN,而不是來源和目的地 Outposts 儲存貯體名稱。

如果您指定要刪除的物件版本 ID,S3 on Outposts 會刪除來源 Outposts 儲存貯體中的該物件版本。但不會在目的地 Outposts 儲存貯體中進行刪除。換句話說,它不會從目的地 Outposts 儲存貯體中刪除相同的物件版本。此行為可防止資料遭到惡意刪除。

當您將複寫規則新增至 Outposts 儲存貯體時,預設會啟用此規則,讓規則在您儲存之後立即運作。

在此範例中,您會設定來源與目的地 Outposts 儲存貯體為不同 Outposts 且同一 AWS 帳戶 所擁有的複寫。提供了使用 Amazon S3 主控台、AWS Command Line Interface (AWS CLI)、AWS SDK for Java 和 AWS SDK for .NET 的範例。如需跨帳戶 S3 on Outposts 許可的相關資訊,請參閱 在來源與目的地 Outposts 儲存貯體分屬於不同 AWS 帳戶 時授予許可

如需設定 S3 on Outposts 複寫規則的先決條件,請參閱 建立複寫規則的先決條件

當目的地 Amazon S3 on Outposts 儲存貯體與來源 Outposts 儲存貯體位於不同的 Outpost 時,請依照這些步驟設定複寫規則。

如果目的地 Outposts 儲存貯體位在與來源 Outposts 儲存貯體不同的帳戶中,您必須將儲存貯體政策新增至目的地 Outposts 儲存貯體,以將複寫目的地 Outposts 儲存貯體中物件的許可授予來源 Outposts 儲存貯體帳戶擁有者。如需詳細資訊,請參閱 當來源值區和目的地值區屬於不同時授與權限 AWS 帳戶

建立複寫規則
  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon S3 主控台。

  2. Outposts 儲存貯體清單中,選擇您要使用做為來源儲存貯體的儲存貯體名稱。

  3. 選擇管理索引標籤,向下捲動至複寫規則區段,然後選擇建立複寫規則

  4. 對於複寫規則名稱,輸入規則名稱,以利之後識別此規則。此名稱為必要,且在儲存貯體內必須是唯一的。

  5. 狀態下,預設會選擇已啟用。已啟用規則在您儲存它之後就會立即運作。如果希望稍後再啟用此規則,請選擇已停用

  6. 優先順序下,如果發生規則重疊,則規則的優先順序值會決定要套用的規則。當物件包含在多個複寫規則的範圍內時,S3 on Outposts 會使用這些優先順序值來避免衝突。依預設,新規則會以最高優先順序新增至複製組態。數字愈高,優先順序愈高。

    若要變更規則的優先順序,請在儲存規則之後,從複製規則清單中選擇規則名稱、選擇動作,然後選擇編輯優先順序

  7. 來源儲存貯體之下,您有下列選項可用來設定複寫來源:

    • 若要複寫整個儲存貯體,請選擇套用至儲存貯體中的所有物件

    • 若要將字首或標籤篩選套用至複寫來源,請選擇使用一或多個篩選條件限制此規則的範圍。您可以合併字首與標籤。

      • 若要複寫具有相同字首的所有物件,請在字首下的方塊中輸入字首。使用字首篩選條件以限制複寫名稱以相同字串 (例如,pictures) 開頭的所有物件。

        如果您輸入的字首是資料夾名稱,您必須使用 / (正斜線) 作為最後一個字元 (例如,pictures/)。

      • 若要複寫具有一個或多個相同物件標籤的所有物件,請選擇新增標籤,然後在方塊中輸入鍵/值對。若要新增另一個索引標籤,請重複此程序,。如需物件標籤的詳細資訊,請參閱 新增 S3 on Outposts 儲存貯體的標籤

  8. 若要存取 S3 on Outposts 來源儲存貯體以進行複寫,請在來源存取點名稱下選擇連接至來源儲存貯體的存取點。

  9. 目的地下,選擇您想要 S3 on Outposts 在其中複寫物件的目的地 Outposts 儲存貯體的存取點 ARN。目的地 Outposts 儲存貯體可以位於與來源 Outposts 儲存貯體相同或不同的 AWS 帳戶。

    如果目的地儲存貯體位在與來源 Outposts 儲存貯體不同的帳戶中,您必須將儲存貯體政策新增至目的地 Outposts 儲存貯體,以將複寫目的地 Outposts 儲存貯體中物件的許可授予來源 Outposts 儲存貯體帳戶擁有者。如需詳細資訊,請參閱 在來源與目的地 Outposts 儲存貯體分屬於不同 AWS 帳戶 時授予許可

    注意

    如果未在目的地 Outposts 儲存貯體上啟用版本控制,您會收到包含啟用版本控制按鈕的警告訊息。選擇此按鈕,以在儲存貯體上啟用版本控制。

  10. 設定 S3 on Outposts 可擔任並代您複寫物件的 AWS Identity and Access Management (IAM) 服務角色。

    若要設定 IAM 角色,請在 IAM 角色下,執行下列其中一個動作:

    • 若要讓 S3 on Outposts 為您的複寫組態建立新的 IAM 角色,請選擇從現有的 IAM 角色中選擇,然後選擇建立新角色。當您儲存規則時,系統會為符合所選擇來源與目的地 Outposts 儲存貯體的 IAM 角色產生新原則。建議您選擇建立新角色

    • 您也可以選擇使用現有 IAM 角色。如果這麼做,則必須選擇將必要複寫許可授予 S3 on Outposts 的角色。如果此角色未依您的複寫規則授予 S3 on Outposts 足夠的許可,則複寫會失敗。

      若要選擇現有角色,請選擇從現有 IAM 角色中選擇,然後從下拉式功能表中選擇角色。您也可以選擇輸入 IAM 角色 ARN,然後輸入 IAM 角色的 Amazon Resource Name (ARN)。

    重要

    當您新增複寫規則至 S3 on Outposts 儲存貯體時,必須擁有 iam:CreateRoleiam:PassRole 許可,才能建立和傳遞授予 S3 on Outposts 複寫許可的 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》授予使用者將角色傳遞至 AWS 服務 的許可

  11. 依預設,Outposts 儲存貯體中的所有物件都會加密。如需 S3 on Outposts 加密的詳細資訊,請參閱 S3 on Outposts 中的資料加密。只有使用 Amazon S3 管理金鑰的伺服器端加密 (SSE-S3) 進行加密的物件才可加以複寫。不支援使用 AWS Key Management Service (AWS KMS) 金鑰的伺服器端加密 (SSE-KMS) 或使用經由客戶提供加密金鑰的伺服器端加密 (SSE-C) 進行加密的物件複寫。

  12. 設定複寫規則組態時,視需要啟用下列其他選項:

  13. 若要完成,請選擇建立規則

儲存規則之後,即可編輯、啟用、停用或刪除規則。若要這麼做,請前往來源 Outposts 儲存貯體的管理索引標籤,向下捲動至複寫規則區段,選擇您的規則,然後選擇編輯規則

若要在來源與目的地 Outposts 儲存貯體由相同 AWS 帳戶 擁有時使用 AWS CLI 設定複寫,請執行以下操作:

  • 建立來源與目的地 Outposts 儲存貯體。

  • 在兩個儲存貯體上啟用版本控制。

  • 建立 IAM 角色,授予 S3 on Outposts 複寫物件的許可。

  • 將複寫組態新增至來源 Outposts 儲存貯體。

您可以測試以驗證設定。

設定相同 AWS 帳戶 擁有來源與目的地 Outposts 儲存貯體時的複寫
  1. 設定 AWS CLI 的憑證描述檔。在此範例中,我們使用描述檔名稱 acctA。如需設定憑證描述檔的相關資訊,請參閱《AWS Command Line Interface 使用者指南》中的具名描述檔

    重要

    用於此練習的描述檔必須有必要的許可。例如,您可以在複寫組態中指定 S3 on Outposts 可以擔任的 IAM 服務角色。只有當您所用的描述檔有 iam:CreateRoleiam:PassRole 許可時才可執行此作業。如需詳細資訊,請參閱《IIAM 使用者指南》《中授予使用者將角色傳遞至 AWS 服務 的許可。如果您使用管理員憑證建立具名描述檔,具名描述檔將擁有執行所有任務的必要許可。

  2. 建立 source 儲存貯體並對它啟用版本控制。下列 create-bucket 命令會在美國東部 (維吉尼亞北部) (us-east-1) 區域中建立 SOURCE-OUTPOSTS-BUCKET 儲存貯體。若要使用此命令,請以您自己的資訊取代 user input placeholders

    aws s3control create-bucket --bucket SOURCE-OUTPOSTS-BUCKET --outpost-id SOURCE-OUTPOST-ID --profile acctA --region us-east-1

    下列 put-bucket-versioning 命令啟用 SOURCE-OUTPOSTS-BUCKET 儲存貯體上的版本控制。若要使用此命令,請以您自己的資訊取代 user input placeholders

    aws s3control put-bucket-versioning --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET --versioning-configuration Status=Enabled --profile acctA
  3. 建立 destination 儲存貯體並對它啟用版本控制。下列 create-bucket 命令會在美國西部 (奧勒岡) (us-west-2) 區域中建立 DESTINATION-OUTPOSTS-BUCKET 儲存貯體。若要使用此命令,請以您自己的資訊取代 user input placeholders

    注意

    若要在來源與目的地 Outposts 儲存貯體都位於同一個 AWS 帳戶 時設定複寫組態,您可以使用同一個具名描述檔。此範例使用 acctA。若要在儲存貯體屬於不同 AWS 帳戶 時測試複寫組態,則需為每個儲存貯體指定不同的描述檔。

    aws s3control create-bucket --bucket DESTINATION-OUTPOSTS-BUCKET --create-bucket-configuration LocationConstraint=us-west-2 --outpost-id DESTINATION-OUTPOST-ID --profile acctA --region us-west-2

    下列 put-bucket-versioning 命令啟用 DESTINATION-OUTPOSTS-BUCKET 儲存貯體上的版本控制。若要使用此命令,請以您自己的資訊取代 user input placeholders

    aws s3control put-bucket-versioning --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/bucket/DESTINATION-OUTPOSTS-BUCKET --versioning-configuration Status=Enabled --profile acctA
  4. 建立 IAM 服務角色。稍後在複寫組態中,您會將此服務角色新增至 SOURCE-OUTPOSTS-BUCKET 儲存貯體。S3 on Outposts 就會擔任此角色以代您複寫物件。建立 IAM 角色需要兩個步驟:

    1. 建立 IAM 角色。

      1. 複製下列信任政策,並將它儲存至本機電腦目前目錄下名稱為 s3-on-outposts-role-trust-policy.json 的檔案中。此政策會授予 S3 on Outposts 服務主體擔任該服務角色的許可。

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3-outposts.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
      2. 執行下列 命令以建立角色。以您自己的資訊取代 user input placeholders

        aws iam create-role --role-name replicationRole --assume-role-policy-document file://s3-on-outposts-role-trust-policy.json --profile acctA
    2. 將許可政策連接到服務角色。

      1. 複製下列許可政策,並將它儲存至本機電腦目前目錄中名為 s3-on-outposts-role-permissions-policy.json 的檔案。此政策會授予各種 S3 on Outposts 儲存貯體與物件動作的許可。若要使用此政策,請以您自己的資訊取代 user input placeholders

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3-outposts:GetObjectVersionForReplication", "s3-outposts:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET/object/*", "arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/accesspoint/SOURCE-OUTPOSTS-BUCKET-ACCESS-POINT/object/*" ] }, { "Effect":"Allow", "Action":[ "s3-outposts:ReplicateObject", "s3-outposts:ReplicateDelete" ], "Resource":[ "arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/bucket/DESTINATION-OUTPOSTS-BUCKET/object/*", "arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/accesspoint/DESTINATION-OUTPOSTS-BUCKET-ACCESS-POINT/object/*" ] } ] }
      2. 執行下列命令以建立政策,並將它連接至角色。以您自己的資訊取代 user input placeholders

        aws iam put-role-policy --role-name replicationRole --policy-document file://s3-on-outposts-role-permissions-policy.json --policy-name replicationRolePolicy --profile acctA
  5. 將複寫組態新增至 SOURCE-OUTPOSTS-BUCKET 儲存貯體。

    1. 雖然 S3 on Outposts API 要求複寫組態必須為 XML 格式,但 AWS CLI 會要求您指定 JSON 格式的複寫組態。將下列 JSON 儲存至您電腦本機目錄下的 replication.json 檔案中。若要使用此組態,請以您自己的資訊取代 user input placeholders

      { "Role": "IAM-role-ARN", "Rules": [ { "Status": "Enabled", "Priority": 1, "DeleteMarkerReplication": { "Status": "Disabled" }, "Filter" : { "Prefix": "Tax"}, "Destination": { "Bucket": "arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/accesspoint/DESTINATION-OUTPOSTS-BUCKET-ACCESS-POINT" } } ] }
    2. 執行下列 put-bucket-replication 命令,將複寫組態新增至您的來源 Outposts 儲存貯體。若要使用此命令,請以您自己的資訊取代 user input placeholders

      aws s3control put-bucket-replication --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET --replication-configuration file://replication.json --profile acctA
    3. 使用 get-bucket-replication 命令來擷取複寫組態。若要使用此命令,請以您自己的資訊取代 user input placeholders

      aws s3control get-bucket-replication --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET --profile acctA
  6. 在 Amazon S3 主控台中測試設定:

    1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon S3 主控台。

    2. SOURCE-OUTPOSTS-BUCKET 儲存貯體中,建立名為 Tax 的資料夾。

    3. 將範例物件新增至 SOURCE-OUTPOSTS-BUCKET 儲存貯體的 Tax 資料夾。

    4. DESTINATION-OUTPOSTS-BUCKET 儲存貯體中驗證下列事項:

      • S3 on Outposts 已複寫物件。

        注意

        S3 on Outposts 複寫物件所需的時間長短取決於物件大小。如需如何查看複寫狀態的相關資訊,請參閱 取得複寫狀態資訊

      • 在物件屬性標籤中,複寫狀態已設定為複寫 (將此識別為複本物件)。