开源项目 `serverless-image-resizing` 使用教程

开源项目 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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌宣广

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值