我正在尝试使用将一个图像文件上传到S3。因此,它是一个POST方法,在这个方法中,主体使用form-data获取图像文件。在TypeScript的帮助下,我用lambda-multipart-parser编写了lambda。它在本地工作得很好,但是当我在AWS中部署它时,文件大小发生了一些变化,看起来原始文件并没有真正正确地上传。
我的lambda代码是
import * as parser from 'lambda-multipart-parser'
import { s3Upload } from '../helper/common'
export const test = async (event) => {
console.log('starting------')
console.log('EVENT', event)
const result = await parser.parse(event)
console.log(result.files)
const file = result.files[0]
console.log('FILE', file)
const s3Params = {
Bucket: process.env.AWS_BUCKET,
Key: `${Date.now().toString()}-${file.filename}`,
Body: file.content,
ContentType: 'image/png',
ACL: 'public-read',
}
console.log('S3 PARAMS', s3Params)
const s3Content = await s3Upload(s3Params)
console.log('S3 CONTENT', s3Content)
}我刚从helper打电话给helper
import { S3 } from 'aws-sdk'
export const s3Upload = async function (params) {
let s3: S3
if (process.env.IS_OFFLINE) {
s3 = new S3({
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_KEY,
})
}
return new Promise((resolve) => {
s3.upload(params, (err, data) => {
if (err) {
console.error(err)
resolve(err)
} else {
resolve(data)
}
})
})
}这看起来像是节点包本身的问题,但我不确定!我能实现这个目标的其他工作方法是使用用类型记录编写的API网关将一个图像文件上传到S3?
发布于 2022-07-14 11:27:16
你能提供更多关于你的问题的信息吗?
我把你的代码用于本地测试。我发现您需要在if s3之后再次实例化is_offline。
import { S3 } from 'aws-sdk'
export const s3Upload = async function (params) {
let s3: S3
if (process.env.IS_OFFLINE) {
s3 = new S3({
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_KEY,
})
}
// Here is the change
s3 = new S3({
region: 'us-east-1', // for example
});
return new Promise((resolve) => {
s3.upload(params, (err, data) => {
if (err) {
console.error(err)
resolve(err)
} else {
resolve(data)
}
})
})
}至少这对我有用。还在lambda内部,也用于本地的无服务器离线和API网关,所有这些都带有类型记录。
希望这能有所帮助!
致以问候!
发布于 2022-01-25 19:21:03
这可能是因为模块没有包含在lambda中,尝试执行npm init并将包安装在lambda或其他选项所在的文件夹中,更可取的做法是创建一个层并将包放在那里。
在这里,文档:https://docs.aws.amazon.com/cdk/api/v1/docs/aws-lambda-readme.html#layers
https://stackoverflow.com/questions/70853893
复制相似问题