Amazon web services aws S3 bucket:从浏览器上载POST文件时出现内部服务器错误500
我收到Amazon web services aws S3 bucket:从浏览器上载POST文件时出现内部服务器错误500,amazon-web-services,amazon-s3,aws-lambda,aws-cdk,Amazon Web Services,Amazon S3,Aws Lambda,Aws Cdk,我收到内部错误我们遇到内部错误。请重试。将POST表单数据上载到s3存储桶时 S3配置: const attachmentBucket = new Bucket(this, 'caS3Bucket', { bucketName: environmentName + '.caattachments', cors: [{ allowedMethods: [HttpMethods.GET, HttpMethods.POST], allowedOrigins: ['*'],
内部错误
我们遇到内部错误。请重试。
将POST表单数据上载到s3存储桶时
S3配置:
const attachmentBucket = new Bucket(this, 'caS3Bucket', {
bucketName: environmentName + '.caattachments',
cors: [{
allowedMethods: [HttpMethods.GET, HttpMethods.POST],
allowedOrigins: ['*'],
allowedHeaders: ['*'],
maxAge: 3000
} as CorsRule]
} as BucketProps);
通过lambda预签名上载url:
const params = {
Bucket: process.env.S3_BUCKET!.split(':')[5],
Fields: {
key: payload.path,
acl: 'public-read'
},
Expires: 3600
};
const postData = await new Promise(resolve => {
s3.createPresignedPost(params, (err, data) => {
resolve(data);
});
}) as AWS.S3.PresignedPost;
我将postData.fields中的所有参数与文件一起附加到输入表单中。是否有任何方法对此进行调试?问题是表单缺少“策略”字段。我希望aws的错误更具描述性。最终工作表单字段如下所示:
const formData: FormData = new FormData();
formData.append('key', uploadData.fields.key);
formData.append('acl', uploadData.fields.acl);
formData.append('bucket', uploadData.fields.bucket);
formData.append('X-Amz-Algorithm', uploadData.fields.algorithm);
formData.append('X-Amz-Credential', uploadData.fields.credential);
formData.append('X-Amz-Date', uploadData.fields.date);
formData.append('X-Amz-Security-Token', uploadData.fields.token);
formData.append('Policy', uploadData.fields.policy);
formData.append('X-Amz-Signature', uploadData.fields.signature);
formData.append('file', file, file.name);