lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!

lambda :: ->

如果你还没有注意到了,我最近被唠叨试图开始使用时,我遭遇了陷阱AWSλ-S3正式例子 。 虽然大多数这些愚蠢的错误的指责是对我自己的懒惰,过度自尊和缺乏对细节的关注,我个人觉得,在开始与一家领先的无服务器供应商不应该是那么难。

我在SLAppForge的团队也是如此 。 他们建立了Sigma来实现它。

(警告:猫从书包里拿出来了!)

让我们看看Sigma可以做什么, 使您的无服务器生活变得轻松 。

Sigma已经提供了S3缩略图样本的现成版本 。 根据自述文件 ,如果您敢的话,部署它只需几分钟。

在此讨论中,让我们采用一种更为动手的方法:从原始缩略图样本中获取代码,将其粘贴到Sigma中,然后将其部署到AWS中 -上一次我尝试在该块中运行的过程完全相同。 。

如您所知 ,Sigma代表您管理有关应用程序的许多“幕后”工作,包括功能权限, 触发器配置和相关资源 。 这取决于代码中遵循的某些语法准则,幸运的是,这些准则非常简单和普通。 因此,我们要做的就是获取原始源代码,将其粘贴到Sigma中,然后进行一些调整和拖放配置 ,而Sigma将理解并处理其余的内容。

如果您还没有这样做,现在是注册Sigma的绝佳时机,这样我们就可以开始以无服务器的出色表现激发您的灵感。 (不计其数,您确实需要一个Sigma帐户才能访问IDE 。)请参阅此小型指南 。

进入后,只需从AWS文档中复制S3缩略图示例代码,然后将其推到Sigma的喉咙即可。

编辑本来会很平淡无聊,但现在开始显示一些有趣的东西。 特别是在编辑区域的左边界。

顶部的闪电符号(与带有突出显示的event变量的函数标题相对)表示触发器 ; lambda函数的调用(入口)点。 尽管这不是功能本身的一部分,但仍应使用必要的源(S3存储桶),目标(拉姆达函数)和权限进行正确配置。

好消息是,使用Sigma,您只需要指示源(S3存储桶)配置即可 ; Sigma将负责其余的工作。

此时,闪电符号为红色,表示尚未配置触发器 。 只需将S3条目从左窗格拖到上一行(函数标题),以向Sigma指示此lambda应该由S3事件触发。

一旦完成拖放操作,Sigma就会询问您缺失的谜题:即S3存储桶(应作为lambda的触发点)以及触发该操作的操作的性质; 在我们的例子中,这是图像文件的“对象创建”事件 。

在指定源存储桶时,Sigma提供了两种选择:您可以选择

  • 通过下拉列表(“ 现有存储桶”标签)选择一个现有存储 ,或
  • 通过“ New Bucket”选项卡定义一个新的存储桶名称,以便Sigma在项目部署中重新创建它。

由于“图像文件”类别涉及多种文件类型,因此我们需要为lambda定义多个触发器,每个触发器对应于不同的文件类型。 (不幸的是,S3触发​​器尚不支持文件名前缀/后缀的模式 ;如果支持 ,我们可以只使用一个触发器!)因此,让我们首先通过选择“创建对象”作为事件来定义JPG文件的触发器,然后输入“ .png”作为后缀,然后拖放并配置另一个触发器,以“ .jpg”作为后缀-您猜对了,就是JPG文件。

选择第二个触发器的存储桶时,需要记住一点:即使为第一个触发器输入了新的存储桶名称,也必须从“现有存储桶”选项卡中选择相同的,已经定义的存储桶。第二个触发条件,而不是再次将存储桶名称作为“新”存储桶提供。 原因是Sigma跟踪每个新定义的资源(因为它必须在部署时创建存储桶),并且,如果两次定义一个新存储桶,Sigma将会感到“困惑”,并且部署可能无法按计划进行。 为减轻歧义,当我们在现有存储桶列表下显示新定义的存储桶时,我们将其标记为“((新)”)(例如,对于新添加的my-new-bucket例如my-new-bucket (New) )–至少对于现在,直到我们找到更好的选择; 如果您有个不错的主意,请随时加入! 。

现在两个触发器都已准备就绪,我们可以继续进行操作了

