本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWSSupport-ConfigureS3ReplicationSameAndCrossAccount
描述
AWSSupport-ConfigureS3ReplicationSameAndCrossAccount自动化运行手册为相同账户或跨账户配置亚马逊简单存储服务 (Amazon S3) Simple Storage Service 在源存储桶和目标存储桶之间复制。此自动化支持复制使用服务器端加密、使用 Amazon S3 托管密钥 (SSE-S3) 和使用 (SSE-KMS) 进行服务器端加密 (SSE-KMS) 加密的存储桶。 AWS Key Management Service 它还支持基于前缀和标签的选择性复制筛选、具有 15 分钟 SLA 的 Amazon S3 复制时间控制 (Amazon S3 RTC) 以及删除标记复制。自动化会执行以下操作:
验证输入参数和存储桶配置的兼容性。
检查源存储桶和目标存储桶的加密设置。
如果未作为输入提供,则创建一个具有相应复制权限的新 AWS Identity and Access Management (IAM) 角色。
根据指定的参数(前缀、标签或整个存储桶)配置复制规则。
如果尚未启用,则启用存储桶版本控制。
使用复制时间控制 (RTC) 和删除标记复制等可选功能设置复制配置。
重要
-
这种自动化不支持具有现有复制规则的存储桶。源存储桶不得有任何现有的复制配置。
-
如果未提供 S3 ReplicationRole 输入,此自动化会创建一个具有相应复制权限的新 IAM 角色。
-
这种自动化不会复制现有对象。Amazon S3 复制仅适用于启用复制配置 uploaded/created 后的对象。
-
要进行跨账户复制,您必须在目标账户中为一个 IAM 角色提供相应的 Amazon S3 操作和 AWS KMS 操作权限(如果存储桶使用 AWS KMS 加密)。
-
此自动化使用
aws:approve操作,该操作会暂时暂停执行,直到指定的委托人批准配置更改。有关更多信息,请参阅与批准者一起运行自动化。
如何工作?
运行手册执行以下步骤:
ValidateInputParameters:验证所有输入参数的正确性和兼容性,以确保复制配置正确。
PrepareApprovalMessage:准备包含所有复制配置参数的批准消息,以供用户查看。
RequestApproval:在源存储桶上添加 Amazon S3 复制配置之前,请先请求授权用户的批准。
CheckBucketEncryption:检查源和目标 Amazon S3 存储桶的加密配置,以确定兼容的复制设置。
BranchOnEncryptionType:基于 Amazon S3 存储桶加密类型分支执行,以便为 SSE-S3 或 SSE-KMS 加密存储桶应用适当的复制配置。
配置SSES3复制:为使用服务器端加密和 Amazon S3 托管密钥 (SSE-S3) 加密的存储桶配置 Amazon S3 复制,包括 IAM 角色和复制规则。
配置 SSEKMSReplication:为使用服务器端加密 AWS KMS (SSE-KMS) 加密的存储桶配置 Amazon S3 复制,包括 IAM 角色、KMS 密钥权限和复制规则。
CleanupResources:如果未提供 S3 作为输入,则清理在复制配置失败期间创建ReplicationRole 的 IAM 角色。
所需的 IAM 权限
AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。
s3:ListBucket
s3:GetBucketVersioning
s3:GetEncryptionConfiguration
s3:GetBucketLocation
s3:GetReplicationConfiguration
s3:PutBucketVersioning
s3:PutReplicationConfiguration
我是:ListRoles
我是:GetRole
我是:GetRolePolicy
我是:ListRoleTags
我是:ListAttachedRolePolicies
我是:ListRolePolicies
我是:SimulatePrincipalPolicy
我是:CreateRole
我是:TagRole
我是:PassRole
我是:DeleteRole
我是:DeleteRolePolicy
我是:DetachRolePolicy
我是:PutRolePolicy
sts: GetCallerIdentity
sns:Publish
kms:GetKeyPolicy (当存储桶使用 SSE-KMS 时,同账号复制)
kms:DescribeKey (当存储桶使用 SSE-KMS 时,同账号复制)
kms:PutKeyPolicy (当存储桶使用 SSE-KMS 时,同账号复制)
sts:AssumeRole (用于跨账户复制)
CrossAccountReplicationRole (适用于跨账户场景):
要进行跨账户复制,您必须为 CrossAccountReplicationRole 目标账户提供以下权限:
s3:ListBucket
s3:GetBucketVersioning
s3:GetBucketLocation
s3:GetBucketPolicy
s3:GetEncryptionConfiguration
s3:PutBucketVersioning
s3:PutBucketPolicy
kms:GetKeyPolicy (当跨账户目标存储桶使用 SSE-KMS 时)
kms:DescribeKey (当跨账户目标存储桶使用 SSE-KMS 时)
kms:PutKeyPolicy (当跨账户目标存储桶使用 SSE-KMS 时)
S3ReplicationRole (客户提供的角色):
如果您提供现有 S3ReplicationRole,则它必须具有以下权限:
s3:ListBucket
s3:GetBucketLocation
s3:GetReplicationConfiguration
s3:GetObjectVersionAcl
s3:GetObjectVersionTagging
s3:GetObjectVersionForReplication
s3:GetObjectTagging
s3:ReplicateObject
s3:ReplicateDelete
s3:ReplicateTags
s3:ObjectOwnerOverrideToBucketOwner
kms: decrypt(对于 SSE-KMS 场景,来源 KMS 密钥)
KMS: 加密(对于 SSE-KMS 方案,使用目标 KMS 密钥)
kms:GenerateDataKey (对于 SSE-KMS 场景,请使用目标 KMS 密钥)
kms: ReEncrypt *(对于 SSE-KMS 方案,目标 KMS 密钥)
同账号复制AutomationAssumeRole策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Permissions", "Effect": "Allow", "Action": [ "s3:GetBucketVersioning", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:GetReplicationConfiguration", "s3:ListBucket", "s3:PutBucketVersioning", "s3:PutReplicationConfiguration" ], "Resource": [ "arn:aws:s3:::SOURCE_BUCKET", "arn:aws:s3:::DESTINATION_BUCKET" ] }, { "Sid": "IAMReadOperations", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetRolePolicy", "iam:ListRoleTags", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:SimulatePrincipalPolicy" ], "Resource": "*" }, { "Sid": "IAMListRolesForCleanup", "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "*" }, { "Sid": "IAMCreateAndTagRole", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:TagRole" ], "Resource": "arn:aws:iam::ACCOUNT_ID:role/S3RepRole-*", "Condition": { "StringLike": { "aws:RequestTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*" } } }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::ACCOUNT_ID:role/S3RepRole-*", "Condition": { "StringEquals": { "iam:PassedToService": "s3.amazonaws.com" } } }, { "Sid": "TaggedIAMRoleModifyAndDeleteOperations", "Effect": "Allow", "Action": [ "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::ACCOUNT_ID:role/S3RepRole-*", "Condition": { "StringLike": { "aws:ResourceTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*" } } }, { "Sid": "STSGetCallerIdentity", "Effect": "Allow", "Action": "sts:GetCallerIdentity", "Resource": "*" }, { "Sid": "SNSPublish", "Effect": "Allow", "Action": "sns:Publish", "Resource": "SNS_TOPIC_ARN" }, { "Sid": "KMSKeyReadOperations", "Effect": "Allow", "Action": [ "kms:GetKeyPolicy", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:REGION:ACCOUNT_ID:key/SOURCE_KMS_KEY_ID", "arn:aws:kms:REGION:ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID" ] }, { "Sid": "KMSKeyMutatingOperations", "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": [ "arn:aws:kms:REGION:ACCOUNT_ID:key/SOURCE_KMS_KEY_ID", "arn:aws:kms:REGION:ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID" ], "Condition": { "StringEquals": { "kms:CallerAccount": "ACCOUNT_ID" } } } ] }
注意
只有当存储桶使用 SSE-KMS 加密时,才需要策略声明(KMSKeyReadOperations 和 KMSKeyMutatingOperations)。
跨账户复制AutomationAssumeRole策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3SourceBucketOperations", "Effect": "Allow", "Action": [ "s3:GetBucketVersioning", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:GetReplicationConfiguration", "s3:ListBucket", "s3:PutBucketVersioning", "s3:PutReplicationConfiguration" ], "Resource": "arn:aws:s3:::SOURCE_BUCKET" }, { "Sid": "IAMReadOperations", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetRolePolicy", "iam:ListRoleTags", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:SimulatePrincipalPolicy" ], "Resource": "*" }, { "Sid": "IAMListRolesForCleanup", "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "*" }, { "Sid": "IAMCreateAndTagRole", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:TagRole" ], "Resource": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3RepRole-*", "Condition": { "StringLike": { "aws:RequestTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*" } } }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3RepRole-*", "Condition": { "StringEquals": { "iam:PassedToService": "s3.amazonaws.com" } } }, { "Sid": "TaggedIAMRoleModifyAndDeleteOperations", "Effect": "Allow", "Action": [ "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3RepRole-*", "Condition": { "StringLike": { "aws:ResourceTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*" } } }, { "Sid": "CrossAccountRoleAssumption", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "CROSS_ACCOUNT_REPLICATION_ROLE_ARN" }, { "Sid": "STSGetCallerIdentity", "Effect": "Allow", "Action": "sts:GetCallerIdentity", "Resource": "*" }, { "Sid": "SNSPublish", "Effect": "Allow", "Action": "sns:Publish", "Resource": "SNS_TOPIC_ARN" }, { "Sid": "KMSSourceKeyReadOperations", "Effect": "Allow", "Action": [ "kms:GetKeyPolicy", "kms:DescribeKey" ], "Resource": "arn:aws:kms:SOURCE_REGION:SOURCE_ACCOUNT_ID:key/SOURCE_KMS_KEY_ID" }, { "Sid": "KMSSourceKeyMutatingOperations", "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "arn:aws:kms:SOURCE_REGION:SOURCE_ACCOUNT_ID:key/SOURCE_KMS_KEY_ID", "Condition": { "StringEquals": { "kms:CallerAccount": "SOURCE_ACCOUNT_ID" } } } ] }
注意
只有当源存储桶使用 SSE-KMS 加密时,才需要策略声明(KMSSourceKeyReadOperations 和 KMSSourceKeyMutatingOperations)。
将 CROSS_ACCOUNT_REPLICATION_ROLE_ARN 替换为您向自动化提供的实际参数值。 CrossAccountReplicationRole
CrossAccountReplicationRole策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3DestinationBucketReadOperations", "Effect": "Allow", "Action": [ "s3:GetBucketVersioning", "s3:GetBucketLocation", "s3:GetBucketPolicy", "s3:GetEncryptionConfiguration", "s3:ListBucket", "s3:PutBucketVersioning", "s3:PutBucketPolicy" ], "Resource": "arn:aws:s3:::DESTINATION_BUCKET" }, { "Sid": "KMSDestinationKeyReadOperations", "Effect": "Allow", "Action": [ "kms:GetKeyPolicy", "kms:DescribeKey" ], "Resource": "arn:aws:kms:DESTINATION_REGION:DESTINATION_ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID" }, { "Sid": "KMSDestinationKeyMutatingOperations", "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "arn:aws:kms:DESTINATION_REGION:DESTINATION_ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID", "Condition": { "StringEquals": { "kms:CallerAccount": "DESTINATION_ACCOUNT_ID" } } } ] }
注意
仅当目标存储桶使用 SSE-KMS 加密时,才需要 KMS 语句(KMSDestinationKeyReadOperations 和 KMSDestinationKeyMutatingOperations)。对于 SSE-S3 场景,请删除这些语句。
CrossAccountReplicationRole 信任策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "AUTOMATION_ASSUME_ROLE_ARN" }, "Action": "sts:AssumeRole" } ] }
注意
将 AUTOMATION_ASSUME_ROLE_ARN 替换为您提供的实际参数值。 AutomationAssumeRole
S3 ReplicationRole 策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3SourceBucketPermissions", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:GetReplicationConfiguration", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging", "s3:GetObjectVersionForReplication", "s3:GetObjectTagging" ], "Resource": [ "arn:aws:s3:::SOURCE_BUCKET", "arn:aws:s3:::SOURCE_BUCKET/*" ] }, { "Sid": "S3DestinationBucketPermissions", "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource": "arn:aws:s3:::DESTINATION_BUCKET/*" }, { "Sid": "S3CrossAccountPermissions", "Effect": "Allow", "Action": "s3:ObjectOwnerOverrideToBucketOwner", "Resource": "arn:aws:s3:::DESTINATION_BUCKET/*" }, { "Sid": "KMSSourceKeyPermissions", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:SOURCE_REGION:SOURCE_ACCOUNT_ID:key/SOURCE_KMS_KEY_ID" }, { "Sid": "KMSDestinationKeyPermissions", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:GenerateDataKey", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:DESTINATION_REGION:DESTINATION_ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID" } ] }
注意
仅当存储桶使用 SSE-KMS 加密时,才需要 KMS 语句(KMSSourceKeyPermissions 和 KMSDestinationKeyPermissions)。
只有跨账户存储桶复制才需要 S3 CrossAccountPermissions 语句。
S3 ReplicationRole 信任策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
说明
按照这些步骤对自动化进行配置:
-
AWSSupport-ConfigureS3ReplicationSameAndCrossAccount在 Systems Manager 的 “文档” 下导航至。 -
选择 Execute automation(执行自动化)。
-
对于输入参数,请输入以下内容:
-
AutomationAssumeRole (必填):
-
描述:(必填)允许 Systems Manager Automation 代表您执行操作的 AWS Identity and Access Management (IAM)角色的亚马逊资源名称 (ARN)。如果未指定角色,Systems Manager Automation 将使用启动此运行手册的用户的权限。
-
类型:
AWS::IAM::Role::Arn
-
-
SourceBucket (必填):
-
描述:(必填)将在其中创建或更新复制规则的源 Amazon S3 存储桶的名称。
-
类型:
AWS::S3::Bucket::Name
-
-
DestinationBucket (必填):
-
描述:(必填)将对象复制到的目标 Amazon S3 存储桶的名称。
-
类型:
String -
允许的模式:
^[0-9a-z][a-z0-9\\-\\.]{3,63}$
-
-
SourceAccountId (必填):
-
描述:(必填)源存储桶所在的 AWS 账户 ID。
-
类型:
String -
允许的模式:
^[0-9]{12,13}$
-
-
DestinationAccountId (必填):
-
描述:(必填)目标存储桶所在的 AWS 账户 ID。
-
类型:
String -
允许的模式:
^[0-9]{12,13}$
-
-
SnsNotificationArn (必填):
-
描述:(必填)用于自动化批准的亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 的 ARN 主题。
-
类型:
String -
允许的模式:
^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):sns:[a-z]{2}(-gov)?(-iso[a-z]?)?-[a-z]{2,10}-[0-9]{1,2}:\\d{12}:[0-9a-zA-Z-_]{1,256}(.fifo)?$
-
-
批准者(必填):
-
描述:(必填) user/role ARNs 授权批准自动化执行的 IAM 列表。
-
类型:
StringList -
允许的模式:
^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::\\d{12}:(user|role)/[\\w+=,.@\\-/]+$
-
-
S3ReplicationRole (可选):
-
描述:(可选)用于 Amazon S3 复制操作的现有 IAM 角色的 ARN。此角色必须具有从源存储桶读取和写入目标存储桶的权限,如果存储桶使用 SSE-KMS 加密,则包括 KMS 权限。如果未提供,则自动化将创建一个具有适当权限的新角色。
-
类型:
String -
允许的模式:
^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::\\d{12}:role/[\\w+=,.@\\-/]+$ -
默认值:
""
-
-
CrossAccountReplicationRole (可选):
-
描述:(可选)自动化可以代入的目标账户中 IAM 角色的 ARN。这是跨账户复制所必需的。对于同账号复制,请将其留空。
-
类型:
String -
允许的模式:
^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::\\d{12}:role/[\\w+=,.@\\-/]+$ -
默认值:
""
-
-
ReplicateEntireBucket (可选):
-
描述:(可选)如果设置为
true,则将复制整个存储桶,并且前缀和标签必须为空。如果为 false,则复制将基于指定的前缀或标记。 -
类型:
Boolean -
允许的值:
[true, false] -
默认值:
true
-
-
ReplicationRuleStatus (可选):
-
描述:(可选)如果设置为
true,则将启用创建的复制规则。如果设置为false,则创建的复制规则将设置为 “已禁用”。 -
类型:
Boolean -
允许的值:
[true, false] -
默认值:
true
-
-
DeleteMarkerReplicationStatus (可选):
-
描述:(可选)如果设置为
true,则自动化将启用删除标记复制。 -
类型:
Boolean -
允许的值:
[true, false] -
默认值:
false
-
-
ReplicationTimeControl (可选):
-
描述:(可选)如果设置为
true,则启用具有 15 分钟 SLA 的 Amazon S3 复制时间控制 (Amazon S3 RTC),以实现可预测的复制时间。 -
类型:
Boolean -
允许的值:
[true, false] -
默认值:
false
-
-
ReplicaModifications (可选):
-
描述:(可选)如果设置为
true,则允许复制对副本对象所做的元数据更改,从而允许将对复制对象的修改同步回源中。 -
类型:
Boolean -
允许的值:
[true, false] -
默认值:
false
-
-
前缀(可选):
-
描述:(可选)前缀过滤器,用于选择性复制具有特定键前缀的对象。前缀必须以尾部斜杠 (/) 结尾,才能正确筛选 Amazon S3 前缀。
-
类型:
String -
允许的模式:
^$|^[a-zA-Z0-9!_'()\\-]*/+$ -
默认值:
""
-
-
标签(可选):
-
描述:(可选)JSON 标签数组,用于筛选要复制的对象。单个标签的格式:[{“Key”:” TagKey “” “,” Value”:” TagValue “}],多个标签的格式:[{“Key”:” TagKey 1"、“Value”:” TagValue 1"}、{“Key”:” TagKey 2"、“Value”:” TagValue 2"}]。
-
类型:
String -
允许的模式:
^\\[((\\{\"Key\":\"[a-zA-Z0-9+\\-=.:/ @\\s]{1,128}\",\"Value\":\"[a-zA-Z0-9+\\-=.:/@\\s]{0,256}\"\\})(,\\{\"Key\":\"[a-zA-Z0-9+\\-=.:/ @\\s]{1,128}\",\"Value\":\"[a-zA-Z0-9+\\-=.:/@\\s]{0,256}\"\\})*)?\\]$ -
默认值:
[]
-
-
-
选择执行。
-
自动化启动。
-
文档将执行以下步骤:
-
ValidateInputParameters:
验证所有输入参数的正确性和兼容性,以确保复制配置正确。
-
PrepareApprovalMessage:
准备带有所有复制配置参数的批准消息,以供用户查看。
-
RequestApproval:
在继续进行 Amazon S3 复制配置更改之前,请先请求授权用户的批准。
-
CheckBucketEncryption:
检查源和目标 Amazon S3 存储桶的加密配置,以确定兼容的复制设置。
-
BranchOnEncryptionType:
基于 Amazon S3 存储桶加密类型分支执行,以便为 SSE-S3 或 SSE-KMS 加密存储桶应用适当的复制配置。
-
配置SSES3复制:
为使用服务器端加密、使用 Amazon S3 托管密钥 (SSE-S3) 加密的存储桶配置 Amazon S3 复制,包括 IAM 角色和复制规则。
-
配置 SSEKMSReplication:
为使用服务器端加密 AWS KMS (SSE-KMS) 加密的存储桶配置 Amazon S3 复制,包括 IAM 角色、KMS 密钥权限和复制规则。
-
CleanupResources:
当客户未提供 S3 时,清理在复制配置失败期间创建ReplicationRole 的 IAM 角色。
-
-
完成后,查看配置SSES3复制步骤(对于 SSE-S3 加密存储桶)或配置SSEKMSReplication步骤(对于 SSE-KMS 加密存储桶)的输出,以了解执行结果,包括复制配置状态以及用于复制的 IAM 角色。
参考
Systems Manager Automation