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:AbortMultipartUpload", "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" }, { "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/*" } ] }
Amazon S3 on Outposts
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3-outposts:ListBucket", "s3-outposts:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": [ "arn:aws:s3-outposts:region:account-id:outpost/outpost-id/bucket/amzn-s3-demo-bucket", "arn:aws:s3-outposts:region:account-id: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:region:account-id:outpost/outpost-id/bucket/amzn-s3-demo-bucket/*", "arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/bucket-access-point-name/*" ] }, { "Action": "s3-outposts:GetAccessPoint", "Effect": "Allow", "Resource": "arn:aws:s3-outposts:region:account-id: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. [Next (次へ)] を選択します。ポリシーの名前を入力し、[ポリシーの作成] を選択します。

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

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

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

      { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "StringLike": { "aws:SourceArn": "arn:aws:datasync:region:account-id:*" } } }] }
    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 ロールの名前。

{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id: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::account-id:role/datasync-role-name" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*" } ] }

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

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

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

    { "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::account-id: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 タスククォータの対象にならないため、拡張タスクモードを使用することをお勧めします。 AWS 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. Location type で Amazon 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 ユーザーガイド」を参照してください。

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

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

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

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

  3. Location type で Amazon Amazon S3 を選択し、Outposts バケットを選択します。

  4. S3 バケットで、Amazon S3 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、Amazon S3 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 つにオブジェクトストレージのロケーションを作成することでこのタイプの転送を行うことができます。このタイプのロケーションには DataSync エージェントが必要です。

開始する前に: リージョン間での転送によるコストへの影響を理解しておきます。詳細については、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 エージェント。
参照資料 説明
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にある場合の転送を示したものです。

にデプロイされた DataSync エージェント、 AWS GovCloud (US) Region または同じ の S3 バケットへのクロスリージョン転送 AWS GovCloud (US) Region。
参照資料 説明
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 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. タスクを開始します