您可能已经注意到编辑器的左窗格中两个S3图标,它们在触发指示器的下方,紧靠s3.getObjects3.putObject调用。 这两个操作的参数块也将突出显示。 这表明Sigma已经确定了API调用,并可以通过自动生成必要的提示使它们正常工作(例如执行权限)来帮助您。

单击第一个图标(与s3.getObject )以打开操作编辑弹出窗口。 我们要做的就是为Bucket参数选择正确的存储桶名称(同样,请确保在“现有”标签上选择带“(新)”前缀的存储桶,而不是在输入框上重新输入存储桶名称。 “新”标签),然后点击更新

同样,使用第二个图标( s3.putObject ),选择目标存储桶。 由于我们尚未添加或使用目标存储桶定义,因此您将在Sigma中添加新的存储桶定义; 因此,您可以选择现有的存储桶或为新的存储桶命名,就像第一个触发器一样。

仅需一步:添加依赖项。

尽管Sigma为您提供了将第三方依赖项添加到您的项目的功能的出色功能,但它确实需要在构建时知道依赖项的名称和版本。 由于我们将异类代码复制并粘贴到了编辑器中,因此我们应该分别告诉Sigma有关代码中使用的依赖项,以便将它们与我们的项目源捆绑在一起。 只需单击工具栏上的“添加依赖项”按钮,搜索依赖项,然后单击“添加”,所有添加的依赖项(以及两个默认值aws-sdk@slappforge/slappforge-sdk )将显示在依赖项下拉列表中-在“添加依赖项”按钮下。

在本例中,必须遵循原始的AWS示例准则 ,我们必须添加async (对于瀑布式执行流)和gm (对于GraphicsMagick )依赖项。

做完了!

现在剩下的就是单击IDE工具栏上的Deploy按钮,使轮子运动!

首先,Sigma将把应用程序源保存(提交)到您的GitHub存储库中。 因此,请确保在Sigma要求您提供一个不错的提交消息时:)您也可以选择自己喜欢的回购名称,如果不存在,Sigma会创建它。 (但是,在遇到“空”存储库(即没有主分支的存储库)时,Sigma有一个已知的故障,因此,如果您有全新的存储库,请确保对主分支进行至少一次提交;最简单的方法是创建自述文件,只需在创建仓库时一键即可轻松完成 。

保存完成后,Sigma将自动构建您的项目,并打开一个部署摘要弹出窗口,其中显示与新的S3缩略图生成器有关的所有内容。 有些名称看起来有些乱七八糟,但它们通常会反映已部署资源的类型和名称(例如s3MyAwesomeBucket可能代表一个名为my-awesome-bucket的新S3存储my-awesome-bucket )。

查看列表(如果您愿意),然后单击Deploy 。 部署机制将启动,显示实时进度栏(以及显示项目基础CloudFormation堆栈中发生的更改的日志视图)。

部署完成后,您期待已久的缩略图生成器lambda就可以进行测试了! 只需将JPG或PNG文件上传到您选择的源存储桶(通过S3控制台 ,或者如果您更像我,则通过aws s3 cp ),然后惊叹于将在目标存储桶中弹出的缩略图秒!

如果在目标存储桶中没有发现任何有趣的内容(稍等片刻),则可以像检查其他lambda一样检查lambda的执行日志 ,以检查出了什么问题。 我们知道回到AWS控制台执行此操作很痛苦,并且我们希望不久后能找到一种更酷的替代方法。

如果您想将生成的缩略图公开(就像我在前一篇文章中所说的那样,私有缩略图有什么用?),您不必四处阅读IAM文档,更新IAM角色并摆脱困境。 只需单击s3.putObject调用上的S3操作编辑图标,从s3.putObject列表中选择“ public-read应用于对象的ACL”参数作为public-read ,然后单击“ Deploy”经历另一个保存-构建-部署周期。 (我们已经在努力加快这些“零钱”部署的速度,因此请暂时忍受:))新部署完成后,要查看任何新生成的缩略图,您只需输入URL http://<bucketname>.s3.amazonaws.com/resized-<original image name>放入您喜欢的Web浏览器,然后按Enter!

哦,如果您遇到任何异常情况-提交/构建/部署失败,异常错误或Sigma自身的错误-别忘了通过Slack ping我们 -或在我们的公共问题跟踪器上发布问题 ; 您可以使用“帮助”→“报告问题”菜单项直接在IDE中进行操作。 对于您以后希望在Sigma中看到的任何改进或出色功能,也是如此:更快的构建和部署,下载构建/部署工件的能力,崭新的主题集等等。 请告诉我们,我们会将其添加到待办事项中,并在不远的将来尝试一下!

