Outposts でのレプリケーションルールの作成 - Amazon S3 on Outposts

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 バケットが定義されます。ルールを作成して、バケット内のすべてのオブジェクト、または特定のキー名のプレフィックス、1 つ以上のオブジェクトタグ、あるいはその両方を持つオブジェクトのサブセットをレプリケートできます。レプリケート先 Outposts バケットはレプリケート元 Outposts バケットと同じ Outposts にあっても、別の Outposts にあってもかまいません。

S3 on Outposts レプリケーションルールでは、レプリケート元とレプリケート先の バケット名の代わりに、レプリケート元 Outposts バケットのアクセスポイント Amazon リソースネーム (ARN) とレプリケート先の Outposts バケットのアクセスポイント ARN の両方を指定する必要があります。

削除するオブジェクトバージョンの ID を指定した場合、S3 on Outposts はレプリケート元 Outposts バケット内のそのオブジェクトバージョンを削除します。しかし、レプリケート先 Outposts バケット内でその削除をレプリケートすることはありません。つまり、レプリケート先 Outposts バケットから同じオブジェクトバージョンを削除しません。この動作は悪意のある削除からデータを保護します。

Outposts バケットにレプリケーションルールを追加すると、そのルールはデフォルトで有効になるため、保存するとすぐに動作を開始します。

この例では、異なる Outposts にあり、同じ AWS アカウントが所有する、レプリケート元 Outposts とレプリケート先 Outposts のバケットのレプリケーションのセットアップを行います。Amazon S3 コンソールを使用する例については、AWS Command Line Interface (AWS CLI)、AWS SDK for Java、および AWS SDK for .NET を参照してください。クロスアカウントの S3 Replication on Outposts アクセス許可の詳細については、「レプリケーション元とレプリケーション先の Outposts バケットが異なる AWS アカウントによって所有されている場合のアクセス許可の付与」を参照してください。

S3 on Outposts レプリケーションルールを設定するための前提条件については、「レプリケーションルールの作成の前提条件」を参照してください。

以下の手順を実行して、レプリケート元 Outposts バケットと異なる Outposts にレプリケート先 Amazon S3 on Outposts バケットがある場合のレプリケーションルールを設定します。

レプリケート先 Outposts バケットがレプリケート元 Outposts バケットとは別のアカウントにある場合は、レプリケート先 Outposts バケットにバケットポリシーを追加して、レプリケート元 Outposts バケットアカウントの所有者に、レプリケート先 Outposts バケットのオブジェクトをレプリケートするアクセス許可を付与する必要があります。

