使用 Learner Lab - 使用 AWS Lambda 将图片写入 S3

news2024/11/27 2:13:56

使用 Learner Lab - 使用 AWS Lambda 将图片写入 S3

AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务,让学生可以在 100 USD的金额下,自行练习所要使用的 AWS 服务,以下使用 AWS Lambda 将图片写入 S3。

如何进入 Learner Lab 请参考 使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式,以下示范如何上传一个 zip 档,并把档案中的图片上传到 S3 存储桶中

步骤 1. 创建 Lambda 函数

AWS 网页控制台 上方的搜寻图示中输入 Lambda ,单击 Lambda 服务,如下图所示。

在这里插入图片描述
图 1. AWS 网页控制台中找寻 Lambda 服务

单击 创建函数 服务,如下图所示。

在这里插入图片描述
图 2. 创建 Lambda 函数

设定 Lambda 函数如下

  • 从头开始创作
    基本信息
  • 函数名称: Image2Lambda
  • 运行时: Python 3.8
  • 架构: x86_64
    权限
  • 执行角色: 使用现有角色 LabRole (很重要、很重要、很重要)

在这里插入图片描述
图 3. 设定 Lambda 函数

步骤 2. 创建 S3 存储桶

AWS 网页控制台 上方的搜寻图示中输入 S3 ,单击 S3 服务,如下图所示。

在这里插入图片描述
图 4. AWS 网页控制台中找寻 S3 服务

单击创建存储桶

在这里插入图片描述
图 5. 创建一个存储桶

创建存储桶的配置如下:

常规配置

  • 存储桶名称: lambda2s3image
  • AWS 区域: us-east-1

对象所有权

  • ACL 已启用

在这里插入图片描述
图 6. 存储桶名称与区域

此存储桶的“阻止公有访问”设置

  • 清除勾选 阻止所有公开访问
  • 勾选 我了解,当前设置可能会导致此存储桶及其中的对象被公开。

在这里插入图片描述
图 7. 存储桶公有访问”设置

其馀选项保留预设值,完成后单击 创建存储桶 按钮。

步骤 3. Python 代码

以下是 Python 的相关代码与 test.jpg 图片(可以是任何一张图片)上传到上一步骤所建立的存储桶,lambda_handler() 方法是 AWS Lambda 预设会调用函数名称。

# upload a local image to S3 bucket 
import boto3

image_filename = 'test.jpg'
output_bucket = 'lambda2s3image'
s3_key_value = 'lambda2S3.jpg'
s3_client = boto3.client('s3')

def lambda_handler(event, context):
    s3_client.upload_file(image_filename, output_bucket, s3_key_value,ExtraArgs={'ACL': 'public-read','ContentType':'image/jpeg'})
    s3_url = 'https://' + output_bucket + '.s3.amazonaws.com/' + s3_key_value
    return {
        'statusCode': 200,
        'body': s3_url
    }

下图为压缩档案 toLambda.zip 操作画面。

在这里插入图片描述

图 8. 将代码与图片压缩为 toLambda.zip

将 zip 档上传到 AWS Lambda 即可,进入 Image2Lambda 函数,选择 代码,单击上传自,选择 .zip文件,在跳出弹窗后,选择先前的压缩档即可,如下图所示。

在这里插入图片描述
图 9. 上传 toLambda.zip 到函数中

下图为上传后的结果,因为是使用 MAC 操作系统,所以会出现 _MACOSX 文件夹,可以自行删除
在这里插入图片描述
图 10. AWS Lambda 代码上传结果

步骤 4. 测试 AWS Lambda

单击图 10 中的 Test 按钮,会出现配置测试事件弹窗,配置如下:

  • 测试事件操作: 创建新事件
  • 事件名称: hello
  • 事件共享设置: 私有

设定好后存档即可。

在这里插入图片描述
图 11. 配置测试事件

在单击 Test 按钮之前先确认是否已经单击 Deploy (布署),必须要先布署才算是将代码布署到云计算中,单击 Test 按钮即可运行,运行结果会出现在 Execution result 视窗,可以看到 test.jpg 的图片已经上传到 S3 的存储桶中,并回传一个网址,运行时间在最下方显示:
Duration: 297.89 ms Billed Duration: 298 ms Memory Size: 128 MB Max Memory Used: 68 MB

在这里插入图片描述
图 12. 进行测试事件,检验代码执行结果

下图是透过浏览器观看存在 S3 的图片。

在这里插入图片描述
图 13. 可透过网页直接浏览图片

感谢亚马逊云科技王向炜 Alan Wang 提供的协助。

参考资料

  • AWS Lambda - 免费 Serverless 计算服务, https://aws.amazon.com/cn/campaigns/lambda/
  • When should I use Lambda?, https://docs.aws.amazon.com/lambda/latest/dg/welcome.html

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

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

相关文章

Git源码(Linus 2005 年提交的最初版本)阅读笔记

Linus 发疯文学欣赏 Git 是 Linux 之父 Linus Torvalds 于2005年开发的用于帮助管理 Linux 内核开发的开源版本控制软件。 美好的一天从阅读 Linus 的发疯文学开始。 (1) Linus 教你学习 Git (2) Linus 评价 CVS (Concurrent Version System) (3) 独一无二的 Linus 调侃结束&a…

手把手教你写一个生成yapi接口代码Chrome 扩展插件

前言 公司想开发个公众号,想在公众号里做业务,也不是做小程序,但是以后也可能做小程序。emm,就是这么随意。所以就找个到了uniapp,说是可以开发一套代码,多平台运行。开发语法还是vue,感觉也没…

RabbitMQ消息队列——快速入门

