メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

例: SQS、CloudWatch、SNS

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

注記

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

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

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

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

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

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

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