【问题标题】:The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-central-1'授权标头格式错误;区域“us-east-1”是错误的;期待“eu-central-1”
【发布时间】:2018-05-19 23:50:04
【问题描述】:

使用带有以下配置文件的 Node.JS

{ "accessKeyId" :"XXX", "secretAccessKey" :"XXXX", "区域": "eu-central-1", “签名版本”:“v4” }

我仍然收到此错误消息,就好像 aws sdk 尝试访问 us-east-1 区域一样。

有什么想法吗?

【问题讨论】:

  • 可能会显示更多代码,用于上下文?
  • @Michael-sqlbot ,这里是node.js的相关代码: s3bucketws.createBucket(function() { var data = {Bucket:S3_BASE_WS,Key: req.query.file, Body: body, ACL: 'public-read',ContentType: fileType,CacheControl:'public, max-age=2592000', Metadata: {timestamp:file_timestamp+''} }; s3bucketws.putObject(data, function(err) { if (err) { res.json({statusOK: false, description: err.message}); } else { }
  • 这里是声明:var s3bucketws = new AWS.S3({endpoint: 's3-eu-central-1.amazonaws.com' ,signatureVersion: 'v4', region: 'eu- central-1'});
  • 尝试删除endpoint 声明。
  • 不,删除端点声明不起作用。还有 AWS.config.update({region: 'eu-central-1'});没有成功,仍然得到:授权标头格式错误;区域“us-east-1”是错误的;期待 'eu-central-1 错误

标签: node.js amazon-web-services amazon-s3


【解决方案1】:

根据 AWS 的说法,这可能会发生三种情况。

  1. 当您创建一个名称已在您的 AWS 账户或任何其他 AWS 账户中用作存储桶名称的存储桶时 (请注意,S3 存储桶名称是全球唯一的)。

  2. 当您在 S3 存储桶上执行操作并设置了 Region 变量时(在配置 SDK 或使用 环境变量等)到一个区域以外的区域 bucket 确实存在。

  3. 您最近删除了特定区域(例如 us-east-1)中的一个 S3 存储桶,并且您正在尝试创建一个存储桶(同名 作为被删除的存储桶)在另一个区域之后 删除存储桶。

对于第 3 点,最多放弃两天,然后重试。

如果某个区域中存在的存储桶说 (us-east-1) 是 删除后,你可以随时在另一个桶中创建一个同名的桶 地区。 S3 中没有这样的限制,说明你不能做 这。但是,只有在您允许某些 删除存储桶后的时间。这是因为 S3 存储桶遵循 DELETE操作情况下的最终一致性模型。

意思是你删除一个bucket后,需要几个小时, 通常最多需要 24 到 48 小时才能进行 DELETE 操作 在我们所有的数据中心复制。一旦这个变化 传播您可以继续并在所需的位置再次创建存储桶 地区。

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2018-03-26
    • 2017-06-07
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2021-08-19
    • 2019-03-21
    相关资源
    最近更新 更多