Amazon S3 での AWS DataSync 転送設定 - AWS DataSync

Amazon S3 での AWS DataSync 転送設定

Amazon S3 バケットとの間でデータを転送するには、AWS DataSync 転送場所を作成します。DataSync では、このロケーションをデータ転送元あるいは転送先として利用することができます。

DataSync に対する S3 バケットへのアクセス許可の付与

DataSync には、転送先または転送元となる S3 バケットへのアクセス許可が必要です。アクセスを許可するには、バケットにアクセスするために必要なアクセス許可を DataSync に付与する AWS Identity and Access Management (IAM) ロールを作成する必要があります。その後、DataSync 用の Amazon S3 のロケーションを作成するときにこのロールを指定します。

必要なアクセス許可

IAM ロールに必要なアクセス許可は、バケットが DataSync の送信元のロケーションか送信先のロケーションかによって異なります。Amazon S3 on Outposts には異なるアクセス許可のセットが必要です。

Amazon S3 (source location)
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Action": [ "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
Amazon S3 (destination location)
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-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-bucket/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }
Amazon S3 on Outposts
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "s3-outposts:ListBucket", "s3-outposts:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": [ "arn:aws:s3-outposts:us-east-1:123456789012:outpost/outpost-id/bucket/amzn-s3-demo-bucket", "arn:aws:s3-outposts:us-east-1:123456789012:outpost/outpost-id/accesspoint/bucket-access-point-name" ] }, { "Action": [ "s3-outposts:AbortMultipartUpload", "s3-outposts:DeleteObject", "s3-outposts:GetObject", "s3-outposts:GetObjectTagging", "s3-outposts:GetObjectVersion", "s3-outposts:GetObjectVersionTagging", "s3-outposts:ListMultipartUploadParts", "s3-outposts:PutObject", "s3-outposts:PutObjectTagging" ], "Effect": "Allow", "Resource": [ "arn:aws:s3-outposts:us-east-1:123456789012:outpost/outpost-id/bucket/amzn-s3-demo-bucket/*", "arn:aws:s3-outposts:us-east-1:123456789012:outpost/outpost-id/accesspoint/bucket-access-point-name/*" ] }, { "Action": "s3-outposts:GetAccessPoint", "Effect": "Allow", "Resource": "arn:aws:s3-outposts:us-east-1:123456789012:outpost/outpost-id/accesspoint/bucket-access-point-name" } ] }

DataSync が Amazon S3 ロケーションにアクセスするために必要な IAM ロールの作成

コンソールで Amazon S3 ロケーションを作成するとき、S3 バケットにアクセスするための適切なアクセス許可を持つ通常の IAM ロールを、DataSync が自動的に作成し引き受けることができます。

場合によっては、このロールを手動で作成することが必要になります (追加のセキュリティレイヤーを持つバケットにアクセスする場合や、異なる AWS アカウントにあるバケットとの間での転送を行う場合など)。

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. 左側のナビゲーションペインの [アクセス管理] で、[ロール] を選択し、[ロールの作成] を選択します。

  3. [信頼されたエンティティを選択] ページで、[信頼されたエンティティタイプ][AWS のサービス] を選択します。

  4. [ユースケース] では、ドロップダウンリストから [DataSync] を選び、[DataSync] を選択します。[次へ] をクリックします。

  5. [アクセス許可を追加] ページで [次へ] を選択してください。ロール名を入力し、[ロールの作成] を選択します。

  6. [ロール] ページで、作成したロールを検索し、その名前を選択します。

  7. [データセットの詳細] ページが開くので、[アクセス許可] タブを選択します。[アクセス許可の追加] を選択し、次いで [インラインポリシーの作成] を選択します。

  8. [JSON] タブを選択し、ポリシーエディタに、バケットへのアクセスに必要なアクセス許可を追加します。

  9. [次へ] を選択します。ポリシーの名前を入力し、[ポリシーの作成] を選択します。

  10. (推奨) サービス間の混乱による代理問題の発生を防ぐには、次の操作を行います。

    1. ロールの詳細ページで [信頼関係] タブを選択します。[信頼ポリシーを編集] を選択します。

    2. aws:SourceArnaws:SourceAccount グローバル条件コンテキストキーを含む次の例で信頼ポリシーを更新します。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "444455556666" }, "ArnLike": { "aws:SourceArn": "arn:aws:datasync:us-east-1:444455556666:*" } } } ] }
    3. [ポリシーの更新] を選択してください。

Amazon S3 のロケーションを作成するときに、このロールを指定できます。

サーバー側の暗号化を使用して S3 バケットにアクセスする

DataSync は、サーバー側の暗号化を使用する S3 バケットとの間でデータを転送することができます。DataSync によるバケットへのアクセスを許可するカスタム ポリシーが必要かどうかはバケットが使用する暗号化キーのタイプによって決められます。

