在创建EC2实例时使用boto3在用户数据中传递变量



我正在创建EC2实例,并希望传递用户数据以附加文件系统,但我不知道如何将文件系统ID作为变量传递。

文件系统ID将通过API网关传递。我已经尝试以下,但用户数据包含$aa而不是aa值。

aa='fs-ce99bd38'
user_data = """#!bin/bash
sudo yum -y install nfs-utils
sudo mount -t efs -o tls $aa:/ efs
"""
client = boto3.client('ec2', region_name=REGION)
def lambda_handler(event, context):
instance = client.run_instances(
ImageId=AMI,
InstanceType=INSTANCE_TYPE,
KeyName=KEY_NAME,
UserData=user_data,
MaxCount=min_max_add,
MinCount=min_max_add
)

这就是在字符串中插入变量的方法:-)

如果你有一个比较现代的Python版本,你可以像这样使用f-string:

aa='fs-ce99bd38'
user_data = f"""#!bin/bash
sudo yum -y install nfs-utils
sudo mount -t efs -o tls {aa}:/ efs
"""

否则,好的旧格式也可以达到同样的效果:

aa='fs-ce99bd38'
user_data = """#!bin/bash
sudo yum -y install nfs-utils
sudo mount -t efs -o tls {}:/ efs
""".format(aa)

或者更老的%操作符

aa='fs-ce99bd38'
user_data = """#!bin/bash
sudo yum -y install nfs-utils
sudo mount -t efs -o tls %s:/ efs
""" % aa

最新更新