定时停止和启动 EC2 实例 并通知
·
写在前面:如有问题,以你为准,
流程
- Lambda 函数创建自定义 AWS Identity and Access Management (IAM) 策略和 IAM 角色。
- EC2 实例的 Lambda 函数。
- Lambda 函数。
- EventBridge 计划任务,按计划运行您的函
EC2 ID
Lambda 函数
创建 IAM 策略

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
}
]
}
创建角色

选择上面创建IAM 策略

创建 Lambda
- “基本信息”下,输入以下信息:对于“函数名称”,
- StopEC2Instances或StartEC2Instances。对于“运行时”,选择Python 3.13。在“权限”下,
- “更改默认执行角色”。在“执行角色”下,选择“使用现有角色”。在“现有角色”下,选择上面创建 IAM 角色。
更新代码
注意:将us-west-1替换为您的实例所在的 AWS 区域,并将InstanceIds替换为要停止和启动的实例的 ID
停止实例
mport boto3
region = 'us-west-1'
instances = ['i-0cbf27af2446a4644']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('stopped your instances: ' + str(instances))
启动实例
import boto3
region = 'us-west-1'
instances = ['i-0cbf27af2446a4644']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
- “部署”。要提示成功更新函数

- “配置”选项卡上,选择“常规配置”,然后选择“编辑”。
- 设置为 10 秒,然后选择“保存”。

测试效果
关闭EC2 实例测试


创建 EventBridge 规则
- EventBridge 控制台
- “创建规则”
- StopEC2Instances或StartEC2Instances
- “描述”栏中,输入规则的描述。
- 规则类型选择“计划”然后在 EventBridge Scheduler 中选择“继续”

- “周期性计划”
根据需求编写

- “选择目标”页面上,从“目标”下拉列表中选择Lambda 函数

- “函数”,请选择用于停止或启动实例的函数。

SNS 邮件通知(可选)
创建主题订阅
创建主题

创建订阅

Lambda 选择目标


会发一个邮件让你确认,确认后就可以正常接收通知了

增加返回内容,可自行修改
import boto3
region = 'us-east-1'
instances = ['i-0cbf27af2446a4644']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
return {
'statusCode': 200,
'body': {
'message': 'Started instances successfully',
'instances': instances,
'details': "start"
}
}

更多推荐


所有评论(0)