サーバー側で暗号化を使用する S3 バケットで DataSync を使用する場合は、次の点に注意してください。

  • AWS マネージドキーでS3 バケットが暗号化されている場合 — すべてのリソースが同じ AWS アカウント にあれば、DataSync はデフォルトでバケットのオブジェクトにアクセスできます。

  • S3 バケットがカスタマーマネージド AWS Key Management Service (AWS KMS) キー (SSE-KMS) で暗号化されている場合キーのポリシーには、DataSync がバケットへのアクセスに使用する IAM ロールが含まれている必要があります。

  • S3 バケットがカスタマーマネージドの SSE-KMS キーと別の AWS アカウント で暗号化されている場合 - 、DataSyncにはほかの AWS アカウント でのバケットにアクセスする権限が必要です。これを行うには、次を実行します。

    • DataSync が使用する IAM ロールで、キーの完全修飾 Amazon リソースネーム (ARN) を使用してクロスアカウントバケットの SSE-KMS キーを指定します。これは、バケットのデフォルトの暗号化の設定に使用するキー ARN と同じものです。この状況では、キー ID、エイリアス名、エイリアス ARN を指定することはできません。

      こちらはキー ARN の例です。

      arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

      IAM ポリシーステートメントで KMS キーを指定する方法の詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。

    • SSE-KMS キーポリシーで、DataSync が使用する IAM ロールを指定します

  • S3 バケットが、デュアルレイヤーのサーバー側暗号化のためカスタマーマネージド AWS KMS キー (DSSE-KMS) で暗号化されている場合キーのポリシーに、DataSync がバケットへのアクセスに使用する IAM ロールが含まれている必要があります (DSSE-KMS は S3 バケットキー をサポートしていないため、AWS KMS リクエストのコストを削減できることを覚えておいてください)。

  • S3 バケットが顧客提供の暗号化キー (SSE-C) で暗号化されている場合 — DataSync はこのバケットにアクセスできません。

次の例は、顧客管理の SSE-KMS キーのキーポリシーです。ポリシーは、サーバー側で暗号化を使用する S3 バケットに関連付けられます。

こちらの例を使用する場合は、以下の値をユーザー独自の値に置き換えます。

  • アカウント ID – あなたのAWS アカウント。

  • admin-role-name — キーを管理できる IAM ロールの名前。

  • datasync-role-name — DataSync がバケットにアクセスするときに、キーを使用することを許可する IAM ロールの名前。

JSON
{ "Id": "key-consolepolicy-3", "Version":"2012-10-17", "Statement": [ { "Sid": "Enable IAM Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/admin-role-name" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/datasync-role-name" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*" } ] }

制限のある S3 バケットへのアクセス

通常はすべてのアクセスを拒否する S3 バケットとの間で転送を行う必要がある場合は、バケットポリシーを編集することで DataSync が転送のためにのみバケットにアクセスできるようにすることができます。

  1. 次の S3 バケットポリシーをコピーします。

    JSON
    { "Version":"2012-10-17", "Statement": [{ "Sid": "Deny-access-to-bucket", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": { "StringNotLike": { "aws:userid": [ "datasync-iam-role-id:*", "your-iam-role-id" ] } } }] }
  2. ポリシーの以下の値を置き換えます。

    • amzn-s3-demo-bucket – 制限のある S3 バケットの名前を指定します。

    • datasync-iam-role-id – バケットにアクセスするため DataSync が使用する IAM ロールの ID を指定します。

      次の AWS CLI コマンドを実行して、IAM ロール ID を取得します。

      aws iam get-role --role-name datasync-iam-role-name

      出力で、RoleId の値を探します。

      "RoleId": "ANPAJ2UCCR6DPCEXAMPLE"

    • your-iam-role-id – バケットに DataSync のロケーションを作成する際に使用する IAM ロールの ID を指定します。

      次のコマンドを実行して、IAM ロール ID を取得します。

      aws iam get-role --role-name your-iam-role-name

      出力で、RoleId の値を探します。

      "RoleId": "AIDACKCEVSQ6C2EXAMPLE"

  3. S3 バケットポリシーこのポリシーを追加します

  4. 制限のあるバケットで DataSync を使用したら、バケットポリシーから両方の IAM ロールの条件を削除します。

VPC アクセスが制限された S3 バケットへのアクセス

特定の仮想プライベートクラウド (VPC) エンドポイントまたは複数の VPC へのアクセスを制限している Amazon S3 バケットは、DataSync がそのバケットとの間で転送を行うことを拒否します。このような状況で転送を可能にするには、DataSync のロケーションで指定した IAM ロールを含むようにバケットのポリシーを更新します。

Option 1: Allowing access based on DataSync location role ARN

S3 バケットポリシーでは、DataSync ロケーションの IAM ロールの Amazon リソースネーム (ARN) を指定することができます。

以下に示すのは、2 つの VPC (vpc-1234567890abcdef0vpc-abcdef01234567890) 以外の VPC からのアクセスを拒否する S3 バケットポリシーの例です。ただしこのポリシーには ArnNotLikeIfExists 条件と aws:PrincipalArn 条件キーも含まれています。これらは DataSync ロケーションのロールの ARN がバケットにアクセスすることを許可します。

{ "Version":"2012-10-17", "Statement": [ { "Sid": "Access-to-specific-VPCs-only", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": [ "vpc-1234567890abcdef0", "vpc-abcdef01234567890" ] }, "ArnNotLikeIfExists": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/datasync-location-role-name" ] } } } ] }
Option 2: Allowing access based on DataSync location role tag

S3 バケットポリシーでは、DataSync ロケーションの IAM ロールにアタッチされたタグを指定することができます。

以下に示すのは、2 つの VPC (vpc-1234567890abcdef0vpc-abcdef01234567890) 以外の VPC からのアクセスを拒否する S3 バケットポリシーの例です。ただしこのポリシーには StringNotEqualsIfExists 条件と aws:PrincipalTag 条件キーも含まれています。これらは、タグキー exclude-from-vpc-restriction と値 true を持つプリンシパルを許可します。DataSync ロケーションのロールにアタッチされたタグを指定することで、バケットポリシーに同様の方法を試すことができます。

