

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

# 例: SQS、CloudWatch、SNS
<a name="customize-environment-resources-sqs"></a>

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

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

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

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

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

1. アプリケーションを 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"]}
```

この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
+ [AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)

`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` の詳細については、「[関数](ebextensions-functions.md)」を参照してください。