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

代码段示例:SQS、CloudWatch 和 SNS

此示例给环境添加 Amazon SQS 队列以及有关队列深度的警报。此示例中显示的属性是必须具备的最低程度的属性,必须为每个资源进行设置。您可以在“SQS、SNS 和 CloudWatch ”下载该示例。

注意

本示例将创建 AWS 资源,您可能要为其付费。有关 AWS 定价的更多信息,请参阅 http://www.amazonaws.cn/pricing/。某些服务是 AWS 免费使用套餐的一部分。如果您是新客户,则可免费试用这些服务。参阅 http://www.amazonaws.cn/free/ 了解更多信息。

要使用此示例,请执行下列操作:

  1. 在源包的顶级目录中创建 .ebextensions 目录。

  2. 创建两个扩展名为 .config 的配置文件并将其放入您的 .ebextensions 目录。一个配置文件定义资源,另一个配置文件定义选项。

  3. 将您的应用程序部署到 Elastic Beanstalk。

    YAML 依赖一致的缩进。当替换示例配置文件中的内容时,应匹配缩进级别,并且确保您的文本编辑器使用空格而不是字符来进行缩进。

创建定义资源的配置文件 (例如,sqs.config)。在此示例中,我们创建 SQS 队列并定义 MySQSQueue 资源中的 VisbilityTimeout 属性。下一步,我们创建 SNS Topic,并指定电子邮件在警报激发时发送到 someone@example.com。最后,我们创建 CloudWatch 警报,在队列消息超过 10 个时激发。在 Dimensions 属性中,我们指定维度的名称以及代表维度度量的值。我们使用 Fn::GetAttMySQSQueue 中返回 QueueName 的值。

#This sample requires you to create a separate configuration file to define the custom options for the SNS topic and SQS queue. Resources: MySQSQueue: Type: AWS::SQS::Queue Properties: VisibilityTimeout: Fn::GetOptionSetting: OptionName: VisibilityTimeout DefaultValue: 30 AlarmTopic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: Fn::GetOptionSetting: OptionName: AlarmEmail DefaultValue: "nobody@amazon.com" Protocol: email QueueDepthAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: "Alarm if queue depth grows beyond 10 messages" Namespace: "AWS/SQS" MetricName: ApproximateNumberOfMessagesVisible Dimensions: - Name: QueueName Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"] } Statistic: Sum Period: 300 EvaluationPeriods: 1 Threshold: 10 ComparisonOperator: GreaterThanThreshold AlarmActions: - Ref: AlarmTopic InsufficientDataActions: - Ref: AlarmTopic Outputs : QueueURL: Description : "URL of newly created SQS Queue" Value : { Ref : "MySQSQueue" } QueueARN : Description : "ARN of newly created SQS Queue" Value : { "Fn::GetAtt" : [ "MySQSQueue", "Arn"]} QueueName : Description : "Name newly created SQS Queue" Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"]}

有关此示例配置文件中使用的资源的更多信息,请参阅以下参考:

创建名为 options.config 的单独配置文件,并定义自定义选项设置。

option_settings: "aws:elasticbeanstalk:customoption": VisibilityTimeout : 30 AlarmEmail : "nobody@example.com"

这些行会指示 Elastic Beanstalk 从配置文件 (本示例中为 options.config) 的 VisibilityTimeout 和 Subscription Endpoint 值中获取 VisibilityTimeout 和 Subscription Endpoint 属性的值,该配置文件的 option_settings 部分带有 aws:elasticbeanstalk:customoption 部分,后者的名称-值对中包含了实际要使用的值。在以上示例中,这意味着 30 和“nobody@amazon.com”将用于这些值。有关 Fn::GetOptionSetting 的更多信息,请参阅“函数”。