{ "Version":"2012-10-17", "Statement": [ { "Sid": "Access-to-specific-VPCs-only", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": [ "vpc-1234567890abcdef0", "vpc-abcdef01234567890" ], "aws:PrincipalTag/exclude-from-vpc-restriction": "true" } } } ] }

Amazon S3 転送におけるストレージクラスに関する考慮事項

Amazon S3 が送信先ロケーションである場合、DataSync はデータを特定の Amazon S3 ストレージクラスに直接転送できます。

一部のストレージクラスの動作は、Amazon S3 のストレージコストに影響する場合があります。オブジェクトの上書き、削除、取得に対して追加料金が発生する可能性があるストレージクラスを使用する場合、オブジェクトデータまたはメタデータを変更すると利用料金ががかかります。詳細については、「Amazon S3 の料金」を参照してください。

重要

Amazon S3 の送信先のロケーションに転送した新しいオブジェクトは、ロケーションを作成するときに指定したストレージクラスを使用して保存されます。

デフォルトでは、すべてのデータを転送するようにタスクを設定しない限り、DataSync は既存のオブジェクトのストレージクラスを送信先のロケーションに保持します。このような状況では、ロケーションの作成時に指定したストレージクラスがすべてのオブジェクトに使用されます。

Amazon S3 ストレージクラス 考慮事項
S3 Standard アクセスが頻繁なファイルを、地理的に分散した複数のアベイラビリティーゾーンに冗長的に保存するには、[S3 Standard] を選択します。これは、ストレージクラスを指定しない場合のデフォルトです。
S3 Intelligent-Tiering

[S3 Intelligent-Tiering] を選択すると、最もコスト効率の高いストレージアクセス階層に自動的にデータを移動して、ストレージコストを最適化できます。

S3 Intelligent-Tiering ストレージクラスに保存されたオブジェクトごとに月額料金を支払います。この Amazon S3 の料金には、データアクセスパターンのモニタリングと階層間のオブジェクトの移動が含まれます。

S3 Standard – IA

アクセスが頻繁ではないオブジェクトを地理的に離れた複数のアベイラビリティーゾーンに冗長的に保存するには、S3 Standard-IA を選択します。

S3 Standard – IA ストレージクラスにオブジェクトを保存すると、上書き、削除、または取得に対して追加料金が発生する可能性があります。これらのオブジェクトを変更する頻度、これらのオブジェクトを保持する期間、およびオブジェクトへの必要なアクセス頻度を検討します。オブジェクトデータまたはメタデータの変更は、オブジェクトを削除して置き換える新しいオブジェクトを作成することと同じです。これにより、S3 Standard — IA ストレージクラスに保存されているオブジェクトに対して追加料金が発生します。

128 KB 未満のオブジェクトは、S3 Standard – IA ストレージアクセスのオブジェクトあたりの最小容量料金より小さくなります。これらのオブジェクトは S3 Standardストレージクラスに保存されます。

S3 1 ゾーン - IA

アクセスが頻繁ではないオブジェクトデータを、単一のアベイラビリティーゾーンに保存するには、[S3 1 ゾーン-IA] を選択します。

S3 1 ゾーン – IA ストレージクラスにオブジェクトを保存すると、上書き、削除、または取得に対して追加料金が発生する可能性があります。これらのオブジェクトを変更する頻度、これらのオブジェクトを保持する期間、およびオブジェクトへの必要なアクセス頻度を検討します。オブジェクトデータまたはメタデータの変更は、オブジェクトを削除して置き換える新しいオブジェクトを作成することと同じです。これにより、S3 1 ゾーン – IA ストレージクラスに保存されているオブジェクトに対して追加料金が発生します。

128 KB 未満のオブジェクトは、S3 1 ゾーン – IA 低頻度アクセスストレージクラスのオブジェクトあたりの最小容量料金より小さくなります。これらのオブジェクトは S3 Standardストレージクラスに保存されます。

S3 Glacier Instant Retrieval

ほとんどアクセスされないがミリ秒単位で検索が必要なオブジェクトをアーカイブするには、S3 Glacier Instant Retrieval を選択します。

S3 Glacier Instant Retrieval ストレージクラスに格納されたデータは、同じレイテンシーとスループット パフォーマンスを持つ S3 Standard-IA ストレージ クラスと比較してコスト削減を実現します。S3 Glacier Instant Retrieval は、S3 Standard – IAよりもデータアクセスコストは高くなります。

S3 Glacier Instant Retrieval にオブジェクトを保存すると、上書き、削除、取得に対して追加料金が発生する場合があります。これらのオブジェクトを変更する頻度、これらのオブジェクトを保持する期間、およびオブジェクトへの必要なアクセス頻度を検討します。オブジェクトデータまたはメタデータの変更は、オブジェクトを削除して置き換える新しいオブジェクトを作成することと同じです。これにより、S3 Glacier Instant Retrieval ストレージ クラスに保存されたオブジェクトに対して追加料金が発生します。

128 KB 未満のオブジェクトは、S3 Glacier Instant Retrieval ストレージクラスのオブジェクトあたりの最小容量料金よりも小さくなります。これらのオブジェクトは S3 Standardストレージクラスに保存されます。

S3 Glacier Flexible Retrieval

よりアクティブなアーカイブには、S3 Glacier Flexible Retrieval を選択してください。

S3 Glacier Flexible Retrievalにオブジェクトを保存すると、上書き、削除、取得に対して追加料金が発生する場合があります。これらのオブジェクトを変更する頻度、これらのオブジェクトを保持する期間、およびオブジェクトへの必要なアクセス頻度を検討します。オブジェクトデータまたはメタデータの変更は、オブジェクトを削除して置き換える新しいオブジェクトを作成することと同じです。これにより、S3 Glacier Flexible Retrievalストレージクラスに保存されているオブジェクトに対して追加料金が発生します。

S3 Glacier Flexible Retrieval ストレージクラスには、アーカイブしたオブジェクトごとに 40 KB のメタデータが追加で必要になります。DataSync は、40 KB 未満のオブジェクトを S3 STANDARD のストレージクラスに配置します。

このストレージクラスにアーカイブされたオブジェクトは、DataSync が読み取る前にリストアする必要があります。詳細については、「Amazon S3 ユーザーガイド」の「アーカイブされたオブジェクトの復元」を参照してください。

S3 Glacier Flexible Retrieval を使用する場合は、[転送されたデータのみを検証] を選択して、転送の終了時にデータとメタデータのチェックサムを比較します。[送信先のすべてのデータを検証] は、このストレージクラスで使用できるオプションではありません。これは、送信先からすべての既存のオブジェクトを取得する必要があるためです。

S3 Glacier Deep Archive

長期のデータ保持、およびデータのアクセス回数が年 1、2 回のデジタル保存のためのファイルのアーカイブには、[S3 Glacier Deep Archive] を選択します。

S3 Glacier Deep Archive にオブジェクトを保存すると、上書き、削除、取得に対して追加料金が発生する場合があります。これらのオブジェクトを変更する頻度、これらのオブジェクトを保持する期間、およびオブジェクトへの必要なアクセス頻度を検討します。オブジェクトデータまたはメタデータの変更は、オブジェクトを削除して置き換える新しいオブジェクトを作成することと同じです。これにより、S3 Glacier Deep Archive ストレージクラスに保存されているオブジェクトに対して追加料金が発生します。

S3 Glacier Deep Archive ストレージクラスには、アーカイブしたオブジェクトごとに 40 KB の追加メタデータが必要です。DataSync は、40 KB 未満のオブジェクトを S3 STANDARD のストレージクラスに配置します。

このストレージクラスにアーカイブされたオブジェクトは、DataSync が読み取る前にリストアする必要があります。詳細については、「Amazon S3 ユーザーガイド」の「アーカイブされたオブジェクトの復元」を参照してください。

S3 Glacier Deep Archive を Amazon S3 ストレージクラスとして使用する場合は、[転送したデータのみを検証] を選択して、転送の終了時にデータとメタデータのチェックサムを比較します。[送信先のすべてのデータを検証] は、このストレージクラスで使用できるオプションではありません。これは、送信先からすべての既存のオブジェクトを取得する必要があるためです。

S3 Outposts

Outposts の Amazon S3 のストレージクラス

DataSync を使用する場合の S3 リクエストコストの評価

Amazon S3 ロケーションでは、DataSync による S3 API リクエストに関連するコストが発生します。このセクションは、DataSync がこれらのリクエストをどのように使用するか、またそれらが Amazon S3 のコストにどのように影響するかを理解するのに役立ちます。

DataSync による S3 リクエスト

次の表は、Amazon S3 ロケーションとの間でデータをコピーするときに DataSync が実行できる S3 リクエストについて説明しています。

S3 リクエスト DataSync がこれを使用する方法

リストオブジェクト V2

DataSync は、フォワードスラッシュ (/) で終わるすべてのオブジェクトに対して、そのプレフィックスで始まるオブジェクトのリストを少なくとも一つの LIST リクエストを作成します。このリクエストはタスクの準備段階で呼び出されます。

HeadObject

DataSync は、タスクの準備フェーズと検証フェーズで、オブジェクトメタデータを取得するために HEAD リクエストを作成します。DataSync が転送するデータの整合性を検証する方法によって、オブジェクトごとに複数の HEAD リクエストが発生する可能性があります。

GetObject

DataSync は、タスクの転送フェーズ中にオブジェクトからのデータを読み取る GET リクエストを作成します。ラージオブジェクトには複数の GET リクエストが存在する可能性があります。

GetObjectTagging

オブジェクトタグをコピーするようにタスクを設定すると、DataSync はタスクの準備フェーズと転送フェーズでオブジェクトタグを確認するようにこれらの GET リクエストを行います。

PutObject

DataSync は、タスクの転送フェーズ中に、宛先 S3 バケットにオブジェクトとプレフィックスを作成するように PUT リクエストを作成します。DataSync は Amazon S3 マルチパートアップロード機能を使用するため、ラージオブジェクトに対して複数の PUT リクエストが発生する可能性があります。ストレージコストを最小限に抑えるには、ライフサイクル設定を使用して不完全なマルチパートアップロードを停止することをお勧めします。

PutObjectTagging

ソースオブジェクトにタグがあり、オブジェクトタグをコピーするようにタスクを設定した場合、DataSync はそれらのタグを転送するときにこれらの PUT リクエストを行います。

CopyObject

DataSync は、オブジェクトのメタデータが変更された場合にのみ、オブジェクトのコピーの作成を COPY リクエストします。これは、メタデータを引き継がない別のサービスまたはツールを使用して S3 バケットに最初にデータをコピーした場合に発生する可能性があります。

コストに関する考慮事項

DataSync は、タスクを実行するたびに S3 バケットで S3 リクエストを行います。このため、状況によっては料金がかさむ可能性がある。例:

  • S3 バケットとの間でオブジェクトを頻繁に転送しています。

  • 転送するデータはそれほど多くないかもしれませんが、S3 バケットには多数のオブジェクトがあります。DataSync はバケットの各オブジェクトに対して S3 リクエストを行うため、このシナリオでも高額な料金が発生する可能性があります。

  • S3 バケット間で転送しているため、DataSync は転送元と転送先で S3 リクエストを行っています。

DataSync に関連する S3 リクエストのコストを最小限に抑えるには、次の点を考慮してください。

どの S3 ストレージクラスを使用していますか。

S3 リクエスト料金は、オブジェクトが使用している Amazon S3 ストレージクラス、特に、オブジェクトをアーカイブするクラスによって異なる場合があります。(例えば、S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval, and S3 Glacier Deep Archive などです)

DataSync を使用するときに、ストレージクラスが S3 リクエストの料金に影響するシナリオをいくつか紹介します。

  • タスクを実行するたびに、DataSync はオブジェクトメタデータを取得する HEAD リクエストを行います。これらのリクエストは、オブジェクトを移動していない場合でも料金が発生します。これらのリクエストが請求書にどの程度影響するかは、オブジェクトが使用しているストレージクラスと、DataSync がスキャンするオブジェクトの数に依存します。

  • オブジェクトを S3 Glacier Instant Retrieval ストレージクラスに (直接またはバケットライフサイクル設定を通じて) 移動した場合、このクラスのオブジェクトに対するリクエストは、他のストレージクラスのオブジェクトよりもコストがかかります。

  • ソースとデスティネーションの場所が完全に同期していることを確認するように DataSync タスクを設定すると、すべてのストレージクラス(S3 Glacier フレキシブルリトリーブと S3 GS3 Glacier Deep Archive を除く)で各オブジェクトに対する GET リクエストが発生します。

  • GET リクエストに加えて、S3 Standard – IA、S3 1 ゾーン — IA、S3 Glacier Instant Retrieval ストレージクラスのオブジェクトに対してデータ取得コストが発生します。

詳細については、「Amazon S3 の料金」を参照してください。

どのくらいの頻度でデータを転送する必要がありますか?

定期的にデータを移動する必要がある場合は、必要以上のタスクを実行しないスケジュールを考えてみてください。

また、転送の範囲を限定することも検討してください。たとえば、特定のプレフィックスのオブジェクトに焦点を当てたり、転送されるデータをフィルタリングしたりするように DataSync を設定できます。これらのオプションは、DataSync タスクを実行するたびに行われる S3 リクエストの数を減らすのに役立ちます。

Amazon S3 の転送に関するその他の考慮事項

  • S3 バケットから転送を行う場合は、S3 Storage Lens を使用して、移動させるオブジェクトの数を計算します。

  • S3 バケット間で転送する場合は、DataSync タスククォータの対象ではないため、拡張タスクモードを使用することをお勧めします。

  • DataSync は、名前に外字が含まれているオブジェクトを転送しない場合があります。詳細については、「Amazon S3 ユーザーガイド」の「オブジェクトキー命名ガイドライン」を参照してください。

  • バージョニングを使用している S3 バケットで DataSync を使用する場合は、次の点に注意してください。

    • S3 バケットへの転送の際に、送信元でオブジェクトが変更されている場合、DataSync はそのオブジェクトの新しいバージョンを作成します。これにより追加料金が発生します。

    • オブジェクトは、送信元のバケットと送信先のバケットでバージョン ID が異なります。

    • 各オブジェクトの最新バージョンのみがソースバケットから転送されます。以前のバージョンは転送先にコピーされません。

  • 最初にS3 バケットからファイルシステム (NFS や Amazon FSx など) にデータを転送した後、同じ DataSync タスクの後続の実行には、変更されたオブジェが含まれません。最初の転送時と同じサイズのオブジェクトを除きます。

Amazon S3 汎用バケットの転送場所の作成

転送用にロケーションを作成するには、既存の S3 汎用バケットが必要です。汎用バケットがない場合は、「Amazon S3 ユーザーガイド」を参照してください。

  1. https://console.aws.amazon.com/datasync/ で AWS DataSync コンソールを開きます。

  2. 左側のナビゲーションペインで [データ転送] を展開し、[ロケーション][ロケーションの作成] を選択します。

  3. [ロケーションタイプ] で、[Amazon S3] を選択し、[汎用バケット] を選択します。

  4. [S3 URI] で、ロケーションに使用するバケットとプレフィックスを入力または選択します。

    警告

    DataSync は、スラッシュ (/) で始まるプレフィックス、または ///./、または /../ パターンを含むプレフィックスを持つオブジェクトを転送できません。例:

    • /photos

    • photos//2006/January

    • photos/./2006/February

    • photos/../2006/March

  5. [S3 ストレージクラス (転送先として使用する場合)] で、Amazon S3 が転送先の場合にオブジェクトが使用するストレージクラスを選択します。

    詳細については、「Amazon S3 転送におけるストレージクラスに関する考慮事項」を参照してください。

  6. [IAM role] (IAM ロール) で、次のいずれかを実行します。

    • DataSync の [自動生成] を DataSync に選択して、S3 バケットへのアクセスに必要なアクセス許可を持つ IAM ロールを自動的に作成します。

      DataSync が以前にこの S3 バケット用 IAM ロール を作成した場合、そのロールがデフォルトで選択されます。

    • 作成したカスタム IAM ロールを選択します。詳細については、「DataSync が Amazon S3 ロケーションにアクセスするために必要な IAM ロールの作成」を参照してください。

  7. (オプション) [新しいタグを追加] を選択して Amazon S3 ロケーションに新しいタグを付けます。

    タグは、リソースの管理、フィルタリング、検索に役立ちます。場所の名前タグを作成することを推奨します。

  8. [ロケーションを作成] を選択します。

  1. 次の create-location-s3 コマンドをコピーします。

    aws datasync create-location-s3 \ --s3-bucket-arn 'arn:aws:s3:::amzn-s3-demo-bucket' \ --s3-storage-class 'your-S3-storage-class' \ --s3-config 'BucketAccessRoleArn=arn:aws:iam::account-id:role/role-allowing-datasync-operations' \ --subdirectory /your-prefix-name
  2. --s3-bucket-arn で、ロケーションとして使用する S3 バケットの ARN を指定します。

  3. --s3-storage-class で、Amazon S3 が転送先となる場合にオブジェクトで使用するストレージクラスを指定します。

  4. --s3-config で、DataSync がバケットにアクセスするために必要な IAM ロールの ARN を指定します。

    詳細については、「DataSync が Amazon S3 ロケーションにアクセスするために必要な IAM ロールの作成」を参照してください。

  5. --subdirectory で、DataSync が読み取りと書き込みを行う S3 バケットのプレフィックスを指定します (バケットが送信元のロケーションか送信先のロケーションかに応じて異なります)。

    警告

    DataSync は、スラッシュ (/) で始まるプレフィックス、または ///./、または /../ パターンを含むプレフィックスを持つオブジェクトを転送できません。例:

    • /photos

    • photos//2006/January

    • photos/./2006/February

    • photos/../2006/March

  6. create-location-s3 コマンドを実行します。

    コマンドが成功すると、作成した場所の ARN を示す応答が返されます。例:

    { "LocationArn": "arn:aws:datasync:us-east-1:111222333444:location/loc-0b3017fc4ba4a2d8d" }

ユーザーはこのロケーションを DataSync タスクの送信元または送信先として使用できます。

S3 on Outposts バケットの転送場所の作成

転送用にロケーションを作成するには、既存の Amazon S3 on Outposts バケットが必要です。Amazon S3 on Outposts バケットがない場合は、「Amazon S3 on Outposts User Guide」を参照してください。

DataSync エージェントも必要です。詳細については、「エージェントの AWS Outposts へのデプロイ」を参照してください。

大規模なデータセット (数十万~数百万件のオブジェクトなど) を含む S3 on Outposts バケットプレフィックスから転送を行うと、DataSync タスクがタイムアウトする可能性があります。これを避けるには、DataSync マニフェスト の使用を検討します。マニフェストでは、転送すべきオブジェクトの数を厳密に指定できます。

  1. https://console.aws.amazon.com/datasync/ で AWS DataSync コンソールを開きます。

  2. 左側のナビゲーションペインで [データ転送] を展開し、[ロケーション][ロケーションの作成] を選択します。

  3. [ロケーションタイプ] で、[Amazon S3] を選択し、[Outposts バケット] を選択します。

  4. [S3 バケット] で、S3 on Outposts バケットにアクセスできる Amazon S3 アクセスポイントを選択します。

    詳細については、「Amazon S3 ユーザーガイド」を参照してください。

  5. [S3 ストレージクラス (転送先として使用する場合)] で、Amazon S3 が転送先の場合にオブジェクトが使用するストレージクラスを選択します。

    詳細については、「Amazon S3 転送におけるストレージクラスに関する考慮事項」を参照してください。DataSync は、デフォルトで Amazon S3 on Outposts の S3 Outposts ストレージ クラスを使用します。

  6. [エージェント] で、Outpost 上の DataSync エージェントの Amazon リソースネーム (ARN) を指定します。

  7. [フォルダー] で、DataSync が読み書きする S3 バケットのプレフィックスを入力します (バケットが送信元または送信先の場所であるかどうかに応じて)。

    警告

    DataSync は、スラッシュ (/) で始まるプレフィックス、または ///./、または /../ パターンを含むプレフィックスを持つオブジェクトを転送できません。例:

    • /photos

    • photos//2006/January

    • photos/./2006/February

    • photos/../2006/March

  8. [IAM role] (IAM ロール) で、次のいずれかを実行します。

    • DataSync の [自動生成] を DataSync に選択して、S3 バケットへのアクセスに必要なアクセス許可を持つ IAM ロールを自動的に作成します。

      DataSync が以前にこの S3 バケット用 IAM ロール を作成した場合、そのロールがデフォルトで選択されます。

    • 作成したカスタム IAM ロールを選択します。詳細については、「DataSync が Amazon S3 ロケーションにアクセスするために必要な IAM ロールの作成」を参照してください。

  9. (オプション) [新しいタグを追加] を選択して Amazon S3 ロケーションに新しいタグを付けます。

    タグは、リソースの管理、フィルタリング、検索に役立ちます。場所の名前タグを作成することを推奨します。

  10. [ロケーションを作成] を選択します。

  1. 次の create-location-s3 コマンドをコピーします。

    aws datasync create-location-s3 \ --s3-bucket-arn 'bucket-access-point' \ --s3-storage-class 'your-S3-storage-class' \ --s3-config 'BucketAccessRoleArn=arn:aws:iam::account-id:role/role-allowing-datasync-operations' \ --subdirectory /your-folder \ --agent-arns 'arn:aws:datasync:your-region:account-id::agent/agent-agent-id'
  2. [--s3-bucket-arn] で、S3 on Outposts バケットにアクセスできる Amazon S3 アクセスポイントの ARN を指定します。

    詳細については、「Amazon S3 ユーザーガイド」を参照してください。

  3. --s3-storage-class で、Amazon S3 が転送先となる場合にオブジェクトで使用するストレージクラスを指定します。

    詳細については、「Amazon S3 転送におけるストレージクラスに関する考慮事項」を参照してください。DataSync は、デフォルトで S3 on Outposts の S3 Outposts ストレージクラスを使用します。

  4. --s3-config で、DataSync がバケットにアクセスするために必要な IAM ロールの ARN を指定します。

    詳細については、「DataSync が Amazon S3 ロケーションにアクセスするために必要な IAM ロールの作成」を参照してください。

  5. --subdirectory で、DataSync が読み取りと書き込みを行う S3 バケットのプレフィックスを指定します (バケットが送信元のロケーションか送信先のロケーションかに応じて異なります)。

    警告

    DataSync は、スラッシュ (/) で始まるプレフィックス、または ///./、または /../ パターンを含むプレフィックスを持つオブジェクトを転送できません。例:

    • /photos

    • photos//2006/January

    • photos/./2006/February

    • photos/../2006/March

  6. [--agent-arns] で、Outpost の DataSync エージェントの ARN を指定します。

  7. create-location-s3 コマンドを実行します。

    コマンドが成功すると、作成した場所の ARN を示す応答が返されます。例:

    { "LocationArn": "arn:aws:datasync:us-east-1:111222333444:location/loc-0b3017fc4ba4a2d8d" }

ユーザーはこのロケーションを DataSync タスクの送信元または送信先として使用できます。

AWS アカウントをまたぐ Amazon S3 転送

DataSync を使用すると、異なる AWS アカウントの S3 バケット間でデータを移動できます。詳細については、以下のチュートリアルを参照してください。

商用リージョンと AWS GovCloud (US) Regions 間の Amazon S3 転送

DataSync は、デフォルトでは商用リージョンの S3 バケットと AWS GovCloud (US) Regions の S3 バケットとの間の転送を行いません。ただし、転送時に S3 バケットの 1 つにオブジェクトストレージのロケーションを作成することでこのタイプの転送を行うことができます。このタイプの転送は、エージェントの有無にかかわらず実行できます。エージェントを使用する場合は、タスクを基本モードに設定する必要があります。エージェントなしで転送するには、拡張モードを使用する必要があります。

開始する前に: リージョン間での転送によるコストへの影響を理解しておきます。詳細については、AWS DataSync の料金を参照してください。

DataSync に対するオブジェクトストレージのロケーションのバケットへのアクセス許可の付与

転送用のオブジェクトストレージのロケーションを作成するときは、ロケーションにある S3 バケットにアクセスするためのアクセス許可を持つ、IAM ユーザーの認証情報を DataSync に付与する必要があります。詳細については、「必要なアクセス許可」を参照してください。

警告

IAM ユーザーは長期認証情報を保有するため、セキュリティ上のリスクが生じます。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーを削除することをお勧めします。

DataSync エージェントの作成 (オプション)

基本モードを使用して転送を実行する場合は、エージェントを使用する必要があります。商用のリージョンと AWS GovCloud (US) Regionとの間の転送を行うため、DataSync エージェントをいずれかのリージョンに Amazon EC2 インスタンスとしてデプロイします。パブリックインターネットでデータ転送料金が発生しないよう、エージェントが VPC サービスエンドポイントを使用することをお勧めします。詳細については、「Amazon EC2 Data Transfer pricing」を参照してください。

DataSync タスクを実行するリージョンに基づいてエージェントを作成する方法を説明した、以下のシナリオの中から 1 つ選択します。

以下の図は、DataSync タスクとエージェントが商用リージョンにある場合の転送を示したものです。

AWS GovCloud (US) Region にある S3 バケットへのクロスリージョン転送のために、商用リージョンにデプロイされた DataSync エージェント。
リファレンス Description
1 DataSync タスクを実行している商用リージョンでは、データは送信元の S3 バケットから転送されます。送信元のバケットは、商用リージョンで Amazon S3 のロケーションとして設定されます。
2 DataSync エージェントを介したデータ転送です。DataSync エージェントは VPC サービスエンドポイントおよびネットワークインターフェイスが配置されている場所と同じ VPC およびサブネットにあります。
3 AWS GovCloud (US) Region の送信先 S3 バケットへのデータ転送。送信先バケットは商用リージョンのオブジェクトストレージロケーションとして設定されます。

同じセットアップを使用して、AWS GovCloud (US) Region から商用リージョンに反対方向の転送を行うこともできます。

DataSync エージェントを作成するには
  1. 商用リージョンに Amazon EC2 エージェントをデプロイします

  2. VPC サービスエンドポイントを使用するようにエージェントを設定します。

  3. エージェントをアクティブ化します

以下の図は、DataSync タスクとエージェントが AWS GovCloud (US) Region にある場合の転送を示したものです。

AWS GovCloud (US) Region にデプロイされた DataSync エージェント、または同じ AWS GovCloud (US) Region にある S3 バケットへのクロスリージョン転送。
リファレンス Description
1 データは商用リージョにある送信元の S3 バケットから、DataSync タスクを実行している AWS GovCloud (US) Region に転送されます。送信元のバケットは、AWS GovCloud (US) Region にオブジェクトストレージロケーションとして設定されます。
2 AWS GovCloud (US) Region では、データは、VPC サービスエンドポイントおよびネットワークインターフェイスが配置されている場所と同じ VPC およびサブネットの DataSync エージェントを介して転送されます。
3 AWS GovCloud (US) Region の送信先 S3 バケットへのデータ転送。送信先のバケットは、AWS GovCloud (US) Region の Amazon S3 ロケーションとして設定されます。

同じセットアップを使用して、AWS GovCloud (US) Region から商用リージョンに反対方向の転送を行うこともできます。

DataSync エージェントを作成するには
  1. Amazon EC2 エージェントを AWS GovCloud (US) Region にデプロイします。

  2. VPC サービスエンドポイントを使用するようにエージェントを設定します。

  3. エージェントをアクティブ化します

データセットの圧縮性が高い場合、AWS GovCloud (US) Region でタスクを実行しながら商用リージョンにエージェントを作成することでコストを削減できる可能性があります。このエージェントの作成には通常より多くの設定が必要になります (商用リージョンで使用するためのエージェントの準備など)。この設定でエージェントを作成する方法の詳細については、ブログ記事「Move file data in and out of AWS GovCloud (US) with AWS DataSync」を参照してください。

S3 バケットのオブジェクトストレージロケーションの作成

DataSync タスクを実行していないリージョンにある S3 バケットには、オブジェクトストレージのロケーションが必要です。

  1. https://console.aws.amazon.com/datasync/ で AWS DataSync コンソールを開きます。

  2. タスクを実行する予定のリージョンと同じリージョンにいることを確認します。

  3. 左側のナビゲーションペインで [データ転送] を展開し、[ロケーション][ロケーションの作成] を選択します。

  4. 場所タイプで、オブジェクトストレージを選択します。

  5. [エージェント] で、転送用に作成した DataSync エージェントを選択します。

  6. [サーバー] で、次のいずれかの形式を使用して、バケット用の Amazon S3 エンドポイントを入力します。

    • 商用リージョンバケット: s3.your-region.amazonaws.com

    • AWS GovCloud (US) Region バケット: s3.your-gov-region.amazonaws.com

    Amazon S3 エンドポイントのリストについては、「AWS 全般のリファレンス」を参照してください。

  7. [バケット] の名前に、S3 バケットの名前を入力します。

  8. [フォルダー] で、DataSync が読み書きする S3 バケットのプレフィックスを入力します (バケットが送信元または送信先の場所であるかどうかに応じて)。

    警告

    DataSync は、スラッシュ (/) で始まるプレフィックス、または ///./、または /../ パターンを含むプレフィックスを持つオブジェクトを転送できません。例:

    • /photos

    • photos//2006/January

    • photos/./2006/February

    • photos/../2006/March

  9. [認証情報が必要です] を選択し、以下を実行します。

    • [アクセスキー] に、そのバケットにアクセスできる IAM ユーザーのアクセスキーを入力します。

    • [シークレットキー] に、上と同じ IAM ユーザーのシークレットキーを入力します。

  10. (オプション)[タグを追加] を選択して場所にタグを付けます。

    タグは、リソースの管理、フィルタリング、検索に役立ちます。場所の名前タグを作成することを推奨します。

  11. [ロケーションを作成] を選択します。

  1. 次の create-location-object-storage コマンドをコピーします。

    aws datasync create-location-object-storage \ --server-hostname s3-endpoint \ --bucket-name amzn-s3-demo-bucket \ --agent-arns arn:aws:datasync:your-region:123456789012:agent/agent-01234567890deadfb
  2. --server-hostname パラメータで、次のいずれかの形式を使用して、バケットの Amazon S3 エンドポイントを指定します。

    • 商用リージョンバケット: s3.your-region.amazonaws.com

    • AWS GovCloud (US) Region バケット: s3.your-gov-region.amazonaws.com

    エンドポイントのリージョンで、タスクを実行する予定のリージョンと同じリージョンを指定していることを確認します。

    Amazon S3 エンドポイントのリストについては、「AWS 全般のリファレンス」を参照してください。

  3. --bucket-name パラメータで、S3 バケットの名前を指定します。

  4. --agent-arns パラメータで、この転送用に作成した DataSync エージェントを指定します。

  5. --access-key パラメータで、このバケットにアクセスできる IAM ユーザーのアクセスキーを指定します。

  6. --secret-key パラメータで、上と同じ IAM ユーザーのシークレットキーを入力します。

  7. (オプション) --subdirectory パラメータで、DataSync が読み取りと書き込みを行う S3 バケットのプレフィックスを指定します (バケットが送信元のロケーションか送信先のロケーションかに応じて異なります)。

    警告

    DataSync は、スラッシュ (/) で始まるプレフィックス、または ///./、または /../ パターンを含むプレフィックスを持つオブジェクトを転送できません。例:

    • /photos

    • photos//2006/January

    • photos/./2006/February

    • photos/../2006/March

  8. (オプション) --tags パラメータで、ロケーションリソースのタグを表すキーと値のペアを指定します。

    タグは、リソースの管理、フィルタリング、検索に役立ちます。場所の名前タグを作成することを推奨します。

  9. create-location-object-storage コマンドを実行します。

    先ほど作成した場所の ARN を示す応答が表示されます。

    { "LocationArn": "arn:aws:datasync:us-east-1:123456789012:location/loc-01234567890abcdef" }

ユーザーはこのロケーションを DataSync タスクの送信元または送信先として使用できます。この転送の他の S3 バケットで、Amazon S3 のロケーションを作成します

次のステップ

取りうる次のステップには、以下のようなものがあります。

  1. 必要に応じて他のロケーションを作成します。詳細については、AWS DataSync のデータはどこに転送できますか?を参照してください。

  2. DataSync タスクの設定を設定します。例えば、転送するファイルやメタデータの処理方法などを設定します。

  3. DataSync タスクのスケジュールを設定します

  4. DataSync タスクのモニタリングを設定します

  5. タスクを開始します