创建 EC2 实例时使用 boto3 在用户数据中传递变量
Pass variable in user data using boto3 while creating EC2 Instance
我正在创建 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-strings:
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
我正在创建 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-strings:
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