

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

# `AWSSupport-ContainS3Resource`
<a name="automation-awssupport-contains3resource"></a>

 **描述** 

 该`AWSSupport-ContainS3Resource`运行手册为文章《[支持自动化工作流程 (SAW) 运行手册：包含受损的 AWS Amazon S3 存储桶》中概述的](https://repost.aws/articles/ARhGc0hDqKRIKAVCbmF1GmuQ)程序提供了自动解决方案 

**重要**  
本运行手册执行各种需要提升权限的操作，例如修改 Amazon S3 存储桶策略、标签和公共访问配置。这些操作可能会导致权限提升或影响依赖目标 Amazon S3 存储桶的其他工作负载。您应查看向`AutomationAssumeRole`参数指定的角色授予的权限，并确保这些权限适用于预期用例。您可以参考以下 AWS 文档，了解有关 IAM 权限的更多信息：[https://docs.aws.amazon.com//IAM/latest/UserGuide/access_controlling.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_controlling.html)。
此运行手册执行的变异操作可能会导致您的工作负载不可用或中断。具体而言，该`Contain`操作会阻止对指定 Amazon S3 存储桶的所有访问权限，但`SecureRoles`参数中指定的角色除外。这可能会影响依赖目标 Amazon S3 存储桶的任何应用程序或服务。
在`Contain`操作期间，此运行手册可能会额外创建一个 Amazon S3 存储桶（由`BackupS3BucketName`参数指定）来存储原始存储桶配置的备份（如果尚不存在）。
如果将`Action`参数设置为`Restore`，则本运行手册会尝试根据存储在存储桶中的备份将 Amazon S3 存储`BackupS3BucketName`桶的配置恢复到其原始状态。但是，还原过程可能会失败，从而使 Amazon S3 存储桶处于不一致的状态。运行手册提供了在出现此类故障时手动恢复的说明，但您应该做好在恢复过程中处理潜在问题的准备。
建议在生产环境中执行运行手册之前，请仔细阅读运行手册，了解其潜在影响，并在非生产环境中对其进行测试。

 **如何工作？** 

根据资源类型和操作，此运行手册的操作方式有所不同：
+ 对于 Amazon S3 通用存储桶`Containment`：自动化会阻止对存储桶的公开访问，禁用 ACL 配置，强制执行存储桶所有者对象所有权，并设置限制性存储桶策略，除了允许列出的 IAM 角色外，拒绝对存储桶执行所有 Amazon S3 操作。
+ 对于 Amazon S3 通用对象`Containment`：自动化会阻止对存储桶的公开访问，禁用 ACL 配置，强制执行存储桶所有者对象所有权，并设置限制性存储桶策略，除了允许列出的 IAM 角色外，拒绝对该对象执行所有 Amazon S3 操作。
+ 对于 Amazon S3 目录存储桶`Containment`：自动化设置了限制性存储桶策略，除了允许列出的 IAM 角色外，拒绝对该存储桶执行所有 Amazon S3 操作。
+ 对于 Amazon S3 通用存储桶`Restore`：自动化会将封锁公共访问配置、存储桶 ACL 配置、存储桶所有者对象所有权和存储桶策略恢复到包含之前的初始配置。
+ 对于 Amazon S3 通用对象`Restore`：自动化会将阻止公共访问配置、存储桶 ACL 配置、对象 ACL 配置、存储桶所有者对象所有权和存储桶策略恢复到包含之前的初始配置。
+ 对于 Amazon S3 目录存储桶`Restore`：自动化会将存储桶策略恢复到包含之前的初始配置。

 [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-ContainS3Resource) 

 **文档类型** 

 自动化 

 **所有者** 

 Amazon 

 **平台** 

 / 

 **所需的 IAM 权限** 

 `AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+ s3：CreateBucket
+ s3：DeleteBucketPolicy
+ s3：DeleteObjectTagging
+ s3：GetAccountPublicAccessBlock
+ s3：GetBucketAcl
+ s3：GetBucketLocation
+ s3：GetBucketOwnershipControls
+ s3：GetBucketPolicy
+ s3：GetBucketPolicyStatus
+ s3：GetBucketTagging
+ s3：GetEncryptionConfiguration
+ s3：GetObject
+ s3：GetObjectAcl
+ s3：GetObjectTagging
+ s3：GetReplicationConfiguration
+ s3：ListBucket
+ s3：PutAccountPublicAccessBlock
+ s3：PutBucketACL
+ s3：PutBucketOwnershipControls
+ s3：PutBucketPolicy
+ s3：PutBucketPublicAccessBlock
+ s3：PutBucketTagging
+ s3：PutBucketVersioning
+ s3：PutObject
+ s3：PutObjectAcl
+ s3express：CreateSession
+ s3express：DeleteBucketPolicy
+ s3express：GetBucketPolicy
+ s3express：PutBucketPolicy
+ ssm：DescribeAutomationExecutions

 以下是 IAM 策略的示例，该策略为以下各项授予必要权限`AutomationAssumeRole`：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Permissions",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucketPolicy",
                "s3:DeleteObjectTagging",
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketTagging",
                "s3:GetEncryptionConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:PutAccountPublicAccessBlock",
                "s3:PutBucketACL",
                "s3:PutBucketOwnershipControls",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketTagging",
                "s3:PutBucketVersioning",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "*"
        },
        {
            "Sid": "S3ExpressPermissions",
            "Effect": "Allow",
            "Action": [
                "s3express:CreateSession",
                "s3express:DeleteBucketPolicy",
                "s3express:GetBucketPolicy",
                "s3express:PutBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SSMPermissions",
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAutomationExecutions"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 **说明** 

按照这些步骤对自动化进行配置：

1. [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description)在 Systems Manager 的 “文档” 下导航至。

1. 选择 Execute automation（执行自动化）。

1. 对于输入参数，请输入以下内容：
   + **BucketName （必填）：**
     + 描述：（必填）Amazon S3 存储桶的名称。
     + 类型：`AWS::S3::Bucket::Name`
   + **操作（必填）：**
     + 描述：（必填）选择`Contain`隔离 Amazon S3 资源或`Restore`尝试将资源配置从先前备份恢复到其原始状态。
     + 类型：字符串
     + 允许的值：`Contain|Restore`
   + **DryRun （可选）：**
     + 描述：（可选）当设置为 true 时，自动化不会对目标 Amazon S3 资源进行任何更改，而是输出它本来会尝试更改的内容。默认值：真。
     + 类型：布尔值
     + 允许的值：`true|false`
   + **BucketKeyName （可选）：**
     + 描述：（可选）您要包含或恢复的 Amazon S3 对象的密钥。在对象级收容期间使用。
     + 类型：字符串
     + 允许的模式：`^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$`
   + **BucketRestrictAccess（视情况而定）：**
     + 描述：（视情况而定）在运行控制操作后将被允许访问目标 Amazon S3 资源的 IAM 用户或角色的 ARN。`Action` 设置为 `Contain` 时需要此参数。
     + 类型： StringList
     + 允许的模式：`^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$`
   + **TagIdentifier （可选）：**
     + 描述：（可选）格式为 Key=BatchId，Value=78925 的标签，该标签将添加到此运行手册在包含工作流程中创建或修改的资源中。
     + 类型：字符串
     + 允许的模式：`^$|^[Kk][Ee][Yy]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{1,128},[Vv][Aa][Ll][Uu][Ee]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{0,128}$`
   + **BackupS3BucketName （视情况而定）：**
     + 描述：（视情况而定）Amazon S3 存储桶，用于在设置`Action`为时备份目标资源配置，`Contain`或从设置`Action`为时恢复配置`Restore`。
     + 类型：`AWS::S3::Bucket::Name`
   + **BackupS3KeyName （视情况而定）：**
     + 描述：（视情况而定）如果设置`Action`为`Restore`，则指定自动化用于尝试恢复目标资源配置的 Amazon S3 密钥。
     + 类型：字符串
     + 允许的模式：`^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$`

     
   + **BackupS3BucketAccess（视情况而定）：**
     + 描述：（视情况而定）在运行控制操作后将被允许访问备份 Amazon S3 存储桶的 IAM 用户或角色的 ARN。当是时，此参数是必需`Action`的`Contain`。
     + 类型： StringList
     + 允许的模式：`^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$`
   + **AutomationAssumeRole （可选）：**
     + 描述：（可选）允许 Systems Manager Automation 代表您执行操作的 IAM 角色的亚马逊资源名称 (ARN)。
     + 类型：`AWS::IAM::Role::Arn`

1. 选择执行。

1. 自动化启动。

1. 文档将执行以下步骤：
   + **validateRequiredInputs**

     根据指定的操作验证所需的自动化输入参数。
   + **assertBucketExists**

     检查目标 Amazon S3 存储桶是否存在并且可以访问。
   + **backupBucketPre支票**

     检查备份 Amazon S3 存储桶是否有可能向公众授予对其对象的读取或写入权限。
   + **backupTargetBucket元数据**

     描述目标 Amazon S3 存储桶的当前配置，并将备份上传到指定的备份 Amazon S3 存储桶。
   + **容器桶**

     执行存储桶级别的操作以包含目标 Amazon S3 存储桶。
   + **BranchOnActionAndMode**

     根据输入参数 “操作” 和 “分支自动化” DryRun。
   + **RestoreInstanceConfiguration**

     从备份中恢复 Amazon S3 存储桶配置。
   + **containFinalOutput**

     以可读的格式整合控制活动。
   + **ReportContain**

     输出遏制操作的试运行详细信息。
   + **ReportRestore**

     输出恢复操作的试运行详细信息。
   + **ReportRestoreFailure**

     提供在恢复工作流程失败的情况下恢复 Amazon S3 存储桶原始配置的说明。
   + **ReportContainmentFailure**

     提供在控制工作流程失败的情况下恢复 Amazon S3 存储桶原始配置的说明。
   + **FinalOutput**

     输出遏制操作的详细信息。

1. 执行完成后，请查看 “输出” 部分，了解执行的详细结果：
   + **ContainFinalOutput。输出**

     当设置为 False 时`DryRun`，输出此运行手册执行的遏制操作的详细信息。
   + **RestoreFinalOutput。输出**

     当设置为 False 时`DryRun`，输出此运行手册执行的还原操作的详细信息。
   + **包含 3ResourceDryRun. 输出**

     设置为 Tr `DryRun` ue 时，输出此运行手册执行的遏制操作的详细信息。
   + **恢复 3ResourceDryRun. 输出**

     设置为 True 时`DryRun`，输出此运行手册执行的还原操作的详细信息。
   + **ReportContainmentFailure。输出**

     提供在控制工作流程失败的情况下恢复目标 Amazon S3 资源原始配置的说明。
   + **ReportRestoreFailure。输出**

     提供在恢复工作流程失败的情况下恢复目标 Amazon S3 资源原始配置的说明。

**参考**

Systems Manager Automation
+ [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description)
+ [运行自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [设置自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [Support 自动化工作流程](https://aws.amazon.com/premiumsupport/technology/saw/)