「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
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 つのリソース (hookrole
、hooktopic
および 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 リソースタイプのトピック」にあります。