【问题标题】:create a file at launch of ec2 instance在启动 ec2 实例时创建一个文件
【发布时间】:2019-04-27 05:49:04
【问题描述】:
我的本地机器上有一个文件file.txt。
我想在 ec2 实例启动时自动创建具有相同内容的相同文件(例如在根目录中)。
create_instances函数的UserData参数可以在实例启动时自动执行脚本:
UserData = '''#/bin/bash
echo "content" >> /file.txt'''
但是这个脚本会直接在实例中执行,所以它无法知道我本地机器上的file.txt。
【问题讨论】:
标签:
python
amazon-ec2
boto3
【解决方案1】:
您需要问自己“互联网上的计算机如何访问我本地计算机上的file.txt?”
如果您遵循良好的安全性,答案是:“它不能!”
相反,请考虑您可以将file.txt 放置在哪里,以便 EC2 实例可以获得访问权限。简单的答案是将其放在 Amazon S3 中,并授予实例访问 Amazon S3 中文件的权限。
流程如下:
- 创建(或使用现有的)Amazon S3 存储桶
- 上传
file.txt到桶
- 启动 EC2 实例时,为其分配一个 IAM 角色,该角色有权访问存储桶中的
file.txt
- 在用户数据脚本中,将文件从 S3 复制到实例
例如:
aws s3 cp s3://my-bucket/file.txt file.txt
该文件随后在 EC2 实例上可用。
以后,您可以在 S3 存储桶中更新 file.txt。任何新实例都会自动检索此文件的最新版本。