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

sdg*_*sdh 4 javascript aws-sdk

如何使用aws-sdk测试AWS S3上是否存在存储桶?


该问题用于测试存储桶中是否存在对象如何确定对象是否存在AWS S3 Node.JS sdk

这个问题是针对Python的:如何检查AWS S3存储桶是否存在?

sdg*_*sdh 9

您可以使用以下代码:

// 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;
  }
};
Run Code Online (Sandbox Code Playgroud)

重要的是要认识到错误statusCode将是404如果存储桶不存在。


小智 9

看起来从 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;
    }
}
Run Code Online (Sandbox Code Playgroud)