本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例: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 and Subscription Endpoint (可見性逾時與訂閱端點) 值,來取得 VisibilityTimeout and Subscription Endpoint (可見性逾時與訂閱端點) 屬性的值;該組態檔案包含了 option_settings 的區段,其中包括 aws:elasticbeanstalk:customoption 區段,此部分內含名稱-值的對組,而此對組中包含了實際要使用的值。在上列的範例中,這表示將會使用 30 和「nobody@amazon.com」來做為值。如需有關 Fn::GetOptionSetting
的詳細資訊,請參閱 函數。