如何通过CloudWatch触发Lambda自动启动关闭的AWS Lightsail实例?
自动启动关闭的AWS Lightsail实例方案
核心思路
利用AWS EventBridge(原CloudWatch Events)监控Lightsail实例的状态变更事件,当实例变为stopped状态时触发你的Lambda函数执行启动操作。
步骤1:创建EventBridge规则
- 进入AWS控制台的EventBridge服务,选择左侧菜单的「规则」,点击「创建规则」。
- 自定义规则名称(比如
StartStoppedLightsailInstances),规则类型选择「事件模式」。 - 在「事件模式」配置中:
- 选择「自定义模式(JSON编辑器)」,输入以下事件模式:
{ "source": ["aws.lightsail"], "detail-type": ["Lightsail Instance State Change"], "detail": { "state": ["stopped"] } } - (可选)如果只想监控特定实例,在
detail中添加instanceName或instanceArn字段过滤,比如:"detail": { "state": ["stopped"], "instanceName": ["你的实例名称"] }
- 选择「自定义模式(JSON编辑器)」,输入以下事件模式:
- 点击「下一步」,在「目标」配置中:
- 目标类型选择「Lambda函数」,然后选择你已有的启停Lambda函数。
- 完成规则创建(控制台会自动为Lambda添加EventBridge的调用权限)。
步骤2:确认Lambda权限
确保你的Lambda执行角色拥有以下权限(若之前的启停函数已正常运行,大概率已配置):
lightsail:StartInstances:用于启动Lightsail实例- 若创建规则时未自动添加调用权限,可手动为Lambda添加以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:你的AWS区域:你的账号ID:function:你的Lambda函数名称" } ] }
步骤3:测试验证
手动停止目标Lightsail实例后,通过以下方式验证:
- 查看EventBridge规则的「已触发次数」,确认事件已被捕获。
- 进入Lambda控制台,查看函数的CloudWatch执行日志,验证函数是否正常运行。
- 检查Lightsail实例状态,确认是否自动启动。
内容的提问来源于stack exchange,提问作者Stucked
相关产品推荐
相关产品推荐

