【发布时间】:2021-11-15 14:15:27
【问题描述】:
我有一个 lambda 函数来启动具有以下用户数据的 windows EC2 实例并从环境变量中收集实例详细信息。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import boto3
AMI = os.environ["AMI"]
INSTANCE_TYPE = os.environ["INSTANCE_TYPE"]
KEY_NAME = os.environ["KEY_NAME"]
SUBNET_ID = os.environ["SUBNET_ID"]
REGION = os.environ["REGION"]
ec2 = boto3.client("ec2", region_name=REGION)
def lambda_handler(event, context):
init_script = '''<powershell>$USERNAME="latchu"
$PASSWORD="eM2An@ydxk"
net user /add $USERNAME $PASSWORD</powershell>'''
instance = ec2.run_instances(
ImageId=AMI,
InstanceType=INSTANCE_TYPE,
KeyName=KEY_NAME,
SubnetId=SUBNET_ID,
MaxCount=3,
MinCount=1,
InstanceInitiatedShutdownBehavior="terminate",
UserData=init_script,
)
在这里,我使用简单的 init 脚本在 Windows 实例上创建了一个带密码的用户。但是当我启动一个实例时它非常容易。有时,我应该创建 100 多个具有不同用户数据的实例,这些用户数据正在创建用户。 我可以在 boto3 中使用 MaxCount 简单地创建 100 多个实例。
MaxCount=3
但是,我的情况是每个 Ec2 实例都应该有单独的用户凭据。
所以我想要一个 lambda 函数来处理 100 多个具有不同用户数据的实例。我怎样才能实现?任何帮助将不胜感激。
【问题讨论】:
-
抱歉,不清楚。那 100 个凭证从何而来?您想启动 100 个 lambda 函数,每组凭据一个,或者您想使用一个 lambda 函数启动所有 100 个实例?
-
对不起我不清楚的问题。是的,我想使用一个 lambda 函数来启动所有 100 个实例。我也没有办法携带 100 个用户凭据。可以请教一下吗?
-
“用户凭据”是什么意思?您是说运行
net user /add的脚本部分每次都应该提供不同的凭据是的,这将是一个问题,因为您希望在每个 实例上运行相同的用户数据脚本。我建议要么使用 Active Directory(而不是单个用户),要么单独启动每个实例。 -
是的,它将通过 net user 命令新建用户和密码,这是我脚本的一部分。我的完整脚本将创建用户,然后是用户配置文件,最后将 reg 从模板用户复制到新创建的用户。
标签: amazon-web-services amazon-ec2 aws-lambda boto3