AWS SDK v3 for nodejs,如何获取s3 bucket的标签?

fnatzsnv  于 2023-01-04  发布在  Node.js
关注(0)|答案(3)|浏览(197)

我正在尝试使用AWS SDK v3 for Nodejs提取s3 bucket的标记。这是我的代码,基于如何列出所有bucket的示例:

const { S3Client, GetBucketTaggingCommand } = require("@aws-sdk/client-s3");
const { fromIni } = require("@aws-sdk/credential-provider-ini");

const s3 = new S3Client({
  credentials: fromIni({
    profile: 'example-s3'
  })
});

const run = async () => {
  try {
    const data = await s3.send(new GetBucketTaggingCommand({
      Bucket: "example-bucket"
    }));
    console.log("Success", data);
  } catch (err) {
    console.log("Error", err);
  }
};

run();

如果我运行这个,我会得到

Error Error: No value provided for input HTTP label: Bucket.

我已经通读了GetBucketTaggingCommand的文档。它需要一个类型为GetBucketTaggingCommandInput的输入。这是一个json object,它带有一个必需的属性Bucket,我已经提供了这个属性。那么我在这里遗漏了什么呢?

afdcj2ne

afdcj2ne1#

看起来你的配置有问题。我可能是错的。我的配置看起来像这样:

const s3Client = new S3Client({
      region,
      credentials: {
        accessKeyId,
        secretAccessKey
      }
    });

但是,当我为GetObjectCommand应用错误的命令输入时,出现了此错误:

    • 错误:**
s3Client.send(new GetObjectCommand({
    client: s3Client,
    params: {
      Bucket: bucketName,
      Key: key
    },
  }));
    • 右:**
s3Client.send(new GetObjectCommand({
    Bucket: bucketName,
    Key: key
  }));

但我对您的情况的最佳猜测是,问题在于如何创建S3Client构造函数。

whhtz7ly

whhtz7ly2#

错误错误:没有为输入HTTP标签提供值:水桶。
我不知道这是否有帮助,但我收到了这条消息,问题如下:
我忘了将"bucket"名称放入. env文件,所以我发送的参数中未定义"bucketname"

rta7y2nd

rta7y2nd3#

这意味着您的存储桶名称未设置。请检查。

相关问题