本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:SQS、CloudWatch 和 SNS
此示例给环境添加 Amazon SQS 队列以及有关队列深度的警报。此示例中显示的属性是必须具备的最低程度的属性,必须为每个资源进行设置。您可以在 SQS、SNS 和 CloudWatch
注意
本示例将创建AWS资源,您可能要为其付费。有关AWS定价的更多信息,请参阅https://aws.amazon.com/pricing/
要使用此示例,请执行下列操作:
在源包的顶级目录中创建
.ebextensions
目录。创建两个扩展名为
.config
的配置文件并将其放入您的.ebextensions
目录。一个配置文件定义资源,另一个配置文件定义选项。将应用程序部署到 Elastic Beanstalk。
YAML 依赖一致的缩进。当替换示例配置文件中的内容时,应匹配缩进级别,并且确保您的文本编辑器使用空格而不是字符来进行缩进。
创建定义资源的配置文件 (例如,sqs.config)。在此示例中,我们创建 SQS 队列并定义 VisbilityTimeout
资源中的 MySQSQueue
属性。下一步,我们创建 SNS Topic
,并指定电子邮件在警报激发时发送到 someone@example.com
。最后,我们创建 CloudWatch 警报,在队列消息超过 10 个时激发。在 Dimensions
属性中,我们指定维度的名称以及代表维度度量的值。我们使用 Fn::GetAtt
从 QueueName
中返回 MySQSQueue
的值。
#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
的更多信息,请参阅 函数。