目录 1、MQ介绍 1.1、什么是MQ? 1.2、MQ的能够解决的问题 1.2.1、削峰填谷 1.2.3、异步处理 1.3、MQ的选择 1.3.1、Kafka 1.3.2、ActiveMQ 1.3.3、RocketMQ 1.3.4、RabbitMQ 2、RabbitMQ的介绍 2.1、RabbitMQ的概述 2.2、AMQP 2.3、JMS 2.4、RabbitMQ…

关系抽取:传统:UniRel: Unified Representation and Interaction for Joint Relational

针对传统下的三元组抽取提出的一种方法,在NYT和webNLG数据集上,再次刷新榜单。 本来对这个结果不是很确定,但作者公布了源码,we can reformulate it . 很少在看到这种文章了吧。 Core idea 换了一种解释思路。 从entity-entity的…

ARM汇编之乘法指令

ARM汇编之乘法指令前言 首先,请问大家几个小小问题,你清楚: 乘法指令有哪些种类呢?ARM乘法指令具体的使用场景又有哪些? 今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的…

精准诊断,精确治疗,智芯传感ZXPA侵入式压力传感器为心血管疾病患者带来福音

近日,据联合国《世界人口展望2022》报告显示,地球人口已正式步入“80亿时代”!人口数量增加,从一个侧面反映了人类文明的进步。此外,随着人类预期寿命增加,加上生育率下降,将加剧全球人口老龄化…

基于模型的聚类和R语言中的高斯混合模型

介绍 四种最常见的聚类方法模型是层次聚类,k均值聚类,基于模型的聚类和基于密度的聚类 . 最近我们被客户要求撰写关于聚类的研究报告,包括一些图形和统计输出。 可以基于两个主要目标评估良好的聚类算法: 高组内相似性低组间相…

小程序中的自定义组件以及组件通信、数据共享、插槽、behaviors

一、创建组件和使用自定义组件 1.创建组件 ①在项目的根目录中,鼠标右键,创建components -> 文件夹 ②在新建的components -> 文件夹上,鼠标右键,点击“新建Component ③键入组件的名称之后回车,会自动生成组件对应的4个…

卡尔曼滤波Kalman Filtering:介绍

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 控制理论(control theory)是工程学的分支之一,主要应对工程系统控制的问题。比如控制汽车发动机的功率输出,稳定电动机的转速,控制“反应速率”&#x…

企业数字化办公利器——华为云桌面Workspace

随着云办公生态的逐渐成熟,华为云桌面也成为了越来越多企业实现随时随地移动办公的选择。 华为云桌面Workspace是一款SAAS产品,是基于华为云云原生架构设计和构建的云桌面服务,可支持云桌面的快速创建、部署和集中运维管理,免除大…

2023年java代做题目参考整理

为方便毕业设计选题,特别整理以下几百题目供参考 班级风采网站的设计 工资绩效管理系统的开发 电子产品销售网站的设计与实现 酒店预订信息管理系统的设计 成绩管理系统 B2C的电子商务系统(J2EE) B2C购物网站设计 教学网站及网上考试系统的设计与实现 ERP采…

STM32学习之Keil5软件配置

前言:代码编写环境可以让编写者在代码编写上有一定的好处,从而得到高效的代码编写。本次笔者写的是一些市面上常用的嵌入式开发软件Keil5,在初始化使用软件界面需要进行配置的。主要分为五大部分(文本美化、代码编辑技巧、查找和替…

一篇图解Linux内存碎片整理

我们知道物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外)。申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的。随着系统运行时间变长后,将会出现以下情况: 要解…

树莓派板载蓝牙使用

1 设置树莓派板载蓝牙 1.1 相关环境安装、配置 sudo apt-get update sudo apt-get install pi-bluetooth bluez bluez-firmware blueman1.2 树莓派蓝牙操作 参考: https://blog.csdn.net/guzhong10/article/details/78574577 有时候会失败, 可以尝试…

[附源码]SSM计算机毕业设计学校缴费系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

文件包含总结

概念 是指将已有的代码以文件形式包含到某个指定的代码中,从而使用其中的代码或者数据,一般是为了方便直接调用所需文件,文件包含的存在使得开发变得更加灵活和方便。 文件包含常见函数 include() // 执行到include时才包含文件&#xff…

区间信息维护与查询【线段树 】 - 原理2 线段树中的“懒操作”

区间信息维护与查询【线段树 】 - 原理2 线段树中的“懒操作” 之前我们已经说了对线段树的点更新和区间查询,若要求对区间中的所有点都进行更新,该怎么办? 若对区间的每个点都进行更新,则时间复杂度较高,可以引入懒…

Cocos2d-x 3D渲染技术 (三)

包围盒算法 说白了就是给物体装进一个盒子里,该盒子可以装下物体。目的是为了进行碰撞检测。 种类: 球状碰撞体立方体碰撞体胶囊碰撞体Mesh碰撞体 实现原理是OBB包围盒。 经常使用的两种碰撞算法是OBB包围盒和AABB包围盒算法。 OBB包围盒算法 方向…

JavaScript -- 01. 基础语法介绍

文章目录基础语法1 Hello World2 JS的编写位置3 基本语法3.1 多行注释3.2 单行注释3.3 区分大小写3.4 空格和换行会被忽略3.5 以分号结尾3.6 字面量3.7 变量3.8 变量的内存结构3.9 常量3.10 标识符基础语法 JS的基本语法 1 Hello World js的三种输出方式 <!DOCTYPE html&g…

精彩回顾 | 云原生系统软件的产业应用

11月18日&#xff0c;2022年第五届中国金融科技产业大会暨第四届中新&#xff08;苏州&#xff09;数字金融应用博览会“基础软件与云原生系统软件”分论坛成功举办。该论坛由由中国计算机学会CTO CLUB&#xff08;苏州&#xff09;承办&#xff0c;江苏省金融科技云原生融合创…