簡體   English   中英

用於 nodejs 的 AWS SDK v3,如何獲取 s3 存儲桶的標簽?

[英]AWS SDK v3 for nodejs, how to get tags of an s3 bucket?

我正在嘗試使用適用於 Nodejs 的 AWS SDK v3 提取 s3 存儲桶的標簽。 這是我的代碼,基於如何列出所有存儲桶的示例:

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 那我在這里錯過了什么?

似乎您的配置有問題。 不過我可能是錯的。 我的配置如下所示:

 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構造函數。

這意味着您的存儲桶名稱未設置。 核實。

錯誤錯誤:沒有為輸入提供值 HTTP label:桶。

我不知道它是否有幫助,但我收到了該消息,問題如下:

我忘記將“bucket”名稱放入 .env 文件中,所以我發送了未定義“bucketname”的參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM