ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не являюсь системным администратором!
Я использую безопасную корзину S3, то есть корзину, к которой имеет доступ только запускаемый вами экземпляр.Вы можете настроить роль IAM, которая выглядит следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::some-secure-bucket/*"
}
]
}
Затем вы можете загрузить свой файл .env
в это ведро (хранить его в зашифрованном виде).Затем, чтобы получить доступ к нему на своем экземпляре EC2, вы можете использовать инструменты AWS cli:
sudo apt-get install -y python-pip (for aws s3 CLI library)
sudo pip install awscli
aws s3 cp --region us-east-1 s3://some-secure-bucket/.some-dot-env-file output_file_path
Вы можете извлечь этот файл при запуске кода или, если нужно, запустить его при загрузке, указав вышеупомянутый cp
команда в сценарии инициализации, расположенная где-то вроде /etc/init.d/download_credentials.sh
Я думаю, что это действительно хороший вариант для загрузки вещей, которые нужны каждому экземпляру, использующему AMI, например учетные данные.Однако, если вы хотите указать метаданные для каждого экземпляра, я просто использовал теги, которые, как мне кажется, работают хорошо.Для этого измените вышеупомянутую роль IAM с помощью чего-то более похожего на:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::some-secure-bucket/*"
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeTags"
],
"Resource": "*"
}
]
}
Затем установите ec2-api-tools
sudo sed -i.dist 's,universe$,universe multiverse,' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y ec2-api-tools
И теперь вы сможете получать метаданные для каждого экземпляра через теги.Например, «Имя» вашего экземпляра:
ec2-describe-tags --filter resource-id="$(ec2metadata --instance-id)" --filter "key=Name" | cut -f5
Примечание: я сосу в bash, поэтому я убираю имя в ruby, но вы можете использовать tr
для удаления новой строки, если выв это!