【问题标题】:Pass variable in user data using boto3 while creating EC2 Instance在创建 EC2 实例时使用 boto3 在用户数据中传递变量
【发布时间】:2021-06-06 04:44:59
【问题描述】:

我正在创建 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-3.x amazon-web-services aws-lambda boto3 user-data


【解决方案1】:

这就是您将变量插入字符串的方式 :-)

如果你有一个相当现代的 Python 版本,你可以像这样使用 f 字符串:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2019-11-21
    • 2019-10-19
    • 2012-05-14
    • 2020-09-30
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多