好的,伙计们,是时候回去开始和Sigma一起玩了 ,而我写了我的下一篇博客文章! 请继续关注SLAppForge的更多信息!

翻译自: https://www.javacodegeeks.com/2018/03/no-more-running-around-the-block-lambda-s3-thumbnailer-nailed-by-slappforge-sigma.html

lambda :: ->

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Requests库实战(三)---爬取豆瓣电影详细信息

完整代码 爬取豆瓣电影的详细信息 地址&#xff1a;豆瓣电影动画 向下滑动时新增的数据也是Ajax请求&#xff0c;原理和上一个项目是一样的。唯一的不同是此处请求url携带了多个参数 import requests import json header{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x6…

lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

lineseparatorJDK 7在java.lang.System类上引入了一个名为lineSeparator&#xff08;&#xff09;的新方法。 该方法不期待任何参数&#xff0c;并返回一个String &#xff0c;它表示“取决于系统的行分隔符字符串。” 此方法的Javadoc文档还指出System.lineSeparator() “始终…

JavaScript(JS)中与正则表达式有关的方法介绍

文章目录RegExpRegExp 对象的属性compiletestexecString一共有 7 个与正则表达式式相关的方法&#xff0c;这些方法分别来自于 RegExp 与 String 对象。RegExp RegExp 对象表示正则表达式, 主要用于对字符串执行模式匹配. 语法: new RegExp(pattern[, flags]) 参数 pattern …

Requests库实战(四)---爬取肯德基餐厅地址信息

功能&#xff1a;爬取查询后的肯德基餐厅的地址信息 地址&#xff1a;http://www.kfc.com.cn/kfccda/storelist/index.aspx 亮点是post请求的参数有两组&#xff1a;查询字符串参数&#xff0c;表单数据。 对于post请求,由于url中隐藏了许多参数&#xff0c;所以引入了表单数据…

显示请求_学习记录:HTTP的响应与请求amp;Curl

本文包含四个部分&#xff0c;简要介绍HTTP请求、HTTP响应、chrome开发者查看、与CURL命令。Part1&#xff1a;HTTP请求1GET请求指定的页面信息&#xff0c;并返回实体主体。2HEAD类似于get请求&#xff0c;只不过返回的响应中没有具体的内容&#xff0c;用于获取报头。3POST向…

java.线程池 线程数_如何在线程“ main”中修复异常java.lang.NoClassDefFoundError:Java中的org / slf4j / LoggerFactory...

java.线程池 线程数此错误表示您的代码或您在应用程序中使用的任何外部库都在使用SLF4J库 &#xff08;一个开放源代码日志记录库&#xff09;&#xff0c;但无法找到所需的JAR文件&#xff0c;例如slf4j-api-1.7.2.jar因此它是在线程“ main” java.lang.NoClassDefFoundError…

正则表达式实战---爬取多张图片

主要是分析网站图片的html源代码&#xff0c;来决定正则表达式如何写。 完整代码 #使用正则表达式爬取多张图片,亮点在于数据解析 #爬取网站&#xff1a;https://www.bilibili.com/read/cv11323037?fromsearch import requests import re import os image_pathimage if not …

JS(JavaScript) 使用捕获性分组处理文本模板,最终生成完整字符串

var tmp "An ${a} a ${b} keeps the ${c} away";// obj 是 json 对象 var obj {a:"apple",b:"day",c:"doctor" };/** *descript 声明定义一个函数 tmpl&#xff0c;该函数将文本模板对应的变量替换后返回 * */function tmpl(t,o){/*…

6 日期字符串转日期_Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类...

因为Jdk7及以前的日期时间类的不方便使用问题和线程安全问题等问题&#xff0c;2005年&#xff0c;Stephen Colebourne创建了Joda-Time库&#xff0c;作为替代的日期和时间API。Stephen向JCP提交了一个规范&#xff0c;他本人作为规范的领导人&#xff0c;该规范就是JSR 310&am…

第一个JDK 10(18.3)候选版本(内部版本43)展示了新的版本控制方案

Mark Reinhold的帖子“ JDK 10&#xff1a;First Release Candidate ”宣布“在build 43中没有未解决的P1错误”&#xff0c;并将Build 43命名为最初的JDK 10 Release Candidate 。 Reinhold帖子还指向“ JDK 10 Early Access Builds ”页面&#xff0c;该页面包含发行说明的链…

安装Pytorch如何选择CUDA的版本

安装Pytorch时CUDA的选择Nvidia CUDA查看CUDA版本方法查看CUDA的驱动API版本查看CUDA的运行API版本查看官方CUDA的运行API版本方法1方法2查看Anaconda里cudatoolkit包版本CUDA是一个并行计算平台和编程模型&#xff0c;能够使得使用GPU进行通用计算变得简单和优雅。Nvidia官方提…

MySQL的通配符

% 表示匹配任意数量&#xff08;包含 0 个&#xff09;的任意字符&#xff0c;跟 like 配合使用_ 下划线表示匹配任意 1 字符

db2 springboot 整合_[SpringBoot]快速配置多数据源(整合MyBatis)

前言由于业务需求&#xff0c;需要同时在SpringBoot中配置两套数据源(连接两个数据库)&#xff0c;要求能做到service层在调用各数据库表的mapper时能够自动切换数据源&#xff0c;也就是mapper自动访问正确的数据库。本文内容&#xff1a;在SpringbootMybatis项目的基础上&…

pytorch使用GPU炼丹笔记

如何使用GPU训练/测试模型使用单GPU设置设备将数据转换成CUDA张量将模型参数转换成CUDA张量使用指定GPU1.使用CUDA_VISIBLE_DEVICES。1.1 直接在终端或shell脚本中设定&#xff1a;1.2 python代码中设定&#xff1a;2. 使用函数 set_device使用多GPUDP方法DDP方法需要先初始化数…

java解决错误经验_在Java错误进入生产之前的新处理方式

java解决错误经验我们如何认识到解决预生产错误的旧方法还不够&#xff0c;以及我们如何能够改变它 第一次尝试就没有完美的代码&#xff0c;我们所有人都可以证明我们已经通过艰苦的努力学习了。 不管我们使用多少测试周期&#xff0c;代码审查或工具&#xff0c;总有至少一个…

vim 寄存器中的 ^@,^M,^J

首先&#xff0c;ASCII 码表示的字符不都是可打印字符&#xff08;可显示字符&#xff09;&#xff0c;意味着&#xff0c;其中的控制字符本不是对应某个字形的&#xff0c;所以本没有办法看到他们。那么如果万一某个文件中出现了这些怎么办捏&#xff1f;&#xff1f;这里我们…

2019怎么保存低版本_CAD发给客户没字体怎么办?快速打包外部参照、字体、打印样式...

CAD发给客户没字体怎么办&#xff1f;快速打包DWG外部参照、字体、图片、打印样式&#xff01;有没有遇见过这样的情况&#xff1a;图纸发给客户&#xff0c;外部参照的文件没有一起打包发出去&#xff0c;被老板和客户臭骂一顿。图纸发给审图&#xff0c;没有字体&#xff0c;…

Python正则表达式笔记

正则表达式作用函数函数参数查找函数re.findall()re.search()re.match()re.finditer()re.compile()函数替换函数re.sub(pattern,repl,string,count0,flags0)re.subn()分割函数re.split()模式串字符字符类别表达(匹配单个字符)\d\D\s\S\w\W[a-z][^a-z].多次匹配字符*&#xff1f…

CentOS Linux 下的 vim 无法使用系统剪贴板,怎么解决呢?

文章目录查看系统当前的 vim 是否支持剪贴板安装 gvim 来支持系统剪贴板gvim 和 vim 的区别SSH 连接远程主机遇到的问题查看系统当前的 vim 是否支持剪贴板 首先查看下系统的 vim 是否支持系统剪贴板&#xff0c;在命令终端输入如下命令&#xff1a; [roothtlwk0001host test…

jwt令牌_jwt-cli:用于解码JSON Web令牌(JWT令牌)的Shell库

jwt令牌当我开始经常需要解码JSON Web令牌时&#xff0c;我感到迫切需要编写允许我快速进行操作的程序。 有很多不错的选项&#xff0c;例如jwt.io &#xff0c;但是一旦您需要执行此操作&#xff0c;它通常就会变得笨拙。 并且&#xff0c;如果您需要处理多个令牌或进一步处理…