开源项目 serverless-image-resizing
使用教程
serverless-image-resizingARCHIVED项目地址:https://gitcode.com/gh_mirrors/se/serverless-image-resizing
项目目录结构及介绍
serverless-image-resizing/
├── README.md
├── buildspec.yml
├── package.json
├── serverless.yml
├── src
│ ├── index.js
│ ├── resize.js
│ └── s3.js
└── tests
└── unit
└── test_handler.js
README.md
: 项目说明文档。buildspec.yml
: AWS CodeBuild 配置文件。package.json
: Node.js 项目依赖管理文件。serverless.yml
: Serverless Framework 配置文件。src/
: 源代码目录。index.js
: 项目入口文件。resize.js
: 图片处理逻辑文件。s3.js
: S3 存储操作文件。
tests/
: 测试代码目录。unit/
: 单元测试目录。test_handler.js
: 单元测试文件。
项目的启动文件介绍
src/index.js
index.js
是项目的入口文件,负责处理 Lambda 函数的请求并调用图片处理逻辑。主要功能如下:
- 导入必要的模块。
- 定义 Lambda 处理函数
handler
。 - 处理 S3 事件,调用
resize.js
中的图片处理逻辑。
const AWS = require('aws-sdk');
const sharp = require('sharp');
const s3 = require('./s3');
exports.handler = async (event, context, callback) => {
const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const params = {
Bucket: bucket,
Key: key,
};
try {
const image = await s3.getObject(params).promise();
const resizedImage = await sharp(image.Body).resize(200, 200).toBuffer();
const resizedParams = {
Bucket: bucket,
Key: `resized-${key}`,
Body: resizedImage,
ContentType: 'image',
};
await s3.putObject(resizedParams).promise();
callback(null, `Successfully resized ${bucket}/${key}`);
} catch (error) {
callback(error);
}
};
项目的配置文件介绍
serverless.yml
serverless.yml
是 Serverless Framework 的配置文件,定义了项目的部署信息、资源配置和事件触发器。主要内容如下:
service
: 服务名称。provider
: 云服务提供商配置。functions
: 定义 Lambda 函数及其触发器。resources
: 定义 AWS 资源,如 S3 存储桶。
service: serverless-image-resizing
provider:
name: aws
runtime: nodejs12.x
region: us-east-1
functions:
resize:
handler: src/index.js
events:
- s3:
bucket: my-bucket
event: s3:ObjectCreated:*
rules:
- prefix: uploads/
- suffix: .jpg
resources:
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-bucket
通过以上配置,项目可以部署到 AWS 上,并在指定的 S3 存储桶中上传图片时触发 Lambda 函数进行图片缩放处理。
serverless-image-resizingARCHIVED项目地址:https://gitcode.com/gh_mirrors/se/serverless-image-resizing