

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

# `AWSSupport-TroubleshootS3EventNotifications`
<a name="awssupport-troubleshoot-s3-event-notifications"></a>

 **描述** 

 `AWSSupport-TroubleshootS3EventNotifications` AWS Systems Manager 自动化运行手册可帮助对配置了 AWS Lambda 函数、亚马逊简单通知服务 (Amazon SNS) 主题或亚马逊简单队列服务 (Amazon SQS) Simple Queue Service 队列的亚马逊简单存储服务 (Amazon S3) 存储桶事件通知进行故障排除。它提供了配置设置报告，其中包含使用 Amazon S3 存储桶作为目标事件通知配置的不同资源。

 **如何工作？** 

 运行手册执行以下步骤：
+ 检查 Amazon S3 存储桶是否存在于执行所在`AWSSupport-TroubleshootS3EventNotifications`的同一个账户中。
+ 使用 API 获取配置为 Amazon S3 存储桶事件通知的目标资源（AWS Lambda 函数、Amazon SNS 主题或亚马逊 SQS 队列）。[GetBucketNotificationConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
+ 验证目标资源是否存在，然后查看目标资源的基于资源的策略，以确定是否允许 Amazon S3 向目标发布内容。
+ 如果您使用 AWS Key Management Service (AWS KMS) 密钥加密了目标，则会检查密钥策略以确定是否允许 Amazon S3 访问。
+ 生成所有目标资源检查的报告。

**重要**  
只有当 Amazon S3 存储桶拥有者与执行自动化运行手册的所有者相同时 AWS 账户 ，此运行手册才能评估事件通知配置。
此外，本运行手册无法评估托管在其他 AWS 账户资源中的目标资源的策略。

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

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux、macOS、Windows

**参数**
+ AutomationAssumeRole

  类型：字符串

  描述：（可选）允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称（ARN）。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
+ S3 BucketName

  类型：`AWS::S3::Bucket::Name`

  描述：（必填）配置了事件通知的 Amazon S3 存储桶的名称。

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+ `s3:GetBucketLocation`
+ `s3:ListAllMyBuckets`
+ `s3:GetBucketNotification`
+ `sqs:GetQueueAttributes`
+ `sqs:GetQueueUrl`
+ `sns:GetTopicAttributes `
+ `kms:GetKeyPolicy`
+ `kms:DescribeKey`
+ `kms:ListAliases`
+ `lambda:GetPolicy`
+ `lambda:GetFunction`
+ `iam:GetContextKeysForCustomPolicy`
+ `iam:SimulateCustomPolicy`
+ `iam:ListRoles`
+ `ssm:DescribeAutomationStepExecutions`

 **自动化承担角色的 IAM policy 示例** 

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

****  

```
                    {
                        "Version":"2012-10-17",		 	 	 
                        "Statement": [
                            {   
                                "Sid": "S3Permission",
                                "Effect": "Allow",
                                "Action": [
                                    "s3:GetBucketLocation",
                                    "s3:ListAllMyBuckets"
                                ],
                                "Resource": "*"
                            },
                            {   
                                "Sid": "S3PermissionGetBucketNotification",
                                "Effect": "Allow",
                                "Action": [
                                    "s3:GetBucketNotification"
                                ],
                                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
                            },
                            {
                                "Sid": "SQSPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "sqs:GetQueueAttributes",
                                    "sqs:GetQueueUrl"
                                ],
                                "Resource": "arn:aws:sqs:us-east-1:111122223333:*"
                            },
                            {
                                "Sid": "SNSPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "sns:GetTopicAttributes"
                                ],
                                "Resource": "arn:aws:sns:us-east-1:111122223333:*"
                            },
                            {   
                            "Sid": "KMSPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "kms:GetKeyPolicy",
                                    "kms:DescribeKey",
                                    "kms:ListAliases"
                                ],
                                "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
                            },
                            {
                                "Sid": "LambdaPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "lambda:GetPolicy",
                                    "lambda:GetFunction"
                                ],
                                "Resource": "arn:aws:lambda:us-east-1:111122223333:function:*"
                            },
                            {
                                "Sid": "IAMPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "iam:GetContextKeysForCustomPolicy",
                                    "iam:SimulateCustomPolicy",
                                    "iam:ListRoles"
                                ],
                                "Resource": "*"
                            },
                            {
                                "Sid": "SSMPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "ssm:DescribeAutomationStepExecutions"
                                ],
                                "Resource": "*"
                            }
                        ]
                    }
```

------

 **说明** 

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

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

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

1. 对于输入参数，请输入以下内容：
   + **AutomationAssumeRole （可选）：**

     允许 Systems Manager Automation 代表您执行操作的 AWS AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
   + **S3BucketName （必填）：**

     配置了事件通知的 Amazon S3 存储桶的名称。  
![\[AWSSupport-TroubleshootS3 个EventNotification 运行手册执行输入参数。\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-s3-event-notifications_input_parameters.png)

1. 选择执行。

1. 自动化启动。

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

     验证提供的 Amazon S3 存储桶属于执行自动化的同一个账户，并获取存储桶托管的区域。
   + **GetBucketNotificationConfiguration**

     调用 `GetBucketNotificationConfiguration` API 来查看使用 Amazon S3 存储桶配置的事件通知并格式化输出。
   + **BranchOnSQSResourcePolicy**

     关于事件通知中是否有 Amazon SQS 资源的分支。
   + **验证SQSResource策略**

     验证有关亚马逊 SQS 队列属性的资源策略是否`sqs:SendMessage`具有 Amazon S3 的权限。如果 Amazon SQS 资源已加密，则会检查加密是否使用默认 AWS KMS 密钥，即`aws/sqs`检查密 AWS KMS 钥策略是否具有对 Amazon S3 的权限。
   + **BranchOnSNSResourcePolicy**

     关于事件通知中是否有 Amazon SNS 资源的分支。
   + **验证SNSResource策略**

     验证 Amazon SNS 上的资源策略主题属性是否`sns:Publish`具有 Amazon S3 的权限。如果 Amazon SNS 资源已加密，则会检查加密是否使用默认 AWS KMS 密钥，即`aws/sns`检查密 AWS KMS 钥策略是否具有 Amazon S3 的权限。
   + **BranchOnLambdaFunctionResourcePolicy**

     关于事件通知中是否有 AWS Lambda 功能的分支。
   + **ValidateLambdaFunctionResourcePolicy**

     验证 AWS Lambda 函数上的资源策略是否具有 Amazon S3 的`lambda:InvokeFunction`权限。
   + **GenerateReport**

     返回运行手册步骤、输出的详细信息以及解决使用 Amazon S3 存储桶配置的事件通知的任何问题的建议。

1. 完成后，请查看 “输出” 部分，了解执行的详细结果：
   + **亚马逊 SQS 事件通知**

     如果使用 Amazon S3 存储桶配置了 Amazon SQS 目标通知，则在检查结果旁边会显示亚马逊 SQS 队列列表。该报告包括 Amazon SQS 资源检查、Amazon SQS 访问策略检查 AWS KMS 、密钥检查、密钥状态检查 AWS KMS AWS KMS 和密钥策略检查。
   + **亚马逊 SNS 事件通知**

     如果使用 Amazon S3 存储桶配置了 Amazon SNS 目标通知，则在检查结果旁边会显示亚马逊 SNS 主题列表。该报告包括 Amazon SNS 资源检查、Amazon SNS 访问策略检查 AWS KMS 、密钥检查、密钥状态检查 AWS KMS AWS KMS 和密钥策略检查。
   + **AWS Lambda 活动通知**

     如果使用 Amazon S3 存储桶配置了 AWS Lambda 目标通知，则会在检查结果旁边显示 Lambda 函数列表。该报告包括 Lambda 资源检查和 Lambda 访问策略检查。  
![\[AWSSupport-TroubleshootS3 EventNotification 运行手册示例执行输出。\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-s3-event-notifications_outputs.png)

 **参考** 

Systems Manager Automation
+ [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootS3EventNotifications/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)
+ [支持自动化工作流登录页面](https://aws.amazon.com/premiumsupport/technology/saw/)