Adicionar e personalizar recursos do ambiente do Elastic Beanstalk
Você também pode personalizar seus recursos de ambiente que são parte do ambiente do Elastic Beanstalk. Por exemplo, é possível adicionar uma fila do Amazon SQS e um alarme sobre o comprimento da fila, ou adicionar um cluster do Amazon ElastiCache. Você pode personalizar facilmente seu ambiente ao mesmo tempo que implanta a versão do aplicativo incluindo um arquivo de configuração com o pacote de origem.
Use a chave Resources
em um arquivo de configuração para criar e personalizar recursos da AWS em seu ambiente. Os recursos definidos
em arquivos de configuração são adicionados ao modelo do AWS CloudFormation usado
para iniciar seu ambiente. Todos os tipos de recursos do AWS CloudFormation são compatíveis.
Por exemplo, o arquivo de configuração a seguir adiciona um gancho de ciclo de vida do Auto Scaling ao grupo de Auto Scaling padrão criado pelo Elastic Beanstalk:
~/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"] }
Este exemplo define três recursos: hookrole
, hooktopic
e lifecyclehook
. Os dois primeiros recursos são uma função do IAM, que concede ao Auto Scaling do
Amazon EC2 permissão para publicar mensagens no Amazon SNS e um tópico SNS, que retransmite
mensagens do grupo de Auto Scaling para um endereço de e-mail. O Elastic Beanstalk
cria esses recursos com as propriedades e os tipos especificados.
O recurso final, lifecyclehook
, é o ciclo de vida do gancho propriamente dito:
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
NotificationTargetARN: { "Ref" : "hooktopic" }
RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
A definição de gancho do ciclo de vida usa duas funções para preencher valores para as propriedades do gancho. {
"Ref" : "AWSEBAutoScalingGroup" }
recupera o nome do grupo de Auto Scaling criado pelo Elastic Beanstalk para o ambiente.
AWSEBAutoScalingGroup
é um dos nomes de recurso padrão fornecidos pelo Elastic Beanstalk.
Para AWS::IAM::Role
, Ref
retorna somente o nome da função, não o nome de região da Amazon (ARN). Para obter
o ARN para o parâmetro RoleARN
, use outra função intrínseca, Fn::GetAtt
, que pode obter qualquer atributo de um recurso. RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
obtém o atributo Arn
do recurso hookrole
.
{ "Ref" : "hooktopic" }
obtém o ARN do tópico do Amazon SNS criado anteriormente no arquivo de configuração.
O valor retornado por Ref
varia por tipo de recurso e pode ser encontrado no tópico para o tipo de recurso AWS::SNS::Topic do Guia do usuário do AWS CloudFormation.