LoginSignup
3
2

More than 5 years have passed since last update.

CloudFormationからElasticBeanstalkのebextensions設定ファイルに独自パラメータを渡す方法

Last updated at Posted at 2015-09-26

背景

  • CloudFormation を用いた ElasticBeanstalk のワーカーアプリケーション(Docker)構築時に、SQS のメッセージ数でオートスケールするように設定したい。(要は自動化。構築後にマネージメントコンソールや AWS CLI による手動設定はしたくない)
  • ワーカー環境なのにデフォルトでは「NetworkOut、CPUUtilization、・・・」といった項目1 しか選択肢がない。
  • 事前に作成した SQS を ebextensions 設定ファイル内で参照する方法が公式ドキュメントで見つからず、ebextensions 側でSQS のメッセージ数に対する CloudWatch Alarm を作成できない。(Elastic Beanstalk リソース2 に「AWSEBWorkerQueue」があるが、対象はアプリケーション起動時に自動作成させた場合に有効・・・だと思う)
  • option_settings3 を使用する場合、あらかじめキュー名を設定ファイルに記述しておく必要があり、CloudFormation のスタック起動時に動的に指定するという要件に合わない。

解決方法

ポイントだけ示します。

CloudFormationテンプレート
"Resources": {
  "MyConfigurationTemplate": {
    "Type": "AWS::ElasticBeanstalk::ConfigurationTemplate",
    "Properties": {
      "OptionSettings": [
        { 
          "Namespace": "aws:elasticbeanstalk:application:environment",
          "OptionName": "MyOptionName",  #パラメータ名
          "Value": "MyOptionValue"       #パラメータ値
        }
      ]
    }
  }
}
ebextensions設定ファイル
Resources:
  MyAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      Namespace: "AWS/SQS"
      MetricName: ApproximateNumberOfMessagesVisible
      Dimensions:
        - Name: QueueName
          Value:
            "Fn::GetOptionSetting":
              Namespace: "aws:elasticbeanstalk:application:environment"  #CloudFormation側で指定した名前空間
              OptionName: MyOptionName  #CloudFormation側で指定したパラメータ名
              DefaultValue: ""  #とりあえず空文字列。この項目自体を消せないか?

独自パラメータを CloudFormation から ebextensions 設定ファイルに渡せることが確認できただけです。
実際に期待通りにオートスケールするかどうかはこれから検証予定ですので悪しからず。。 :construction_worker:
上記の設定に加えて Threshold もパラメータ化し、オートスケールすることが確認できました。 また、DefaultValue の項目は無くても動作しました。

補足

こちら4 の公式ドキュメントに組み込み関数「Fn::GetOptionSetting」の記述がありますが、関数に Namespace を指定できるとは書かれていないようです。なので、自分用のメモがてら投稿させていただきました。

Namespace を指定できるってことは、"aws:elasticbeanstalk:application:environment" 以外の名前空間も参照できるってことですかね?

参考リンク

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2