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

Elastic Beanstalk 環境リソースの追加とカスタマイズ

また、Elastic Beanstalk 環境の一部である環境リソースをカスタマイズしたいこともあります。例えば、Amazon SQS キューおよびキューの深さに対するアラームを追加したり、Amazon ElastiCache クラスターを追加したりする場合です。ソースバンドルと共に設定ファイルを含めることにより、アプリケーションバージョンのデプロイと同時に環境を簡単にカスタマイズできます。

設定ファイルResources キーを使用すると、使用中の環境で AWS のリソースを作成およびカスタマイズできます。設定ファイルで定義されたリソースは、環境を起動するために使用される AWS CloudFormation テンプレートに追加されます。すべての AWS CloudFormation リソース タイプがサポートされます。

たとえば、次の設定ファイルは Auto Scaling ライフサイクルフックを Elastic Beanstalk によって作成されたデフォルトの Auto Scaling グループに追加します。

~/my-app/.ebextensions/as-hook.config

Resources:
  hookrole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument: {
               "Version" : "2012-10-17",
               "Statement": [ {
                  "Effect": "Allow",
                  "Principal": {
                     "Service": [ "autoscaling.amazonaws.com" ]
                  },
                  "Action": [ "sts:AssumeRole" ]
               } ]
            }
      Policies: [ {
               "PolicyName": "SNS",
               "PolicyDocument": {
                      "Version": "2012-10-17",
                      "Statement": [{
                          "Effect": "Allow",
                          "Resource": "*",
                          "Action": [
                              "sqs:SendMessage",
                              "sqs:GetQueueUrl",
                              "sns:Publish"
                          ]
                        }
                      ]
                  }
               } ]
  hooktopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint: "my-email@example.com"
          Protocol: email
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }

この例では、3 つのリソース (hookrolehooktopic および lifecyclehook) を定義しています。最初の 2 つのリソースはメッセージを Amazon SNS に発行する許可を Auto Scaling に付与する IAM ロールと、Auto Scaling グループから E メールアドレスにメッセージをリレーする SNS トピックです。Elastic Beanstalk は、指定したプロパティとタイプを持つこれらのリソースを作成します。

最後のリソース lifecyclehook はライフサイクルフック自体です。

  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }

ライフサイクルフックの定義では、いくつかの組み込み関数を使用して、フックのプロパティに値を入力します。{ "Ref" : "AWSEBAutoScalingGroup" } は、環境の Elastic Beanstalk によって作成された Auto Scaling グループの名前を取得します。AWSEBAutoScalingGroup は Elastic Beanstalk によって提供される標準リソース名の 1 つです。

AWS::IAM::Role では、Ref が返すのは ARN ではなくロールの名前のみです。RoleARN パラメータの ARN を取得するには、代わりに別の組み込み関数 Fn::GetAtt を使用することで、リソースから属性を取得できます。RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }hookrole リソースから Arn 属性を取得します。

{ "Ref" : "hooktopic" } は、設定ファイルで前に作成した Amazon SNS トピックの ARN を取得します。Ref から返される値は、リソースタイプによって異なります。これらの値は、AWS CloudFormation ユーザー ガイドの「AWS::SNS::Topic リソースタイプのトピック」にあります。

構文

リソースのプロパティの値は、3 種類の方法で定義できます。

  • 値を渡す

  • 値のリストを渡す

  • オプション名と値を渡す

プロパティの値を取得するには、2 つの関数を使用できます。

  • リソースから属性の値を取得するには、Fn::GetAtt を使用します。詳細については、「Fn::GetAtt」を参照してください。

  • 指定したパラメータまたはリソースの値を取得するには、Ref を使用します。詳細については、Ref を参照してください。

