

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Adicionar e personalizar recursos do ambiente do Elastic Beanstalk
<a name="environment-resources"></a>

Você também pode personalizar seus recursos de ambiente que são parte do ambiente do Elastic Beanstalk. Por exemplo, você pode querer adicionar uma fila do Amazon SQS e um alarme sobre a profundidade da fila, ou você pode querer adicionar um cluster da 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.

Você pode usar a `Resources` chave em um [arquivo de configuração](ebextensions.md) para criar e personalizar AWS recursos em seu ambiente. Os recursos definidos nos arquivos de configuração são adicionados ao CloudFormation modelo usado para iniciar seu ambiente. Todos os [tipos de CloudFormation recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) são compatíveis.

**nota**  
Sempre que você adicionar um recurso que não seja gerenciado pelo Elastic Beanstalk, não se esqueça de adicionar uma política de usuário com as permissões AWS Identity and Access Management apropriadas para seus usuários (IAM). As [políticas de usuário gerenciadas](AWSHowTo.iam.managed-policies.md) que o Elastic Beanstalk fornece apenas permissões de cobertura para recursos gerenciados pelo Elastic Beanstalk.

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 permissão ao Amazon EC2 Auto Scaling para publicar mensagens no Amazon SNS, e um tópico do SNS, que retransmite mensagens do grupo 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](ebextensions-functions.md) 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](customize-containers-format-resources-eb.md) padrão fornecidos pelo Elastic Beanstalk.

Para `[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#d0e48356)`, `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 de acordo com o tipo de recurso e pode ser encontrado no [tópico CloudFormation do Guia do Usuário para o tipo de AWS::SNS::Topic recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#d0e62250).