AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

用于 Amazon SNS 的 Elastic Beanstalk 环境通知

可以配置 AWS Elastic Beanstalk 环境以使用 Amazon Simple Notification Service (Amazon SNS) 向您通知影响应用程序的重要事件。您可以在环境创建过程中或创建之后指定一个电子邮件地址,以便在发生错误或环境的运行状况发生变化时从 AWS 接收电子邮件。

注意

Elastic Beanstalk 使用 Amazon SNS 提供通知服务。有关 Amazon SNS 定价的详细信息,请参阅 http://www.amazonaws.cn/sns/pricing/

为环境配置通知时,Elastic Beanstalk 会为环境创建 Amazon SNS 主题。Elastic Beanstalk 必须具有必要的权限才能将消息发送到 Amazon SNS 主题。有关详细信息,请参阅 配置发送通知的权限

当值得注意的事件发生时,Elastic Beanstalk 会向该主题发送消息。Amazon SNS 则将它收到的消息中继到该主题的订阅者。值得注意的事件包括环境创建错误以及环境和实例运行状况的所有更改。针对 Amazon EC2 Auto Scaling 操作 (对环境添加和删除实例) 的事件和其他信息性事件不会触发通知。


      Amazon SNS 通知电子邮件

Elastic Beanstalk 控制台允许您在环境创建过程中或创建之后输入一个电子邮件地址,以创建并订阅 Amazon SNS 主题。Elastic Beanstalk 负责管理主题的生命周期,在您的环境终止时或者您在环境管理控制台中删除电子邮件地址时删除主题。

aws:elasticbeanstalk:sns:topics 命名空间提供了各种选项,可用于使用配置文件或使用 CLI 或开发工具包来配置 Amazon SNS 主题。这些方法使您可以配置订阅者的类型以及终端节点,使得订阅者可以为 Amazon SQS 队列或 HTTP URL。

您只能打开或关闭 Amazon SNS 通知。根据环境的大小和构成,发送到主题的通知频率可能较高。对于仅在特定情况下发送的通知,您可以配置环境以发布自定义指标,并设置 Amazon CloudWatch 警报以在这些指标达到运行状况不佳阈值时通知您。

使用 Elastic Beanstalk 控制台配置通知

Elastic Beanstalk 控制台可让您输入电子邮件地址以便为环境创建 Amazon SNS 主题。

在 Elastic Beanstalk 控制台中配置通知

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. 通知配置卡上,选择修改

  5. 输入电子邮箱地址。

    
            Elastic Beanstalk 通知配置页面
  6. 选择 Apply

当您为通知输入电子邮件地址时,Elastic Beanstalk 会为环境创建 Amazon SNS 主题并添加订阅。Amazon SNS 会向订阅的地址发送电子邮件以确认订阅。您必须单击确认电子邮件中的链接才能激活订阅并接收通知。

使用配置选项配置通知

可以使用 aws:elasticbeanstalk:sns:topics 命名空间中的选项为您的环境配置 Amazon SNS 通知。可以使用配置文件、CLI 或开发工具包来设置这些选项。

Notification Endpoint – 要将通知发送到的电子邮件地址、Amazon SQS 队列或 URL。设置此选项可为指定终端节点创建 SQS 队列和订阅。如果终端节点不是电子邮件地址,还必须设置 Notification Protocol 选项。SNS 会基于 Notification Endpoint 的值来验证 Notification Protocol 的值。多次设置此选项可创建针对主题的更多订阅。删除此选项会删除主题。

Notification Protocol – 用于向 Notification Endpoint 发送通知的协议。此选项默认为 email。将此选项设置为 email-json 可发送 JSON 格式的电子邮件,设置为 httphttps 可将 JSON 格式的通知发布到 HTTP 终端节点,或设置为 sqs 可向 SQS 队列发送通知。

注意

不支持 AWS Lambda 通知。

Notification Topic ARN – 为环境设置通知终端节点之后,读取此设置以获取 SNS 主题的 ARN。您还可以设置此选项为通知使用现有 SNS 主题。更改此选项或终止环境时,使用此选项附加到环境的主题不会删除。

Notification Topic Name – 设置此选项可自定义用于环境通知的 Amazon SNS 主题的名称。如果已存在同名主题,则 Elastic Beanstalk 会将该主题附加到环境。

警告

如果您使用 Notification Topic Name 将现有 SNS 主题挂载到环境,则 Elastic Beanstalk 会在您终止环境或更改此设置时删除该主题。

更改此选项也会更改 Notification Topic ARN。如果环境已经附加了主题,则 Elastic Beanstalk 会删除旧主题,然后创建新的主题和订阅。

EB CLI 和 Elastic Beanstalk 控制台控制台会对前面的选项应用建议的值。如果您需要使用配置文件来配置相同的项,则必须删除这些设置。有关更多信息,请参阅 建议值

配置发送通知的权限

本部分讨论与使用 Amazon SNS 发送通知相关的安全注意事项。有两种不同的情况:使用 Elastic Beanstalk 为您的环境创建的默认 Amazon SNS 主题,通过配置选项提供外部 Amazon SNS 主题。

默认主题的权限

为环境配置通知时,Elastic Beanstalk 会为环境创建 Amazon SNS 主题。Elastic Beanstalk 必须具有必要的权限才能将消息发送到 Amazon SNS 主题。如果您的环境使用 Elastic Beanstalk 控制台或 EB CLI 为其生成的服务角色,或者使用账户的服务相关角色,则无需执行任何其他操作。这些托管角色包括所需的权限。

但是,如果您在创建环境时提供自定义服务角色,请确保此自定义服务角色包括以下策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws-cn:sns:us-west-2:123456789012:ElasticBeanstalkNotifications*" ] } ] }

外部主题的权限

使用配置选项配置通知中,我们说明了如何使用其他 Amazon SNS 主题替换 Elastic Beanstalk 提供的 Amazon SNS 主题。如果您这样做,Elastic Beanstalk 需要验证您有权发布到此 SNS 主题,以允许您将 SNS 主题与环境关联。您应与服务角色具有相同的权限 sns:Publish。为验证这一点,Elastic Beanstalk 在您创建或更新环境的操作中,发送测试通知到 SNS。如果此测试失败,则您创建或更新环境的尝试失败,Elastic Beanstalk 显示说明失败的消息。

如果您为环境提供了自定义服务角色,请确保自定义服务角色包括以下策略。使用您在配置选项中提供的 Amazon SNS 主题的名称替换 sns_topic_name

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws-cn:sns:us-west-2:123456789012:sns_topic_name" ] } ] }