如何测试 AWS S3 上是否存在存储桶

新手上路,请多包涵
阅读 800
2 个回答

您可以使用以下代码:

 // import or require aws-sdk as AWS
// const AWS = require('aws-sdk');

const checkBucketExists = async bucket => {
  const s3 = new AWS.S3();
  const options = {
    Bucket: bucket,
  };
  try {
    await s3.headBucket(options).promise();
    return true;
  } catch (error) {
    if (error.statusCode === 404) {
      return false;
    }
    throw error;
  }
};

重要的是要意识到如果桶不存在,错误 statusCode 将是 404

原文由 sdgfsdh 发布,翻译遵循 CC BY-SA 4.0 许可协议

看起来在从 aws-sdk v2 更改为 v3 之后,您无法使用 headBucket() 进行 操作。

对于那些使用 v3 的人,你可以试一试:

 const { S3Client, HeadBucketCommand } = require('@aws-sdk/client-s3');

const checkBucketExists = async (bucket) => {
    const client = new S3Client();
    const options = {
        Bucket: bucket,
    };

    try {
        await client.send(new HeadBucketCommand(options));
        return true;
    } catch (error) {
        if (error["$metadata"].httpStatusCode === 404) {
            return false;
        }
        throw error;
    }
}

原文由 Aaron Kauffman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题