为创建 Amazon S3 位置Amazon DataSync - Amazon DataSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为创建 Amazon S3 位置Amazon DataSync

位置是 Amazon S3 存储桶的终端节点。 Amazon DataSync可以使用该位置作为复制数据的源或目标。

重要

访问 S3 存储桶

DataSync 需要访问您的 Amazon S3 存储桶。为此, DataSync 假设一个具有 IAM 策略和Amazon Identity and Access Management () 信任关系的Amazon Security Token Service (IAMAmazon STS) 角色。策略决定角色可以执行哪些操作。

DataSync 可以为您创建此角色,但在某些情况下,您可能需要手动创建角色。有关更多信息,请参阅使用 IAM 策略访问您的 S3 存储桶

Amazon S3 位置的存储类别注意事项

DataSync 可以将对象直接传输到您在创建 Amazon S3 位置时指定的 Amazon S3 存储类中。有些存储类别的行为会影响您的 Amazon S3 存储成本。有关更多信息,请参阅 Amazon S3 定价

重要

复制到 S3 存储桶的新对象使用您在创建 Amazon S3 位置时指定的存储类进行存储。 DataSync 不会更改存储段中现有对象的存储类别(即使该对象在源位置进行了修改)。

Amazon S3 存储类 注意事项
S3 Standard 选择 S3 Standard 以冗余方式将您经常访问的文件存储在地理位置分隔的多个可用区中。如果您没有指定存储类别,则这是默认设置。
S3 Intelligent-Tiering

选择 S3 Intelligent-Tiering (S3 智能分层),可通过自动将数据移动到最具成本效益的存储访问层来优化存储成本。

您为每个存储在 S3 Intelligent-Tiering 存储类中的对象支付月费。这项 Amazon S3 费用包括监控数据访问模式和在层间移动对象。

S3 Standard-IA

选择 S3 Standard-IA 将您不经常访问的对象以冗余方式存储在地理位置分隔的多个可用区中。

存储在 S3 标准 — IA 存储类中的对象可能会因覆盖、删除或检索而产生额外费用。考虑这些对象的更改频率,计划保留这些对象的时间以及需要访问的频率。对对象数据或元数据的更改等同于删除一个对象并创建一个新对象来替换它。这会导致存储在 S3 Standardard-IA 存储类中的对象收取额外费用。

小于 128 KB 的对象小于 S3 标准 — IA 存储类中的每个对象的最低容量费用。这些对象存储在 S3 Standard 存储类中。

S3 One Zone-IA

选择 S3 One Zone-IA 将您不经常访问的对象存储在单个可用区中。

存储在 S3 单区 — IA 存储类中的对象可能会因覆盖、删除或检索而产生额外费用。考虑这些对象的更改频率,计划保留这些对象的时间以及需要访问的频率。对对象数据或元数据的更改等同于删除一个对象并创建一个新对象来替换它。这会导致存储在 S3 One Zone-IA 存储类中的对象收取额外费用。

小于 128 KB 的对象小于 S3 单区 — IA 存储类中的每个对象的最低容量费用。这些对象存储在 S3 Standard 存储类中。

S3 Glacier 即时检索

选择 S3 Glacier 即时检索来存档很少被访问但需要在毫秒内检索的对象。

与 S3 Standard-IA 存储类相比,存储在 S3 Glacier Instant Retrieval 存储类中的数据可以节省成本。但是,S3 Glacier 即时检索的数据访问成本高于 S3 Standardard-IA。

存储在 S3 Glacier 即时检索中的对象可能会因覆盖、删除或检索而产生额外费用。考虑这些对象的更改频率,计划保留这些对象的时间以及需要访问的频率。对对象数据或元数据的更改等同于删除一个对象并创建一个新对象来替换它。这会导致存储在 S3 Glacier 即时检索存储类中的对象收取额外费用。

小于 128 KB 的对象小于 S3 Glacier Instant Retrieval 存储类中的每个对象的最低容量费用。这些对象存储在 S3 Standard 存储类中。

S3 Glacier Flexible Retrieval

选择 S3 Glacier 灵活检索可获取更多活跃档案。

存储在 S3 Glacier Flexible Retrieval 中的对象可能会因覆盖、删除或检索而产生额外费用。考虑这些对象的更改频率,计划保留这些对象的时间以及需要访问的频率。对对象数据或元数据的更改等同于删除一个对象并创建一个新对象来替换它。这将导致存储在 S3 Glacier Flexible Retrieval Retrieval 存储类中的对象

