
angelalign/aws-lambda-sharp该Docker镜像为AWS Lambda提供基于Node.js的基础运行环境,并预先集成了sharp高性能图像处理库。sharp库支持多种图片操作(如裁剪、缩放、格式转换、压缩等),本镜像旨在简化图像处理相关AWS Lambda函数的开发与部署流程,避免手动配置sharp的系统依赖(如libvips),可直接基于镜像构建Lambda函数包并部署。
通过Docker Hub或AWS ECR拉取镜像(具体镜像仓库地址需根据实际发布源调整):
bashdocker pull [镜像仓库地址]/aws-lambda-nodejs-sharp:latest
创建index.js作为Lambda处理程序,实现图片处理逻辑:
javascript// index.js const sharp = require('sharp'); const { S3Client, GetObjectCommand, PutObjectCommand } = require('@aws-sdk/client-s3'); const s3 = new S3Client(); /** * Lambda处理函数:从S3获取图片,压缩后上传至目标桶 * @param {Object} event - Lambda触发事件(示例:包含源S3桶、文件名等参数) */ exports.handler = async (event) => { try { // 从S3获取原始图片 const getParams = { Bucket: event.sourceBucket, Key: event.sourceKey }; const { Body: rawImage } = await s3.send(new GetObjectCommand(getParams)); // 使用sharp压缩图片(示例:调整尺寸并转换为WebP格式) const processedImage = await sharp(rawImage) .resize(1200, 800, { fit: 'inside', withoutEnlargement: true }) // 限制最大尺寸,不放大图片 .webp({ quality: 80 }) // 转换为WebP格式,质量80% .toBuffer(); // 上传处理后的图片到目标S3桶 const putParams = { Bucket: event.targetBucket, Key: `processed/${event.sourceKey.replace(/\.\w+$/, '.webp')}`, // 重命名为WebP格式 Body: processedImage, ContentType: 'image/webp' }; await s3.send(new PutObjectCommand(putParams)); return { status: 'success', processedKey: putParams.Key, size: processedImage.length }; } catch (error) { console.error('Image processing failed:', error); throw error; } };
通过Dockerfile构建包含函数代码的Lambda镜像:
dockerfile# 基于本镜像作为基础镜像 FROM [镜像仓库地址]/aws-lambda-nodejs-sharp:latest # 将Lambda函数代码复制到Lambda任务根目录 COPY index.js ${LAMBDA_TASK_ROOT}/ # 安装额外依赖(如AWS SDK for S3) RUN npm install @aws-sdk/client-s3 # 设置Lambda入口处理程序(格式:[文件名].[函数名]) CMD ["index.handler"]
bash# 构建镜像(替换镜像名称和标签) docker build -t my-lambda-image:v1 . # 标记镜像为ECR仓库格式(需先创建ECR仓库) docker tag my-lambda-image:v1 [AWS_ACCOUNT_ID].dkr.ecr.[REGION].amazonaws.com/my-lambda-image:v1 # 推送镜像到ECR docker push [AWS_ACCOUNT_ID].dkr.ecr.[REGION].amazonaws.com/my-lambda-image:v1
| 参数名 | 描述 | 默认值 |
|---|---|---|
| NODE_ENV | Node.js运行环境标识 | production |
| SHARP_VERSION | 预装sharp库版本 | 取决于镜像发布版本 |
| NODE_VERSION | 基础Node.js版本 | 取决于镜像发布版本 |
| LAMBDA_TASK_ROOT | Lambda函数代码根目录 | /var/task |
npm install添加,并确保依赖与Node.js版本兼容。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务