AWS Bucket无法删除

时间:2019-06-04 17:07:32

标签: amazon-s3

AWS S3 Web控制台列出已删除的存储桶。选择存储桶并尝试清空或删除它会导致“空存储桶”或“删除存储桶”模式的“确认”按钮静默失败。

如果您点击存储桶并尝试上传文件,则会收到错误消息“找不到错误数据”。如果尝试创建文件夹,则会出现“错误,无法创建名称为的文件夹”。如果尝试更改“属性”,“权限”或“管理”,还会收到错误消息。

如果您尝试使用相同的名称创建存储桶(大概是覆盖旧存储桶),则会收到一条错误消息,指示已使用存储桶名称。

类似地,诸如s3-upload之类的库也无法删除或覆盖存储桶。

AWS(节点)SDK:

var aws = require('aws-sdk');

var s3 = new aws.S3();

s3.listBuckets({}, (error, data) => {
  console.log(error);
  console.log(data);
});

返回存储桶,即使它不存在。

{ 
  Buckets: [ 
   { Name: 'bucket.that.shouldnt.exist', CreationDate: 2017-02-20T01:51:19.000Z },
  ],
  Owner: { 
   DisplayName: '...',
   ID: '...' 
  }     
}

s3.deleteBucket({
  Bucket: 'bucket.that.shouldnt.exist'
}, (error, data) => {
  console.log(error);
  console.log(data);
});

返回

{ 
  NoSuchBucket: The specified bucket does not exist
  at Request.extractError (.../aws-sdk/lib/services/s3.js:585:35)
  at Request.callListeners (.../aws-sdk/lib/sequential_executor.js:106:20)
  at Request.emit (.../aws-sdk/lib/sequential_executor.js:78:10)
  at Request.emit (.../aws-sdk/lib/request.js:683:14)
  at Request.transition (.../aws-sdk/lib/request.js:22:10)
  at AcceptorStateMachine.runTo (.../aws-sdk/lib/state_machine.js:14:12)
  at .../aws-sdk/lib/state_machine.js:26:10
  at Request.<anonymous> (.../aws-sdk/lib/request.js:38:9)
  at Request.<anonymous> (.../aws-sdk/lib/request.js:685:12)
  at Request.callListeners (.../aws-sdk/lib/sequential_executor.js:116:18)
  message: 'The specified bucket does not exist',
  code: 'NoSuchBucket',
  region: null,
  time: 2019-06-04T16:56:35.537Z,
  requestId: '...',
  extendedRequestId: '...',
  cfId: undefined,
  statusCode: 404,
  retryable: false,
  retryDelay: 33.90621042754991 
}

2 个答案:

答案 0 :(得分:0)

由于某种原因,AWS createBucket API可以正常工作(尽管控制台无法运行):

var aws = require('aws-sdk');

var s3 = new aws.S3();

s3.createBucket({
  Bucket: 'bucket.that.shouldnt.exist'
}, (error, data) => {
  console.log(error);
  console.log(data);
});

然后,您应该能够在被覆盖的存储桶上正常执行操作。

答案 1 :(得分:0)

Amazon S3是一个大型的分布式系统。删除S3存储桶与删除硬盘驱动器上的本地文件夹完全不同。

启动存储桶删除后,存储桶名称在一段时间内不可用。您无法重新创建存储桶,重新删除存储桶,从存储桶获取对象或将对象放入存储桶。删除完成后,您可以创建存储桶并与之交互。

请注意,一般而言,如果您打算重复使用相同的存储桶名称,则通常最好只是清空存储桶,而不是删除并重新创建存储桶。另一个客户可能会在您的删除和重新创建尝试之间创建相同名称的存储桶,从而使您失去对存储桶名称的控制(当然,但是可能)。