レプリケーションルールを作成するには
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Outposts バケット] リストで、レプリケート元バケットとして使用するバケットの名前を選択します。

  3. [管理] タブを選択し、[レプリケーションルール] までスクロールして、[レプリケーションルールを作成] を選択します。

  4. [レプリケーションルール名] で、後でルールを識別しやすいようにルールの名前を入力します。ルール名は必須であり、バケット内で一意である必要があります。

  5. [ステータス] では、デフォルトで [有効] が選択されています。有効にされたルールは、保存するとすぐに機能し始めます。ルールを後から有効にする場合は、[無効] を選択します。

  6. [優先度] では、ルールの優先度値によって、重複するルールがある場合に適用するルールが決まります。オブジェクトが複数のレプリケーションルールの範囲に含まれる場合、S3 on Outposts はこれらの優先度の値を使用して競合を回避します。デフォルトでは、新しいルールが最優先でレプリケーション設定に追加されます。数値が大きいほど、優先度が高くなります。

    ルールの優先度を変更するには、ルールを保存した後、レプリケーションルールリストからルール名を選択し、[アクション] を選択して、[優先度の編集] を選択します。

  7. [ソースバケット] には、レプリケーションソースを設定するための次のオプションがあります。

    • バケット全体をレプリケートするには、[バケット内のすべてのオブジェクトに適用] を選択します。

    • プレフィックスまたはタグフィルタリングをレプリケーションソースに適用するには、[1 つまたは複数のフィルターを使用してこのルールの適用範囲を制限します] を選択します。プレフィックスとタグを組み合わせることができます。

      • 同じプレフィックスを持つすべてのオブジェクトを複製するには、[プレフィックス] で、ボックスにプレフィックスを入力します。[プレフィックス] フィルターを使用すると、同じ文字列で始まる名前 (pictures など) を持つすべてのオブジェクトへのレプリケーションを制限します。

        フォルダの名前をプレフィックスとして入力する場合は、最後の文字に / (スラッシュ) を使用する必要があります (例: pictures/)。

      • 1 つまたは複数のオブジェクトタグを持つすべてのオブジェクトをレプリケートするには、[タグを追加] を選択し、ボックスにキーと値のペアを入力します。別のタグを追加するには、この手順を繰り返します。オブジェクトタグの詳細については、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 バケットとレプリケート先 Outposts バケットに一致する IAM ロールに対して新しいポリシーが生成されます。[新しいロールを作成] を選択することを推奨します。

    • 既存の IAM ロールの使用も選択できます。その場合は、レプリケーションに必要なアクセス許可を S3 on Outposts に付与するロールを選択する必要があります。このロールによってレプリケーションルールに従うための十分なアクセス許可が S3 on Outposts に付与されない場合、レプリケーションは失敗します。

      既存のロールを選択するには、[既存の IAM ロールから選択] を選択してから、ドロップダウンメニューでロールを選択します。[IAM ロール ARN を入力する] を選択してから、IAM ロールの Amazon リソースネーム (ARN) を入力することもできます。

    重要

    S3 on Outposts バケットにレプリケーションルールを追加する場合は、S3 on Outposts レプリケーションアクセス許可を付与する IAM ロールを作成して渡すことができる iam:CreateRoleiam:PassRole アクセス許可を持つ必要があります。詳細については、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 バケットとレプリケート先 Outposts バケットが同じ AWS アカウント によって所有されている場合に、レプリケーションの設定に AWS CLI を使用するには

  • レプリケート元 Outposts バケットとレプリケート先 Outposts バケットを作成する

  • 両方のバケットでバージョニングを有効化する

  • オブジェクトをレプリケートするための S3 on Outposts 許可を付与する IAM ロールを作成します。

  • レプリケート元 Outposts バケットにレプリケーション設定を追加します。

設定を確認するには、テストします。

レプリケート元 Outposts バケットとレプリケート先 Outposts バケットが同じ AWS アカウントによって所有されている場合にレプリケーションをセットアップするには
  1. AWS CLI の認証情報プロファイルを設定します。この例では、プロファイル名 acctA を使用します。認証情報プロファイルの設定については、AWS Command Line Interface ユーザーガイドの「名前付きプロファイル」を参照してください。

    重要

    この演習に使用するプロファイルは、必要なアクセス権限を持っている必要があります。例えば、レプリケーション設定で、S3 on Outposts が引き受けることができる IAM ロールを指定します。使用するプロファイルに iam:CreateRole および iam:PassRole アクセス許可がある場合のみ実行できます。詳細については、IAM ユーザーガイドの「AWS のサービス のサービスにロールを渡すアクセス権限をユーザーに付与する」を参照してください。管理者の認証情報を使用して名前付きプロファイルを作成すると、指定されたプロファイルにはすべてのタスクを実行するために必要なアクセス許可が付与されます。

  2. レプリケート元バケットを作成してバージョニングを有効にします。次の 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. レプリケート先バケットを作成してバージョニングを有効にします。次の 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 ロールは 2 つのステップで作成します。

    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 にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

    2. SOURCE-OUTPOSTS-BUCKET バケットに Tax という名前のフォルダを作成します。

    3. SOURCE-OUTPOSTS-BUCKET バケット内の Tax フォルダにサンプルオブジェクトを追加します。

    4. DESTINATION-OUTPOSTS-BUCKET バケットで、以下の点を確認します。

      • S3 on Outposts がオブジェクトをレプリケートしました。

        注記

        S3 on Outposts がオブジェクトをレプリケートするのにかかる時間は、オブジェクトのサイズによって異なります。レプリケーションのステータスを確認する方法については、「レプリケーションステータス情報の取得」を参照してください。

      • オブジェクトの [プロパティ] タブで、[レプリケーションステータス][レプリカ] に設定されています (これをレプリカオブジェクトとして識別)。