例: SQS、CloudWatch、SNS - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

例: SQS、CloudWatch、SNS

この例では、Amazon SQS キューおよびキューの深さに対するアラームを、環境に追加します。この例で示されているプロパティは、これらの各リソースに対して設定する必要のある最低限必要なプロパティです。サンプルは、「SQS, SNS, and CloudWatch」でダウンロードできます。

注記

この例では、課金対象となる可能性のある AWS リソースを作成します。AWS 料金の詳細については、「https://aws.amazon.com/pricing/」を参照してください。一部のサービスは、AWS 無料利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合があります。詳細については、「https://aws.amazon.com/free/」を参照してください。

この例を使用するには、以下を実行します。

  1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。

  2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されます。

  3. アプリケーションを Elastic Beanstalk にデプロイします。

    YAML は、一貫したインデントに依存します。設定ファイルの例でコンテンツを置き換える際はインデントレベルを一致させ、テキストエディタがインデントにタブ文字ではなくスペースを使用していることを確認します。

リソースを定義する設定ファイル(例: sqs.config)を作成します。この例では、まず SQS キューを作成し、次に VisbilityTimeout リソースに MySQSQueue プロパティを定義します。次に、SNS Topic を作成し、アラームが発生したら someone@example.com にメールを送信するように指定します。最後に、キューのメッセージが 10 を超えたら CloudWatch アラームを作成します。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 に対し、VisibilityTimeout および Subscription Endpoint プロパティの値を、option_settings セクションと、使用する実際の値を含む名前と値のペアを含む aws:elasticbeanstalk:customoption セクションが含まれている設定ファイル (この例では options.config) の VisibilityTimeout および Subscription Endpoint の値から取得するように指示します。上の例では、これは値として 30 および "nobody@amazon.com" を使用することを意味します。Fn::GetOptionSetting の詳細については、「関数」を参照してください。