Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在启动ec2实例时创建一个文件_Python_Amazon Ec2_Boto3 - Fatal编程技术网

Python 在启动ec2实例时创建一个文件

Python 在启动ec2实例时创建一个文件,python,amazon-ec2,boto3,Python,Amazon Ec2,Boto3,我在本地机器中有一个文件file.txt 我希望在ec2实例启动时自动创建具有相同内容的相同文件(例如在根目录中) create\u instances函数的UserData参数允许在实例启动时自动执行脚本: UserData = '''#/bin/bash echo "content" >> /file.txt''' 但是,此脚本将直接在实例中执行,因此它无法了解本地计算机中的file.txt。您需要问自己“Internet上的计算机如何访问本地计算机

我在本地机器中有一个文件
file.txt

我希望在ec2实例启动时自动创建具有相同内容的相同文件(例如在根目录中)

create\u instances
函数的
UserData
参数允许在实例启动时自动执行脚本:

UserData = '''#/bin/bash
              echo "content" >> /file.txt'''
但是,此脚本将直接在实例中执行,因此它无法了解本地计算机中的
file.txt

您需要问自己“Internet上的计算机如何访问本地计算机上的
file.txt

如果你遵循良好的安全性,答案是:“它不能!”

相反,请考虑可以将
file.txt
放在何处,以便EC2实例可以访问。简单的答案是将其放在AmazonS3中,并授予实例访问AmazonS3中文件的权限

这一进程将是:

  • 创建(或使用现有)Amazon S3存储桶
  • 上传
    file.txt
    到bucket
  • 启动EC2实例时,为其分配一个IAM角色,该角色有权访问bucket中的
    file.txt
  • 在用户数据脚本中,将文件从S3复制到实例
例如:

aws s3 cp s3://my-bucket/file.txt file.txt
然后该文件在EC2实例上可用

将来,您可以更新S3存储桶中的
file.txt
。任何新实例都将自动检索此文件的最新版本