LoginSignup
10
8

More than 5 years have passed since last update.

Elastic BeanstalkでヘルスチェックURLを.ebextensionsで設定しようとしてハマった

Posted at

Elastic BeanstalkでヘルスチェックURLを.ebextensionsで設定しようとしてハマったので記録しておく。

発生したこと

以下のような.ebextensionsを書いてElastic Beanstalkにデプロイしても反映されない。

option_settings:
  aws:elasticbeanstalk:application:
    Application Healthcheck URL: /

原因

Management ConsoleでElastic Beanstalkの環境を作成していた。
Management Consoleから環境を作成するとヘルスチェックURLを設定することになり空を設定していた。

設定オプション - AWS Elastic Beanstalkのように優先度順としては以下のようになっていてAPIで設定した値が優先される。

  • Management ConsoleなどのAPIで設定した値
  • .ebextensionsで設定した値
  • デフォルト値

Management Console上ではどうしようもないが上のリンク先にあるようにaws-cliやeb-cliで設定された値を削除することで.ebextensionsが効くようになる。

# aws-cliでの削除例
$ aws elasticbeanstalk update-environment --application-name [アプリ名] --environment-name [環境名] --options-to-remove "Namespace=aws:elasticbeanstalk:application,OptionName=Application Healthcheck URL"

APIで設定された値かどうかの判別

Elastic Beanstalkで環境の設定を保存しておき、s3の以下の場所に保管されている設定ファイルの中身を見るとAPIで設定した値が書いてある。
(もっと簡単な確認方法があったら教えてください)

/elasticbeanstalk-[region]-[id]/resources/templates/[アプリ名]
  • aws-cliで環境を作成した場合の設定ファイルの中身
EnvironmentConfigurationMetadata:
  DateCreated: '1465284305000'
  DateModified: '1465284305000'
SolutionStack: 64bit Amazon Linux 2016.03 v2.1.2 running Ruby 2.3 (Passenger Standalone)
EnvironmentTier:
  Type: Standard
  Name: WebServer
AWSConfigurationTemplateVersion: 1.1.0.0
  • eb-cliで環境を作成した場合の設定ファイルの中身
EnvironmentConfigurationMetadata:
  DateCreated: '1465283380000'
  DateModified: '1465283380000'
SolutionStack: 64bit Amazon Linux 2016.03 v2.1.2 running Ruby 2.3 (Passenger Standalone)
OptionSettings:
  aws:elasticbeanstalk:command:
    BatchSize: '30'
    BatchSizeType: Percentage
  aws:elb:policies:
    ConnectionDrainingEnabled: true
  aws:elb:loadbalancer:
    CrossZone: true
  aws:elasticbeanstalk:environment:
    ServiceRole: aws-elasticbeanstalk-service-role
  aws:elasticbeanstalk:healthreporting:system:
    AWSEBHealthdGroupId: XXX
    SystemType: enhanced
  aws:autoscaling:launchconfiguration:
    IamInstanceProfile: aws-elasticbeanstalk-ec2-role
    EC2KeyName: labo
    InstanceType: t2.micro
  aws:autoscaling:updatepolicy:rollingupdate:
    RollingUpdateType: Health
    RollingUpdateEnabled: true
EnvironmentTier:
  Type: Standard
  Name: WebServer
AWSConfigurationTemplateVersion: 1.1.0.0
  • Management Consoleで環境を作成した場合の設定ファイルの中身
EnvironmentConfigurationMetadata:
  DateCreated: '1465285233000'
  DateModified: '1465285233000'
SolutionStack: 64bit Amazon Linux 2016.03 v2.1.2 running Ruby 2.3 (Passenger Standalone)
OptionSettings:
  aws:elasticbeanstalk:command:
    BatchSize: '30'
    BatchSizeType: Percentage
    DeploymentPolicy: Rolling
  aws:elasticbeanstalk:sns:topics:
    Notification Endpoint: ''
  aws:elb:policies:
    ConnectionDrainingEnabled: true
    ConnectionDrainingTimeout: '20'
  aws:elb:loadbalancer:
    CrossZone: true
  aws:elasticbeanstalk:environment:
    ServiceRole: aws-elasticbeanstalk-service-role
    EnvironmentType: LoadBalanced
  aws:elasticbeanstalk:application:
    Application Healthcheck URL: ''
  aws:elasticbeanstalk:healthreporting:system:
    AWSEBHealthdGroupId: XXX
    SystemType: enhanced
    HealthCheckSuccessThreshold: Ok
  aws:autoscaling:launchconfiguration:
    IamInstanceProfile: aws-elasticbeanstalk-ec2-role
    InstanceType: t1.micro
    EC2KeyName: ''
  aws:autoscaling:updatepolicy:rollingupdate:
    RollingUpdateType: Health
    RollingUpdateEnabled: true
EnvironmentTier:
  Type: Standard
  Name: WebServer
AWSConfigurationTemplateVersion: 1.1.0.0
10
8
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
10
8