aws-sdk-js - 将 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",
夏普版本: 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();
推荐阅读
- sql - 错误:“WITH”第 2 行或附近的语法错误: WITH RECURSIVE cte AS
- python - 将 Pandas DataFrame 对象拆分为 2 个 JSON 对象
- html - 如何获取溢出:滚动到滚动窗口底部显示
- html - 我怎样才能居中
代替
- git - 如何更改vscode推送代码到主分支到主分支?
- c# - 在具有多个数组列表<>的 ASP.Net Core 应用程序上显示 SQL 数据
- r - 使用 for next 循环在大矩阵 R 中随机引入空白
- python - Python:被忽略后一起重新显示错误
- javascript - Svg Animate 是否仅在加载 DOM 后启动?
- fortify - 如何在 CI/CD 流程中添加 Fortify