如何解决将 aws-sdk-js v2 迁移到 v3错误尖锐:输入文件丢失
适用于 aws-sdk-js v2:
const Sharp = require('sharp');
const AWS = require('aws-sdk');
const S3 = new AWS.S3({ signatureversion: 'v4' });
const originalPhoto = (await S3.getobject({ Bucket: "myBucket",Key: "myKey" }).promise()).Body;
const originalPhotoDimensions = await Sharp(originalPhoto).Metadata();
aws-sdk-js v3 出错:我知道这是因为 originalPhoto
不是缓冲区。
const Sharp = require('sharp');
const { S3Client,GetobjectCommand } = require("@aws-sdk/client-s3");
const S3 = new S3Client({ region: "us-east-1" });
const originalPhoto = (await S3.send(new GetobjectCommand({ Bucket: "myBucket",Key: "myKey" }))).Body;
const originalPhotoDimensions = await Sharp(originalPhoto).Metadata(); // <--- Error
ERROR Unhandled Promise Rejection
{"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"Error: Input file is missing",
Sharp 版本: 0.28.1
解决方法
试试这个:
// See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/migrating-to-v3.html
// npm init
// npm install sharp @aws-sdk/client-s3
// node s3.js
const Sharp = require('sharp');
const { S3Client,GetBucketTaggingCommand,GetObjectCommand } = require("@aws-sdk/client-s3");
const { fromIni } = require("@aws-sdk/credential-provider-ini");
const s3 = new S3Client({
credentials: fromIni({
profile: 'default'
})
});
bucket = 'nameOfBucket';
key = 'imageName';
const run = async () => {
try {
const photo = await s3.send(new GetObjectCommand({Bucket: bucket,Key: key})).Body;
const originalPhotoDimensions = await Sharp(photo).metadata();
} catch (err) {
console.log("Error",err);
}
};
run();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。