小于 40 KB 的对象小于 S3 Glacier Flexible Retrieval 存储类中的每个对象的最低容量费用。这些对象存储在 S3 Standard 存储类中。

必须先恢复在此存储类中存档的对象,然后 DataSync 才能读取它们。有关信息,请参阅 Amazon S3 用户指南中的处理存档对象

使用 S3 Glacier 灵活检索时,选择 “仅验证已传输的数据” 任务选项,以便在传输结束时比较数据和元数据校验和。您不能对该存储类使用 “验证目标中的所有数据” 选项,因为它需要从目标检索所有现有对象。

S3 Glacier Deep Archive

选择 S3 Glacier Deep Archive 对您的对象进行存档,以便长期保留数据和进行数字保存,每年访问一次或两次数据。

存储在 S3 Glacier Deep Archive 中的对象可能会因覆盖、删除或检索而产生额外费用。考虑这些对象的更改频率,计划保留这些对象的时间以及需要访问的频率。对对象数据或元数据的更改等同于删除一个对象并创建一个新对象来替换它。这会导致存储在 S3 Glacier Deep Archive 存储类中的对象收取额外费用。

小于 40 KB 的对象小于 S3 Glacier Deep Archive 存储类中的每个对象的最低容量费用。这些对象存储在 S3 Standard 存储类中。

必须先恢复在此存储类中存档的对象,然后 DataSync 才能读取它们。有关信息,请参阅 Amazon S3 用户指南中的处理存档对象

使用 S3 Glacier Deep Archive 时,选择 “仅验证已传输的数据” 任务选项,在传输结束时比较数据和元数据校验和。您不能对该存储类使用 “验证目标中的所有数据” 选项,因为它需要从目标检索所有现有对象。

S3 Outposts 基地

Amazon S3 on Outposts 的存储类。

使用时评估 S3 请求成本 DataSync

使用 Amazon S3 地点,您会承担与 Amazon S3 发出的 S3 API 请求相关的费用 DataSync。本节可以帮助您了解这些请求是如何 DataSync 使用的,以及它们会如何影响您的 Amazon S3 成本

由 S3 发出的 DataSync

下表描述了当您将数据复制到 Amazon S3 位置或从 Amazon S3 位置复制数据时 DataSync 可以发出的 S3 请求。

S3 请求 它是如何 DataSync 使用的

ListObjectV2

DataSync 对每个以正斜杠 (/) 结尾的对象发出至少一个LIST请求,以列出以该前缀开头的对象。此请求是在任务的准备阶段调用的。

HeadObject

DataSync 在任务的准备验证阶段HEAD请求检索对象元数据。每个对象可能有多个HEAD请求,具体取决于您 DataSync 要如何验证其传输的数据的完整性

GetObject

DataSync 在任务的传输阶段GET请求从对象读取数据。可以对大型对象有多个GET请求。

PutObject

DataSync 在任务的传输阶段PUT请求在目标 S3 存储桶中创建对象。由于 DataSync 使用 Amazon S3 分段上传功能,因此可以对大型对象PUT发出多个请求。

CopyObject

DataSync 仅当对象的元数据发生变化时,才会COPY请求创建该对象的副本。如果您最初使用未延续其元数据的其他服务或工具将数据复制到 S3 存储桶,则可能会发生这种情况。

与成本相关的注意事项

DataSync 每次运行任务时都会对 S3 存储段发出 S3 请求。在某些情况下,这可能会导致费用增加。例如:

  • 您经常将对象传输为 S3 存储桶,或从 S3 存储桶传输对象。

  • 您传输的数据可能不多,但是您的 S3 存储桶中有很多对象。在这种情况下,您仍然会看到高额费用,因为 DataSync 会对存储桶的每个对象发出 S3 请求。

  • 您在 S3 存储段之间传输,在源和目标上发出 S3 请求 DataSync 也是如此。

为了帮助最大限度地减少与之相关的 S3 请求成本 DataSync,请考虑以下几点:

我使用的 S3 存储类?

