É possível (e fácil) armazenar arquivos confidenciais no S3 e copiá-los para suas instâncias do Beanstalk automaticamente.
Quando você cria um aplicativo do Beanstalk, um bucket do S3 é criado automaticamente. Este intervalo é usado para armazenar versões de aplicativos, registros, metadados, etc.
O aws-elasticbeanstalk-ec2-role
padrão atribuído ao seu ambiente do Beanstalk tem acesso de leitura a este intervalo.
Portanto, tudo o que você precisa fazer é colocar seus arquivos confidenciais nesse intervalo (na raiz do intervalo ou em qualquer estrutura de diretórios desejada) e criar um arquivo .ebextension
config para copiá-los para suas instâncias do EC2 .
Aqui está um exemplo:
# .ebextensions/sensitive_files.config
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["elasticbeanstalk-us-east-1-XXX"] # Replace with your bucket name
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role" # This is the default role created for you when creating a new Beanstalk environment. Change it if you are using a custom role
files:
/etc/pki/tls/certs/server.key: # This is where the file will be copied on the EC2 instances
mode: "000400" # Apply restrictive permissions to the file
owner: root # Or nodejs, or whatever suits your needs
group: root # Or nodejs, or whatever suits your needs
authentication: "S3Auth"
source: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-east-1-XXX/server.key # URL to the file in S3
Isso está documentado aqui: link