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 관리 리소스에 대한 권한만 다룹니다.

예를 들어 다음 구성 파일에서는 Elastic Beanstalk에서 생성된 기본 Auto Scaling 그룹에 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"] }

이 예제에서는 hookrole, hooktopiclifecyclehook와 같은 리소스 3개를 정의합니다. 첫 번째 두 리소스는 Amazon SNS에 메시지를 게시하기 위한 Amazon EC2 Auto Scaling 권한을 부여하는 IAM 역할과 Auto Scaling 그룹의 메시지를 이메일 주소로 전달하는 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에서 제공하는 표준 리소스 이름 중 하나입니다.

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 리소스 유형 항목에서 확인할 수 있습니다.