Resources: 
  <name of resource>:
    Type: <resource type identifier> 
    Properties: 
      # Example syntax of a property that takes in the actual value
      <property name>: <literal string> 
      
      # Example syntax of a property that takes a list of strings
      <property name>: ["<literal string>", "<literal string>"]
      
      # Example syntax of a property that takes the option name and the value
       <property name>: 
         - Name: <option name>
           Value: <literal string> 
      
      # Example syntax showing how to use Fn::GetAtt to return the value of an attribute from a resource in the configuration file
      <property name>: 
         - Name: <option name>
           Value : { "Fn::GetAtt" : [ "<logicalNameOfResource>", "<attributeName>"] }  

      # Example syntax showing how to use Ref to return the value of a specified parameter or resource. You can use Ref for single property values and lists.
      <property name>: 
          Ref: <parameter reference> 

オプション

次の表では、Resources キーで使用できるキーと説明を示します。

キー 説明

<name of resource>

リソースに作成するものの名前です。各リソースには、設定ファイル内で一意である論理的な名前が必要です。設定ファイル内の別の場所では、この名前を使用してリソースを参照します。

次の表では、指定する各リソース名に対して使用できるキーと説明を示します。

キー 説明

Type

リソースタイプの識別子です。リソースタイプ識別子のリストについては、「AWS リソースプロパティタイプのリファレンス」を参照してください。

Properties

オプション。リソースの Type 宣言のすぐ後で、リソースごとに Properties セクションが宣言されます。プロパティの値には、リテラル文字列、文字列のリスト、パラメータ参照、疑似参照、または関数によって返される値を使用できます。プロパティを宣言する必要のないリソースの場合は、そのリソースの Properties セクションを省略できます。

Elastic Beanstalk のリソース名

Elastic Beanstalk では、アプリケーションをデプロイするときに自動的に作成される AWS リソース用に固定のリソース名が用意されています。設定ファイルでこれらのリソースを参照するときは、リソース名を使用する必要があります。RefFn::GetAtt を使用して、設定ファイルのこれらのリソースについての情報を取得できます。Ref の使用可能な値と属性は、CloudFormation のリソースのタイプによって決まります。

リソース名 説明

AWSEBAutoScalingGroup

環境にアタッチされる Auto Scaling group。

型: AWS::AutoScaling::AutoScalingGroup

AWSEBAutoScalingLaunchConfiguration

環境の Auto Scaling group にアタッチする起動設定。

型: AWS::AutoScaling::LaunchConfiguration

AWSEBEnvironmentName

お使いの環境。

型: AWS::ElasticBeanstalk::Environment

AWSEBLoadBalancer

お使いの環境のロードバランサー(該当する場合)。

型: AWS::ElasticLoadBalancing::LoadBalancer

AWSEBLoadBalancerSecurityGroup

カスタム VPC のみで、Elastic Beanstalk がロードバランサー用に作成するセキュリティグループの名前。デフォルトの VPC または EC2 classic では、Elastic Load Balancing はデフォルトのセキュリティグループをロードバランサーに割り当てます。

型: AWS::EC2::SecurityGroup

AWSEBRDSDatabase

環境にアタッチされる Amazon RDS DB インスタンス(該当する場合)。

型: AWS::RDS::DBInstance

AWSEBSecurityGroup

Auto Scaling group にアタッチされるセキュリティグループ。

型: AWS::EC2::SecurityGroup

AWSEBWorkerQueue

ワーカー環境では、デーモンが処理の必要があるリクエストをプルする対象の Amazon SQS キュー。

型: AWS::SQS::Queue

AWSEBWorkerDeadLetterQueue

ワーカー環境で、デーモンによって配信できなかったメッセージや、正常に処理できなかったその他のメッセージを保存する Amazon SQS キュー。

型: AWS::SQS::Queue

AWSEBWorkerCronLeaderRegistry

ワーカー環境で、定期的なタスクでデーモンが使用する内部レジストリである Amazon DynamoDB テーブル。

型: AWS::DynamoDB::Table

次に示すのは、Elastic Beanstalk 環境のカスタマイズに使用できる設定ファイルの例のリストです。