zoukankan      html  css  js  c++  java
  • Lambda函数使用 示例 详细说明

    Lambda函数使用 示例 详细说明
    示例解析
    Lambda函数使用
    2019/07/11 Chenxin
    参考
    https://aws.amazon.com/cn/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/ 用Lambda定时关机,开机(AWS)

    使用 Lambda 按固定间隔停止和启动 Amazon EC2 实例
    目的
    节省费用

    简要说明
    注意:此示例设置是简单的解决方案。有关更可靠的解决方案,请使用 AWS 实例计划程序(https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-instance-scheduler/)。

    本示例的主要步骤:

    1. 为 Lambda 函数创建自定义 (IAM) 策略和执行角色。
    2. 创建 停止/启动 EC2 实例的 Lambda 函数。
    3. 创建 按计划触发您的函数的 CloudWatch Events 规则。
      注意:您也可以创建当您 AWS 账户中发生某事件时触发的规则。

    IAM 策略 和 角色
    创建 IAM 策略
    将此 JSON 策略文档粘贴到策略编辑器中,比如命名为 iam-policy-for-lambda-of-ec2startstop :
    {
    "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 创建一个 IAM 角色,比如命名为 role-for-lambda-of-ec2-manage。附加权限策略时,搜索并选择刚创建的 IAM 策略。

    创建 停止/启动 EC2 实例的 Lambda 函数 以及 测试函数执行结果
    创建stop实例的Lambda函数

    1. 在 Lambda 控制台中,选择创建函数。

    2. 选择 Author from scratch (从头开始创作)。

    3. 在基本信息中下,添加以下内容:
      函数名,例如“StopEC2Instances”。
      运行时,请选择 Python 2.7。
      在权限下,展开"选择或创建执行角色"。在执行角色下,选择使用现有角色。在现有角色下,选择您创建的 IAM 角色。

    4. 选择创建函数。

    5. 复制以下代码,将其粘贴到代码编辑器的编辑器窗格 (lambda_function) 中。此代码作用为停止指定的 EC2 实例。
      import boto3
      region = 'us-west-1' # 需要更换
      instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26'] #需要更换为实际的.可以是1个或更多个
      def lambda_handler(event, context):
      ec2 = boto3.client('ec2', region_name=region)
      ec2.stop_instances(InstanceIds=instances)
      print 'stopped your instances: ' + str(instances)

    6. 在基本设置下,将超时设置为 10 秒。例如,如果您想停止/启动多个实例,那可能需要更大的超时值,及不同的内存。

    7. 选择保存。

    创建start实例的Lambda函数
    8. 重复第 1-7 步来创建另一个函数。
    在第 3 步中,为“StartEC2Instances”。
    在第 5 步中,为以下:
    import boto3
    region = 'us-west-1' # 需更换
    instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26'] # 需更换
    def lambda_handler(event, context):
    ec2 = boto3.client('ec2', region_name=region)
    ec2.start_instances(InstanceIds=instances)
    print 'started your instances: ' + str(instances)

    测试 Lambda 函数
    在 Lambda 控制台中,选中对应函数-> 选择操作,然后选择测试->在配置测试事件对话框中,选择创建新测试事件-> 输入事件名称,然后选择创建。注意:您不需要更改测试事件的 JSON 代码 — 该函数不使用此信息。->选择测试以执行此函数。
    确认执行效果(比如是否完成关机).
    为其他函数重复以上步骤。

    创建触发 Lambda 函数的规则 (这里用cloudwatch的事件驱动)

    1. 打开 CloudWatch。

    2. 在左侧,选择规则。

    3. 创建规则。

    4. 在事件源下,选择计划(可以是计划,也可以是按照固定频率2种方式)。

    5. 执行以下任意一项操作:
      对于固定频率为,输入间隔时间(分钟数、小时数或天数)。
      对于 Cron 表达式,输入指示 Lambda 何时停止实例的表达式(格式正确的话,会自动跳出未来执行的列表)。有关规则语法的详细信息,请参阅规则的计划表达式(cloudwatch的事件里 https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/events/ScheduledEvents.html )。
      注意:Cron 表达式使用 UTC 进行计算.

    6. 在目标下,选择 Add target(添加目标)。

    7. 选择 Lambda 函数。

    8. 对于函数,选择将停止 EC2 实例的函数。

    9. 选择配置详细信息。

    10. 在规则定义下,执行以下操作:
      对于名称,输入识别规则的名称,例如“StopEC2Instances”。
      (可选)对于描述,输入对规则的描述。例如“每天晚上 10 点停止 EC2 实例”。
      对于状态,选中已启用复选框。

    11. 选择创建规则。

    12. 重复第 1-11 步来创建规则以启动您的 EC2 实例。以不同的方式执行以下操作:
      在第 5 步中,对于 Cron 表达式,输入指示 Lambda 何时启动实例的表达式。
      在第 8 步中,对于函数,选择将启动您的 EC2 实例的函数。
      在第 10 步中,在规则定义下,输入一个名称(如“StartEC2Instances”).

    原理与使用详解
    问题

    问题:
    通过lambda 和OSS 构造一个响应式的网页。 做到serverless的运行。
    只是我现在还没想明白 如何进行响应。
    从oss的html 静态页面激活lambda的计算动作,还有怎么做动态的调整 就没想通了。

    回答:
    html里面包含js代码,跟lambda或api gateway交互

    随后:
    我大概懂了。 也是靠触发,点击页面的时候 js 发起请求 到api gateway, 然后api gateway 直接触发lambda。
    不过反过来 动态调整网页这个就不是很清楚了。

    案例:
    http://aws.amazon.bokecc.com/news/show-1006.html 利用Lambda配合DynamoDB和S3构建一个交互式动态网站
    http://aws.amazon.bokecc.com/searchresult.html?title=lambda 这里还有很多相关的在线研讨会资料

  • 相关阅读:
    Asp.NetCore3.1 WebApi 获取配置json文件中的数据
    Dapper同时操作任意多张表的实现
    将视图批量新增到PowerDesigner中并以model图表的形式展示
    .NetCore3.1获取文件并重新命名以及大批量更新及写入数据
    .NetCore 简单的使用中间件
    比较复杂的SQL转Linq
    Asp.NetCore3.1版本的CodeFirst与经典的三层架构与AutoFac批量注入
    Git与GitLab的分支合并等简单的测试操作
    Winform的控件以及DataGridView的一般使用
    在Linux系统中运行并简单的测试RabbitMq容器
  • 原文地址:https://www.cnblogs.com/chanix/p/12739095.html
Copyright © 2011-2022 走看看