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

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

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

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

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

注記

Elastic Beanstalk によって管理されていないリソースを追加する場合は、AWS Identity and Access Management (IAM) ユーザーに対し、必ず適切なアクセス許可を持つユーザーポリシーを追加してください。Elastic Beanstalk が提供する管理ユーザーポリシーは、Elastic Beanstalk で管理されるリソースに対するアクセス許可のみを対象としています。

たとえば、次の設定ファイルは 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 に発行する許可を Amazon EC2 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"] }

ライフサイクルフックの定義では、2 つの関数を使用して、フックのプロパティに値を入力します。{ "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 リソースタイプのトピック」にあります。