首先,需要在AWS EC2控制台中创建一个AMI(Amazon Machine Image)镜像,该镜像包含要运行的代码和配置。
然后,创建一个AWS Lambda函数,该函数将使用AWS SDK中的EC2 API调用来启动之前创建的AMI镜像的新EC2实例。
利用CloudWatch事件规则来创建一个定时任务,定期触发Lambda函数。
编写Lambda函数的代码,用于启动新的EC2实例并运行指定的代码,一旦任务完成,再关闭实例。
以下是一个Python代码示例,用于从Lambda函数中启动EC2实例:
import boto3
def lambda_handler(event, context):
# 创建EC2客户端
ec2 = boto3.client('ec2')
# 配置启动实例的参数
instance_type = 't2.micro'
image_id = 'ami-xxxxxxxx' # 替换成之前创建的AMI ID
key_name = 'my-key-pair'
subnet_id = 'subnet-xxxxxx'
security_group_ids = ['sg-xxxxxxxx']
# 启动EC2实例
response = ec2.run_instances(
InstanceType=instance_type,
ImageId=image_id,
KeyName=key_name,
SubnetId=subnet_id,
SecurityGroupIds=security_group_ids
)
# 输出启动后的实例ID
instance_id = response['Instances'][0]['InstanceId']
print('Instance started: {}'.format(instance_id))
# 等待一段时间,运行指定的代码
...
# 关闭EC2实例
ec2.terminate_instances(InstanceIds=[instance_id])
print('Instance stopped: {}'.format(instance_id))
该代码将启动一个t2.micro
型的EC2实例,使用之前创建的AMI镜像,并运行指定的代码。一旦任务