使用 Learner Lab - 创建一个 AWS Lambda 函数,停止在 AWS 中运行的 EC2 实例。
Academy Learner Lab 是 AWS 提供一个帐号让学生可以自行使用 AWS 的服务,让学生可以在 100 USD的金额下,自行练习所要使用的 AWS 服务,这篇文章介绍的是如何使用 VPC 设置自己想要的环境供 EC2 使用。
Lambda 是一种无服务器计算服务,它能提供内置的容错能力和自动计算扩展功能。
实践活动内容:
- 在此动手实践活动中,您将创建一个 AWS Lambda 函数。您还将创建一个 Amazon CloudWatch 事件以每分钟触发一次该函数。该函数使用 AWS Identity and Access Management (IAM) 角色。通过此 IAM 角色,该函数可以停止在 Amazon Web Services (AWS) 账户中运行的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
步骤一:创建EC2
1、在控制台搜索EC2。
2、单击 启动新实例 。
3、设置名称,AMI,实例类型,密钥对,安全组。
步骤二、创建 Lambda 函数
1、在 AWS 管理控制台上中,从 Services(服务)菜单中选择 Lambda。
2、单击 Create function(创建函数)。
3、在 Create function(创建函数)屏幕上,配置以下设置:
- 选择 Author from scratch(从头开始创作)
- “Function name”(函数名称):test
- “Runtime”(运行时):Python 3.8
- 单击 更改默认执行角色
- “Execution role”(执行角色):Use an existing role(使用现有角色)
- “Existing role”(现有角色):从下拉列表中选择 LabRole
4、单击 Create function(创建函数)。
步骤三:配置触发器
1、单击 + Add trigger(+ 添加触发器)。
2、单击 Select a trigger(选择触发器)下拉菜单,然后选择 EventBridge (CloudWatch Events)。
3、在规则部分,请选择 Create a new rule(创建新规则),然后配置以下设置:
- “Rule name”(规则名称):everyMinute
- “Rule type”(规则类型):Schedule expression(计划表达式)
- “Schedule expression”(计划表达式):rate(1 minute)
注意:如果使用 cron 表达式(而非 rate 表达式),则可能会触发更真实的基于计划的 stopinator Lambda 函数。但是,在本次活动中,使用 rate 表达式可确保尽快触发 Lambda 函数,以便您可以看到结果。
4、单击 Add(添加)。
4、单击 启动实例 。
5、查看刚刚创建实例的ID。
我创建的实例ID为i-03a6f9b78b038ff56。
步骤四:配置 Lambda 函数
1、在 Designer(设计师)框中,单击 *test *(这是 Lambda 函数的名称)以显示和编辑 Lambda 函数代码。
2、在 Function code(函数代码)框中,删除现有的代码。复制以下代码并将其粘贴到函数代码框中:
import boto3
region = '<REPLACE_WITH_REGION>'
instances = ['<REPLACE_WITH_INSTANCE_ID>']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('stopped your instances: ' + str(instances))
3、将 <REPLACE_WITH_REGION> 占位符替换为您实际使用的区域。为此,请执行以下操作:
单击右上角的区域,然后使用区域代码。例如,美国东部(弗吉尼亚北部)的区域代码为 us-east-1。
重要提示:在代码中,请在区域值两侧使用一对单引号 (’ ') 将其包含在这对单引号内。例如,对于弗吉尼亚北部,它将为 us-east-1
4、验证您账户中正在运行的名为 test-instance2 的 EC2 实例,并复制 test-instance2 实例 ID。
5、返回 AWS Lambda 控制台浏览器选项卡,将 <REPLACE_WITH_INSTANCE_ID> 替换为您刚刚复制的实际实例 ID。
6、在 Function Code(函数代码)框的右上角,选择 Deploy(部署)。
7、单击靠近页面顶部的选项卡 Monitoring(监控)。
步骤五:验证 Lambda 函数是否可正常运行
1、返回 Amazon EC2 控制台的浏览器标签页,看看您的实例是否已停止。
单击 Deploy 后的实例。
实例将在 1 分钟内停止。
恭喜!您已完成本次活动。