![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CN4IGNhNzN4AjY0cTMjJTM0QDOyMWO4gTMwIWNjFGN58CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
如果熟悉Amazon Web Services应该知道AWS是快速创新、灵活、按需计费的云计算服务。使用AWS的客户希望通过自动停止和启动EC2实例,来降低Amazon Elastic Compute Cloud 的使用量,以达到有效降低成本的目的。
那么,如何能实现这个目的呢?现在,利用AWS Lambda无需预置或管理服务器即可运行代码, AWS Lambda只需要预设代码并自动缩放,就可执行每天几个到每秒数千个的请求。客户只需为消耗的计算时间付费,而在代码未运行期间不产生任何费用。
借助AWS Lambda几乎可以为任何类型的应用程序或后端服务运行代码,并无需进行任何管理。AWS Lambda可在高性能的计算基础设施上运行预设代码,执行计算资源的所有管理工作,只需把代码设置为自动从其他AWS服务触发或直接从任何Web或移动应用程序调用。然后上传代码,Lambda就会处理运行和扩展高可用性代码所需的一切工作。
AWS Lambda的工作原理
实例演示
下面以AWS Lambda和Amazon CloudWatch进行定时任务自动触发按需实例演示。
一
创建Lambda的IAM角色
1
创建Lambda的IAM策略
1.1 选择"服务"→“安全性、身份与合规性”->"IAM"->“策略”->创建策略(策略名称请自定义)
1.2 编辑JSON策略,允许lambda有reboot和log的权限
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"ec2:RebootInstances"
],
"Resource": "*"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "arn:aws:logs:*:*:*"
}
]
}
2
创建Lambda的IAM角色并附加权限
2.1 选择"服务"→“安全性、身份与合规性”->"IAM"->“策略”→创建角色(角色名称请自定义)
2.2 “AWS产品”选择“Lambda”→“Attach权限策略”选择创建的IAM策略→“标签”(可选项)→“审核”填写IAM“角色名称”、“角色描述(可选)”
二
创建Lambda函数
1
创建Lambda函数
1.1 选择"服务"→“计算”->“Lambda”->"创建函数"
1.2 编辑python代码
注意 1:“处理程序”选项默认为“lambda_function.lambda_handler”
注意2:编辑完代码,需要保存才能生效
import boto3
# 请按照实例所在的region填写,本例子为新加坡 ap-southeast-1
region = 'ap-southeast-1'
# 请按照实例的ID填写
instances = ['i-xxxxxxxx', 'aaaaaaaaaa']
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.reboot_instances(InstanceIds=instances)
print('rebooted your instances: ' + str(instances))
各个区域的名称和代码,请查考一下链接
https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html
1.3 测试函数
“函数”→“配置测试事件”->“创建新测试事件"→"事件模板"选择“Amazon CloudWatch”→事件名称填写"event"
注意1:Cloudwatch的事件为event,测试名称也定义为event
如果测试成功则可以查看实例的启动时间
三
配置Amazon CloudWatch event 定时重启
1
创建Cloudwatch规则
1.1 “服务”→“管理与监控”->“Cloudwatch”→“规则”→“创建规则”
对于固定频率为,输入间隔时间(分钟数、小时数或天数)。
对于 Cron 表达式,输入指示 Lambda 何时停止实例的表达式。有关规则语法的详细信息,请参阅一下链接
https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/events/ScheduledEvents.html
Examples
注意:Cron 表达式使用 UTC 进行计算。务必针对您的首选时区调整表达式。
2
查看lambda的Cloudwatch日志组
2.1 “函数”→“监控“→“查看Cloudwatch中的警报”,本例定义执行时间为每10分钟
注意:Cloudwatch时间为UTC +00:00
使用AWS Lanbde运行代码以响应事件,可以更改Amazon S3存储桶或AmazonDynamoDB表中的数据;以及使用Amazon API Gateway 运行代码以响应HTTP请求;使用通过AWS SDK完成的API调用来调用代码。
借助AWS Lanbde的这些功能,可以轻松地为Amazon S3和AmazonDynamoDB等AWS服务构建数据处理触发程序,处理Kinesis中存储的流数据,创建按AWS规模、性能和安全性运行的后端。
(文章作者:伍航恩。,图片来自网络,侵删)
延伸阅读:
【AWS ·创新科技】利用 Transit Gateway 和 Fortigate 实现企业东西向和南北向流量安全控制
【AWS ·创新科技】 关于AWS CDK 构建 EKS 平台
【AWS ·创新科技】当 DR 灾备遇到 KMS( 二)
【AWS ·创新科技】当 DR 灾备遇到 KMS(一)
【AWS ·创新科技】Outposts,AWS的新突破
【AWS公开课】2020年第一季度课程表
【AWS ·创新科技】AWS CloudFront 根据客户端IP做302重定向
【AWS ·创新科技】AWS CloudFront + [email protected] 的切图方案
深圳敏捷云计算科技有限公司是一家专注于公有云增值服务的技术创新型公司,为企业客户提供云迁移,培训,开发,安全合规以及运维服务。