S3 请求费用可能会有所不同,具体视对象使用的 Amazon S3 存储类而定(例如 S3 Glacier 即时检索、S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive Dee

以下是使用时存储类别会影响您的 S3 请求费用的一些场景 DataSync:

  • 每次运行任务时, DataSync 都会HEAD请求检索对象元数据。即使您没有移动任何物体,这些请求也会产生费用。这些请求对账单的影响程度取决于您的对象使用的存储类以及要 DataSync 扫描的对象数量。

  • 如果您将对象移入 S3 Glacier 即时检索存储类(直接或通过存储段生命周期配置),则对该类中对象的请求比其他存储类中的对象更昂贵。

  • 如果您将 DataSync 任务配置为验证源位置和目标位置是否完全同步,则所有存储类别(S3 Glacier 灵活检索和 S3 Glacier S3 Glacier Deep Archive 除外)中的每个对象都会GET收到请求。

  • GET请求外,您还会对 S3 标准 — IA、S3 单区 — IA 或 S3 Glacier Instant Retrieval 存储类中的对象产生数据检索费用。

有关更多信息,请参阅 Amazon S3 定价

我需要多久传输一次数据?

如果您需要定期移动数据,可以考虑一个不会运行超出所需任务的计划

您也可以考虑限制您的转账范围。例如,您可以配置 DataSync 为聚焦于某些前缀中的对象或筛选要传输的数据。这些选项可以帮助减少您每次运行 DataSync 任务时发出的 S3 请求数量。

Amazon S3 位置的其他注意事项

将 Amazon S3 与一起使用时 DataSync,请记住以下几点:

  • 对对象数据或元数据的更改等同于删除和替换对象。在以下情况下,这些更改会导致额外费用:

    • 使用对象版本控制时-对对象数据或元数据的更改会创建对象的新版本。

    • 当使用的存储类可能会因覆盖、删除或检索对象而产生额外费用时,对对象数据或元数据的更改会产生此类费用。有关更多信息,请参阅Amazon S3 位置的存储类别注意事项

  • 在 Amazon S3 中使用对象版本控制时,运行一次 DataSync 任务可能会创建 Amazon S3 对象的多个版本。

  • DataSync 如果对象的名称中包含非标准字符,则可能无法传输该对象。有关更多信息,请参阅 Amazon S3 用户指南中的对象键命名指南

  • 为了帮助最大限度地降低您的 Amazon S3 存储成本,我们建议使用生命周期配置来停止未完成的分段上传。有关更多信息,请参阅 Amazon S3 用户指南

  • 最初将数据从 S3 存储桶传输到文件系统(例如,NFS 或 Amazon FSx)后,后续运行的同一 DataSync 任务将不包括经过修改但大小与第一次传输期间相同的对象。

创建地点

要创建位置。如果您没有,请参阅 Amazon S3 用户指南中的 Amazon S3 入门

提示

如果您的 S3 存储桶包含具有不同存储类别的对象,请了解如何DataSync使用这些存储类别以及它们会如何影响您的Amazon账单

创建 Amazon S3 位置
  1. 通过 https://console.aws.amazon.com/datasync/ 打开Amazon DataSync主机。

  2. 转到位置页面,然后选择创建地点

  3. 对于位置类型,选择 Amazon S3

  4. 对于 S3 桶而言,请选择要用作位置的桶。(稍后创建 DataSync 任务时,您可以指定此位置是源位置还是目标位置。)

    如果您的 S3 存储桶位于Amazon Outposts资源上,则必须指定 Amazon S3 访问点。有关更多信息,请参阅 Amazon S3 用户指南中的使用 Amazon S 3 访问点管理数据访问。

  5. 对于 S3 存储类,选择您希望对象使用的存储类。

    有关更多信息,请参阅Amazon S3 位置的存储类别注意事项。 DataSync 默认情况下,Outposts 上使用 Amazon S3 Outposts 存储类。

  6. (仅限 OAmazon S3 位于 Outposts post 上)对于代理,请指定 Outpos DataSync t 上代理的 Amazon 资源名称(ARN)。

    有关更多信息,请参阅在... 上部署代理Amazon Outposts

  7. 对于文件夹,在 S3 存储桶中输入 DataSync 读取或写入内容的前缀(具体视存储桶是源位置还是目标位置而定)。

    注意

    前缀不能以斜杠(例如/photos)开头,也不能包含连续的斜杠,例如photos//2006/January

  8. 对于 IAM role (IAM 角色),执行以下操作之一:

    • 选择 A u tog DataSync entory for 自动创建具有访问 S3 存储桶所需权限的 IAM 角色。

      如果 DataSync 之前为此 S3 存储桶创建了 IAM 角色,则默认情况下会选择该角色。

    • 选择您创建的自定义 IM 角色。有关更多信息,请参阅手动创建 IAM 角色以访问您的 Amazon S3 存储桶

  9. (可选)选择添加标签来标记您的 Amazon S3 位置。

    标签 是帮助您管理、筛选和搜索位置的键值对。

  10. 选择创建地点

使用 IAM 策略访问您的 S3 存储桶

根据您的 S3 存储桶的安全设置,您可能需要创建允许 DataSync 访问存储桶的自定义 IAM 策略。

手动创建 IAM 角色以访问您的 Amazon S3 存储桶

虽然 DataSync 可以为您创建具有所需的 S3 存储桶权限的 IAM 角色,但您也可以自己配置角色。

手动创建 IAM 角色以访问您的 Amazon S3 存储桶
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在左侧导航窗格的 “访问管理” 下,选择 “角色”,然后选择 “创建角色”。

  3. “选择可信实体” 页面上,对于可信实体类型,选择Amazon Web Service

  4. 对于用例DataSync在下拉列表中选择并选择 DataSync -S3 位置。选择下一步

  5. 添加权限页面上,FullAccess为中的 S3 存储桶选择 Amazon S3Amazon Web Services 区域。选择下一步

    您可以手动创建比 AmazonS3 更严格的政策FullAccess。示例如下:

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

    对于 Amazon S3 on Outposts,使用以下策略:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3-outposts:ListBucket", "s3-outposts:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": [ "s3OutpostsBucketArn", "s3OutpostsAccessPointArn" ], "Condition": { "StringLike": { "s3-outposts:DataAccessPointArn": "s3OutpostsAccessPointArn" } } }, { "Action": [ "s3-outposts:AbortMultipartUpload", "s3-outposts:DeleteObject", "s3-outposts:GetObject", "s3-outposts:ListMultipartUploadParts", "s3-outposts:GetObjectTagging", "s3-outposts:PutObjectTagging" ], "Effect": "Allow", "Resource": [ "s3OutpostsBucketArn/*", "s3OutpostsAccessPointArn" ], "Condition": { "StringLike": { "s3-outposts:DataAccessPointArn": "s3OutpostsAccessPointArn" } } }, { "Effect": "Allow", "Action": [ "s3-outposts:GetAccessPoint" ], "Resource": "s3OutpostsAccessPointArn" } ] }
  6. 为您的角色命名,然后选择创建角色

  7. 通过 https://console.aws.amazon.com/datasync/ 打开Amazon DataSync主机。

  8. 选择 IAM 角色设置旁边的刷新按钮,然后选择您刚刚创建的角色。

防范跨服务混淆淆淆淆淆淆了代理

为防止出现跨服务混淆的代理问题,我们建议在您的 IAM 角色的信任策略中使用aws:SourceArnaws:SourceAccount全局条件上下文密钥。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "aws:SourceArn": "arn:aws:datasync:us-east-2:123456789012:*" } } } ] }

使用服务器端加密访问 S3 存储桶

DataSync 可以将数据复制到使用服务器端加密的 S3 存储桶或从中复制数据。存储段使用的加密密钥类型可以决定您是否需要 DataSync 允许访问存储段的自定义策略。

DataSync 与使用服务器端加密的 S3 存储桶一起使用时,请记住以下几点:

  • 如果您的 S3 存储桶使用Amazon托管密钥加密,则默认情况下 DataSync 可以访问存储桶的对象,前提是您的所有资源都相同Amazon Web Services 账户。

  • 如果您的 S3 存储桶使用客户管理Amazon Key Management Service (Amazon KMS) 密钥 (SSE-KMS) 加密,则密钥的策略必须包括 DataSync 用于访问存储段的 IAM 角色。

  • 如果您的 S3 存储桶是使用客户管理的 SSE-KMS 密钥加密的,则 DataSync 需要获得访问另一个存储桶的权限Amazon Web Services 账户。Amazon Web Services 账户您可以通过执行以下操作进行设置:

  • 如果您的 S3 存储桶已使用客户提供的加密密钥(SSE-C)进行加密,则 DataSync无法访问此存储桶。

以下示例是客户管理的 SSE-KMS 密钥的密钥策略。该策略与使用服务器端加密的 S3 存储桶相关联。以下值特定于您的设置:

  • 您的帐户— 您的Amazon Web Services 账户.

  • your-admin-role— 可以管理密钥的 IAM 角色。

  • your-datasync-role— 允许在访问存储段时 DataSync 使用密钥的 IAM 角色。

{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::your-account:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::your-account:role/your-admin-role" }, "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::your-account:role/your-datasync-role" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::your-account:role/your-datasync-role" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }