【原创】aws s3 lambda缩略图生成
参考资料:
https://github.com/sagidm/s3-resizer
https://medium.com/swlh/how-to-get-started-with-aws-lambda-9f2ac14d863a
https://heropy.blog/2019/07/21/resizing-images-cloudfrount-lambda/
and so on...
创建S3桶
https://s3.console.aws.amazon.com/s3/home?region=ap-northeast-2
点击“创建存储桶”,输入名称(假如叫做n-test-2),选择区域。
![]()
设置权限:
- 取消勾选“阻止所有公共访问”
- 存储桶策略输入如下代码:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::n-test-2/*"
}
]
}
创建Lambda函数
https://ap-northeast-2.console.aws.amazon.com/lambda/home?region=ap-northeast-2#/functions
点击“创建函数”,输入函数名称(假设叫做resize-func),运行语言选择“Node.js 8.10”(因为目前可用的demo包就是nodejs8.1的版本)
![]()
展开“权限”部分,创建自定义角色,跳转到IAM控制台:
![]()
创建策略,跳转到新页面:
![]()
JSON里面输入如下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::n-test-2/*"
}
]
}
注意上面的 Resource里面是桶名称。
下一步,输入一个名称,比如resize-policy,然后点击创建。
回到创建角色页面,搜索刚才创建的策略并选中:
![]()
然后再搜索AmazonS3FullAccess,并选中:
![]()
点击下一步,再下一步,输入角色名称(假设resize-role),点击“创建角色”。
回到创建函数页面,选择“使用现有角色”,选择刚才创建的角色:
![]()
然后点击右下角 创建函数。
![]()
添加触发器
选择 API Gateway:
![]()
创建新 API:
![]()
安全性:打开
![]()
点击添加。
回到主界面,复制API 终端节点:
https://qzdp929f68.execute-api.ap-northeast-2.amazonaws.com/default/resize-func
桶静态网站托管配置:
回到桶设置中,属性,静态网站托管:
- 索引文档:index.html
- 错误文档:error.html
- 重定向规则:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals/>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>https</Protocol>
<HostName>qzdp929f68.execute-api.ap-northeast-2.amazonaws.com</HostName>
<ReplaceKeyPrefixWith>default/resize-func?path=</ReplaceKeyPrefixWith>
<HttpRedirectCode>307</HttpRedirectCode>
</Redirect>
</RoutingRule>
</RoutingRules>
注意上面的 HostName 和 ReplaceKeyPrefixWith 内容分别为刚才复制的API终端节点的值。
- 复制上面的终端节点:http://n-test-2.s3-website.ap-northeast-2.amazonaws.com
![]()
环境变量配置
BUCKET=桶名称
URL=刚才复制的终端节点URL
![]()
右上角保存。
上传函数代码.
从这里下载nodejs8.1的函数包:https://github.com/sagidM/s3-resizer/releases
![]()
函数代码部分,选择“上传.zip文件”
![]()
右上角保存。
配置测试事件(可选)
{
"queryStringParameters": {
"path": "300x300/pic2.jpg"
}
}
注意有个细节:300x300,是字母x,不是乘号(×)
此时访问原图: http://n-test-2.s3-website.ap-northeast-2.amazonaws.com/pic2.jpg
运行测试,会生成300*300的缩略图:
http://n-test-2.s3-website.ap-northeast-2.amazonaws.com/300x300/pic2.jpg
【原创】aws s3 lambda缩略图生成的更多相关文章
- AWS的lambda和S3之间如何连携
今天正好遇到了这个问题,就在官方文档里查询,然后根据他的说明整理了一下大致的流程,详细的请参考AWS国际版的官方文档,这里只是作者的一个简单的流程展示. Lambda和S3连接 1.在S3的同一区域当 ...
- Upload a file with $.ajax to AWS S3 with a pre-signed url
转载自:https://gist.github.com/guumaster/9f18204aca2bd6c71a24 生成预签名的Demo文档:https://docs.aws.amazon.com/ ...
- storj白皮书v3最全面解读,Docker创始人的加入能否扳倒AWS S3
Storj新发了白皮书v3,地址是:https://storj.io/storjv3.pdf. 这次白皮书一共有90页,看完还真要费不少时间.如果你没有时间看,可以看一下我这篇快速技术解读. 上次St ...
- Amazon AWS S3 操作手册
Install the SDK The recommended way to use the AWS SDK for Java in your project is to consume it fro ...
- Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...
- [AWS] S3 Bucket
云存储服务 2.1 为网站打开属性 属性和权限设置 设置bucket属性,打开功能:Static website hosting(静态网站托管) 设置bucket权限,Permissions ---- ...
- 基于 Apache Hudi + Presto + AWS S3 构建开放Lakehouse
认识Lakehouse 数据仓库被认为是对结构化数据执行分析的标准,但它不能处理非结构化数据. 包括诸如文本.图像.音频.视频和其他格式的信息. 此外机器学习和人工智能在业务的各个方面变得越来越普遍, ...
- AWS S3 CLI的权限bug
使用AWS CLI在S3上创建了一个bucket,上传文件的时候报以下错误: A client error (AccessDenied) occurred when calling the Creat ...
- AWS S3使用小结
使用场景一:储存网站的图片,并能被任何人访问 1. 创建一个bucket,名字与需要绑定的域名一致. 例如,根域名是mysite.com,希望把所有图片放在pic.mysite.com下面,访问的时候 ...
随机推荐
- props、state、forms
{}用来内嵌任何JS表达式JSX属性JS核心分为三大块:Es6.DOM.WindowBABEL编译器:可以在线编译html语法生成对应的react语法 **自定义组件第一个字母大写:用于区别普通的对象 ...
- linux 非root用户安装nginx
第一步:首先下载依赖包 下载地址 pcre(www.pcre.org),zlib(www.zlib.org),openssl(www.openssl.org) 第二步:上传那个nginx的安装包 下载 ...
- linux系统编程之文件与io(四)
今天继续学习文件与io,主要是学习文件共享及文件.复制文件描述符,有点抽象,主要是概念上的理解,但是很重要,下面一一来分解: 文件共享: 回顾一下,在linux系统调用中,是通过文件描述符来访问文件的 ...
- nginx简单学习
1.nginx的安装 .yum解决编译nginx所需的依赖包,之后你的nginx就不会报错了 yum install gcc patch libffi-devel python-devel zlib- ...
- IT公司该如何落实机器学习?
Cisco发布的总结报告<泽字节时代:趋势和分析>中指出:2016年末,全球年度互联网流量将突破ZB大关(1ZB泽字节:1000EB艾字节),并将于2020年达到2.3ZB;互联网的流量将 ...
- 《CoderXiaoban》第八次团队作业:Alpha冲刺 3
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件测试基 ...
- DT二次开发之-资讯列表中调用 TAG 关键词
资讯列表加文章关键词:(列表或搜索主字段加上 ,tag) {if $t[tag]} <p class="key"> 关键词: {php $tag = str_repla ...
- 为什么将项目托管到Apache,浏览器输入http://127.0.0.1会跳转到http://127.0.0.1//dashboard/?
找到xampp安装的根目录下htdocs文件夹下的index.php文件 <?php if (!empty($_SERVER['HTTPS']) && ('on' == $_SE ...
- Idea导入maven项目
1.idea中有项目的关闭项目 File>>close project 回到截图 下一步>下一步
- Leonardo的笔记本LA 3641——置换的乘法
题意 给出26个大写字母的置换 $B$,问是否存在一个置换 $A$,使得 $A^2=B$. 分析 首先,若A=BC,若B和C都能表示成两个相同循环的乘积,则A也能. 因为,不相交的循环的乘积满足交换律 ...