当前位置: 首页 > news >正文

aws(学习笔记第二十一课) 开发lambda应用程序

aws(学习笔记第二十一课)

  • 开发lambda应用程序

学习内容:

  • lambda的整体概念
  • 开发lambda应用程序

1. lambda的整体概念

借助AWS Lambda,无需预置或管理服务器即可运行代码。只需为使用的计算时间付费。借助 Lambda,可以为几乎任何类型的应用进程或后端服务运行代码 - 所有这些都无需管理。上传代码后,Lambda 会处理运行和扩展具有高可用性的代码所需的一切。您可以将代码设置为从其他 AWS 服务自动触发,或直接从任何 Web 或移动应用进程调用。

  • lambda的使用方式
    • 作为事件驱动的计算资源时,Lambda 可以响应事件时运行代码
      在这里插入图片描述
    • 作为计算服务时,可以响应API Gateway或者API调用的HTTP请求时运行代码
      在这里插入图片描述

2. 开发lambda应用程序

  1. 开发第一个lambda应用程序hello,world
    • 创建函数
      选择nodejs平台执行。
      在这里插入图片描述
    • 为了权限,设定role
      在这里插入图片描述
    • 测试
      在这里插入图片描述
      点击测试按钮,执行测试。
      在这里插入图片描述
  2. 开发另一个lambda应用程序,使用tag过滤对EC2进行开启和停止控制
    • 作成一个EC2,作为lambda函数控制的目标
      在这里插入图片描述
    • 为了执行权限,通过赋予给lambda特定的role
      • role的策略
        这里有两个权限,
        • 一个是logs的权限,主要是输出lambdalog需要的权限。这个是lambda的必须策略
        • 另一个是ec2,主要是控制ec2的时候需要的权限
        {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Resource": "arn:aws:logs:*:*:*"},{"Effect": "Allow","Action": ["ec2:DescribeInstances","ec2:Start*","ec2:Stop*","ec2:DescribeInstanceStatus"],"Resource": "*"}]
        }
        
    • role的信任关系
      因为这个role需要给lambda执行需要,所以需要建立信任关系。
      {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "lambda.amazonaws.com"},"Action": "sts:AssumeRole"}]
      }
      
      在这里插入图片描述
    • 开始创建lambda函数
      权限这里执行lambda-role,来给lambda函数赋予执行权限。
      在这里插入图片描述
    • 成功创建lambda函数
      在这里插入图片描述
    • lambda函数的实例程序代码
      import os
      import boto3
      import loggingDEFAULT_TAGS = os.environ.get("DEFAULT_TAGS")
      print("DEFAULT_TAGS", DEFAULT_TAGS)logger = logging.getLogger()
      level = logging.getLevelName(os.environ.get("LOG_LEVEL", "INFO"))
      print("Logging level -- ", level)
      logger.setLevel(level)ec2_resource = boto3.resource('ec2')
      ec2_client = boto3.client('ec2')def lambda_handler(event, context):"""Function that start and stop ec2 instances schedule and with specific tags<br/>:param event: Input event, that should contain action and tags parameters, where tags is a list of comma separates key/value tags.<br/>:param context: Lambda context.<br/>:return: nothing"""logger.debug(event)print("event -- ", event)tags = get_tags(event['tags'] if 'tags' in event else DEFAULT_TAGS)print("tags -- ", tags)instances = get_instances_by_tags(tags)if not instances:logger.warning('No instances available with this tags')else:if event['action'] == 'start':ec2_client.start_instances(InstanceIds=instances)logger.info('Starting instances.')elif event['action'] == 'stop':ec2_client.stop_instances(InstanceIds=instances)logger.info('Stopping instances.')else:logger.warning('No instances availables with this tags')def get_tags(tags):"""Method that split comma separated tags and return a formed tags filter<br/>:param tags: Comma separated string with the tags values.<br/>:return: tags structure"""final_tags = []split_tags = tags.split(",")for tag in split_tags:values = tag.split('=')final_tags.append({'Name': values[0],'Values': [values[1]]})return final_tagsdef get_instances_by_tags(tags):"""Method that filter all ec2 instances and return only the instances with specific tags<br/>:param tags: Filter structure with tag values.<br/>:return: list of ec2 instances"""response = ec2_resource.instances.filter(Filters=tags)print("Response -- ", response)for instance in response:print("Instance -- ", instance)intance_ids = [instance.id for instance in response]print("intance_ids -- ", intance_ids)return intance_ids
      
    • 点击deploy对函数的代码进行部署
      可以看出这里是一个vscode风格的在线代码编辑器
      在这里插入图片描述
    • lambda函数进行环境变量的设定
      • 代码中使用`DEFAULT_TAGS = os.environ.get(“DEFAULT_TAGS”)得到环境变量,所以这里需要定义
      • tag:Name:lambda-ec2是标准的aws定义tag的方式
        在这里插入图片描述
    • 回到lambda的测试,编辑event参数
      在这里插入图片描述
    • 进行测试
      在这里插入图片描述
    • 检查ec2的状态
      在这里插入图片描述
    • 检查CloudWatch,可以看到lambda函数的log
      在这里插入图片描述

相关文章:

aws(学习笔记第二十一课) 开发lambda应用程序

aws(学习笔记第二十一课) 开发lambda应用程序 学习内容&#xff1a; lambda的整体概念开发lambda应用程序 1. lambda的整体概念 借助AWS Lambda&#xff0c;无需预置或管理服务器即可运行代码。只需为使用的计算时间付费。借助 Lambda&#xff0c;可以为几乎任何类型的应用进…...

JavaWeb Servlet的getInitParameter、业务层、控制反转IOC和依赖注入DI

目录 1. Servlet的getInitParameter2. 业务层3. 控制反转IOC和依赖注入DI3.1 背景3.2 实现如下3.3 原理 1. Servlet的getInitParameter Servlet有两个getInitParameter 一个是servletContext.getInitParameter&#xff0c;获取context-param的全局参数一个是servletConfig.ge…...

免费开源跨平台SSH工具 WindTerm:媲美 xshell 的最佳平替(含详细使用教程)

免费开源跨平台SSH工具 WindTerm WindTerm概述免费开源、免费开源、免费开源下载、安装WindTerm 屏幕截图WindTerm 主窗口 &#xff08;zsh&#xff09;&#xff1a;WindTerm 拆分视图&#xff1a;WindTerm DigeWhite 主题&#xff1a; WindTerm 基本设置使用WindTerm连接到服务…...

洛谷 P1075 [NOIP2012 普及组] 质因数分解 C语言

题目&#xff1a; P1075 [NOIP2012 普及组] 质因数分解 - 洛谷 | 计算机科学教育新生态 题目描述 已知正整数 n 是两个不同的质数的乘积&#xff0c;试求出两者中较大的那个质数。 输入格式 输入一个正整数 n。 输出格式 输出一个正整数 p&#xff0c;即较大的那个质数。…...

Apache Hive常见问题

入门问题 什么是Apache Hive&#xff1f; 解释Hive的用途。Hive作为基于Hadoop的数据仓库工具是如何工作的&#xff1f;与传统关系型数据库相比&#xff0c;使用Hive有什么优势&#xff1f; Hive和关系型数据库管理系统&#xff08;RDBMS&#xff09;之间的区别是什么&#…...

活动报名系统源码:JAVA同城服务系统活动报名同城圈子商家商城城市代理躲猫猫

JAVA同城服务系统&#xff1a;打造多元化社交与娱乐新体验 在数字化时代&#xff0c;同城服务系统已成为连接城市生活的重要桥梁。我们精心打造的JAVA同城服务系统&#xff0c;不仅融合了活动报名、同城圈子、商家商城、城市代理等多重功能&#xff0c;还特别加入了创新的“躲…...

迈向Z级计算:Cloud4Science范式加速科学发现进程

传统超级计算机作为科学计算的核心支柱&#xff0c;在推动技术进步方面发挥了不可替代的作用&#xff0c;但随着科学智能时代下需求的多样化和复杂化&#xff0c;其扩展性和能效的局限逐渐显现。 针对这一挑战&#xff0c; 微软亚洲研究院 的研究员提出了 Cloud4Science 的新范…...

ES IK分词字典热更新

前言 在使用IK分词器的时候&#xff0c;发现官方默认的分词不满足我们的需求&#xff0c;那么有没有方法可以自定义字典呢&#xff1f; 官方提供了三种方式 一、ik本地文件读取方式 k插件本来已为用户提供自定义词典扩展功能&#xff0c;只要修改配给文件即可&#xff1a; …...

Mac连接云服务器工具推荐

文章目录 前言步骤1. 下载2. 安装3. 常用插件安装4. 连接ssh测试5. 连接sftp测试注意&#xff1a;ssh和sftp的区别注意&#xff1a;不同文件传输的区别解决SSL自动退出 前言 Royal TSX是什么&#xff1a; Royal TSX 是一款跨平台的远程桌面和连接管理工具&#xff0c;专为 mac…...

从零开始:如何在 .NET Core 中优雅地读取和管理配置文件

在.net中的配置文件系统支持丰富的配置源&#xff0c;包括文件(json、xml、ini等)、注册表、环境变量、命令行、Azure Key Vault等&#xff0c;还可以配置自定义配置源并跟踪配置的改变&#xff0c;然后按照优先级进行覆盖&#xff0c;总之对文件的配置有很多方法&#xff0c;这…...

JVM学习:CMS和G1收集器浅析

总框架 一、Java自动内存管理基础 1、运行时数据区 运行时数据区可分为线程隔离和线程共享两个维度&#xff0c;垃圾回收主要是针对堆内存进行回收 &#xff08;1&#xff09;线程隔离 程序计数器 虚拟机多线程是通过线程轮流切换、分配处理器执行时间来实现的。为了线程切换…...

Science Robotics让软机器人“活”得更久的3D打印!

软机器人硬件在医疗、探索无结构环境等领域有广泛应用&#xff0c;但其生命周期有限&#xff0c;导致资源浪费和可持续性差。软机器人结合软硬组件&#xff0c;复杂组装和拆卸流程使其难以维修和升级。因此&#xff0c;如何延长软机器人的生命周期并提高其可持续性成为亟待解决…...

模电面试——设计题及综合分析题0x01(含答案)

1、已知某温控系统的部分电路如下图&#xff08;EDP070252&#xff09;&#xff0c;晶体管VT导通时&#xff0c;继电器J吸合&#xff0c;压缩机M运转制冷&#xff0c;VT截止时&#xff0c;J释放&#xff0c;M停止运转。 &#xff08;1&#xff09;电源刚接通时&#xff0c;晶体…...

二层交换机和三层交换机

一、交换机简述 交换机的主要功能包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。交换机还具备了一些新的功能&#xff0c;如对VLAN&#xff08;虚拟局域网&#xff09;的支持、对链路汇聚的支持&#xff0c;甚至有的还具有防火墙的功能。 交换机除了能够连接同种类型…...

每天五分钟机器学习:凸集

本文重点 在SVM中,目标函数是一个凸函数,约束集合是一个凸集。因此,SVM问题可以转化为一个凸规划问题来求解。这使得SVM在实际应用中具有较高的计算效率和准确性。 凸集的定义 凸集是指一个集合中的任意两点之间的线段都完全包含在这个集合中。换句话说,给定集合C中的两…...

Mongodb日志报错too many open files,导致mongod进程down

【解决方案】 &#xff08;1&#xff09;进入到服务器&#xff0c;执行&#xff1a; ulimit -a 查看&#xff1a;open files这一行的数量&#xff0c;如果查询到的结果是1000左右&#xff0c;那多半是服务器限制。 &#xff08;2&#xff09;在当前session窗口执行如下&…...

关于 PCB线路板细节锣槽问题 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/144783817 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

硬件基础知识笔记(2)——二级管、三极管、MOS管

Part 2 二级管、三极管、MOS管 1、二级管1.1肖特基二极管和硅二极管选型比较1.2到底是什么决定了二极管的最高工作频率&#xff1f;1.3二极管结电容和反向恢复时间都是怎么来的 1、二级管 1.1肖特基二极管和硅二极管选型比较 肖特基二极管的优势主要在速度和压降&#xff0c;对…...

软件测试之非功能测试设计

非功能测试设计 非功能:除了软件功能测试&#xff0c;其他都是非功能测试。 1.兼容 2.易用 3.性能(专项) 4.安全(专项) Web浏览器 兼容:Chrome浏览器、Edge浏览器、Firefox浏览器、Safari苹果浏览器 易用:参考竞品&#xff0c;主观感受为主 总结 1.非功能测试范围 兼容性、…...

GPU 英伟达GPU架构回顾

1999 年&#xff0c;英伟达发明了 GPU&#xff08;graphics processing unit&#xff09;&#xff0c;本节将介绍英伟达 GPU 从 Fermi 到 Blackwell 共 9 代架构&#xff0c;时间跨度从 2010 年至 2024 年&#xff0c;具体包括费米&#xff08;Feimi&#xff09;、开普勒&#…...

基于企业发展过程的改进型元启发式算法IED:一种高效智能优化策略的探索与应用

改进企业发展优化算法IED&#xff0c;(Enterprise Development, ED)是一种新型的元启发式算法&#xff08;智能优化算法&#xff09;&#xff0c;灵感来源于企业的发展过程。 该算法清晰易懂&#xff0c;与我们日常使用的优化算法相近&#xff0c;发表的期刊等级很高&#xff0…...

Attu可视化工具:向量数据库性能监控与运维效率提升实践

Attu可视化工具&#xff1a;向量数据库性能监控与运维效率提升实践 【免费下载链接】attu The Best GUI for Milvus 项目地址: https://gitcode.com/gh_mirrors/at/attu Attu作为Milvus向量数据库的图形化管理界面&#xff0c;通过系统监控工具、性能分析仪表盘和可视化…...

45V耐压CSM7345SG ESOP8,可调12V输出+使能端+散热片,低压差线性稳压器

CSM7345 ESOP8可调12V输出带使能端 全方案深度分析我会从芯片核心特性、12V输出原理、使能端设计、电路参数计算、保护机制、PCB设计要点等维度&#xff0c;做完整的工程级拆解&#xff0c;帮你彻底吃透这个方案。一、芯片核心特性&#xff08;适配12V输出的关键参数&#xff0…...

Featurize深度学习训练全流程解析:从数据上传到模型输出

1. 数据上传&#xff1a;从本地到云端的高效迁移 第一次使用Featurize上传数据集时&#xff0c;我习惯性地点开了网页端的上传按钮&#xff0c;结果发现系统自动启用了分片上传机制。这个细节让我印象深刻——当我的10GB图像数据集在上传过程中网络波动时&#xff0c;竟然不需要…...

如何用ContextMenuManager彻底掌控Windows右键菜单?4阶段优化法让操作效率提升300%

如何用ContextMenuManager彻底掌控Windows右键菜单&#xff1f;4阶段优化法让操作效率提升300% 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单是…...

利用快马平台AI能力,十分钟快速生成qoderwork官网原型

最近在尝试为AI代码生成工具qoderwork设计官网原型时&#xff0c;发现用传统方式从零开始写代码特别耗时。正好体验了InsCode(快马)平台的AI生成功能&#xff0c;十分钟就做出了可交互的响应式单页原型&#xff0c;分享下这个高效的工作流&#xff1a; 明确核心模块 官网原型需…...

HS2-HF_Patch深度解析:游戏模组生态系统的技术架构与实现原理

HS2-HF_Patch深度解析&#xff1a;游戏模组生态系统的技术架构与实现原理 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch作为Honey Select 2游戏的…...

自然语言理解在AI原生应用领域的关键作用

自然语言理解在AI原生应用领域的关键作用关键词&#xff1a;自然语言理解&#xff08;NLU&#xff09;、AI原生应用、大语言模型、多模态交互、意图识别、情感分析、智能交互摘要&#xff1a;本文将深入探讨自然语言理解&#xff08;NLU&#xff09;如何成为AI原生应用的“大脑…...

Element-UI表格避坑指南:修改展开图标+整行点击+智能隐藏,这些细节你知道吗?

Element-UI表格交互优化实战&#xff1a;图标定制与智能展开的进阶技巧 第一次使用Element-UI的Table组件时&#xff0c;我对着文档折腾了半天才让展开功能正常工作。但当我看到默认的小箭头图标时&#xff0c;总觉得和产品设计风格格格不入&#xff1b;点击展开区域太小导致用…...

OpenClaw性能调优:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF长文本处理技巧

OpenClaw性能调优&#xff1a;Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF长文本处理技巧 1. 为什么需要长文本优化 上周我尝试用OpenClaw处理一份200页的技术文档摘要任务时&#xff0c;遭遇了典型的"长文本困境"——模型要么漏掉关键段落&#xff0c;要么生…...