【问题标题】:Access denied to AWS SQS via NodeJS SDK (aws-sdk-js) (SUDDENLY!!)通过 NodeJS 开发工具包 (aws-sdk-js) 拒绝访问 AWS SQS(突然!!)
【发布时间】:2018-10-26 08:34:46
【问题描述】:

首先,我知道 SO 也有类似的问题。还有我 想让你知道我已经发现了问题所在。 只想与可能正在寻找的其他人分享解决方案 为了解决同样的问题......不,它不是重复的 主题。

几天前,我的 NodeJS 脚本突然停止使用 AWS SQS!

Access to the resource https://sqs.us-west-2.amazonaws.com/ is denied.

但有趣的是,当我使用适当的配置文件通过 aws-cli 测试 SQS 时,它起作用了!

我花了很多时间搜索并试图找到解决方案... StackOverflow 上其他程序员的典型问题(例如here)非常明显:错误的 IAM 策略或错误的凭据。但是几天前一切都对我有用,而不是现在?!它让我发疯。

剧透警告! 嗯,最后,问题实际上与错误的凭据有关。但是,如果我们这边什么都没有改变,这怎么可能呢,对吧?

我在 AWS Developer forum 发现了类似的问题 - 我开始使用 IAM 策略,但没有任何变化。


好的,发生了什么? 在下面查看我的答案

【问题讨论】:

    标签: node.js access-denied aws-sdk-js


    【解决方案1】:

    好的,发生了什么?

    2018 年 10 月 17 日左右,您可以在 aws-sdk-js 提交历史记录中找到“功能/加载共享配置”。它是 v2.337.0+ 版本。我没有阅读代码,但似乎从那时起(和版本),获取 AWS 凭证的优先级已经改变。在此之前,环境变量似乎比配置文件具有更高的优先级。但现在不是了!什么意思?

    好吧,就我而言,我在.aws/credentials 中有多个配置文件,而我的默认配置文件不是具有完全访问权限的配置文件。如果您的默认配置文件具有 AdministratorAccess 策略,则此问题与您无关!

    我将配置文件中的配置文件用于 aws-cli 而不是脚本。在我的脚本中,我使用环境变量 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。

    您现在看到问题了吗? 在更改SDK之前,它是有效的,因为SDK首先选择了环境变量。但由于 SDK 中的一些逻辑发生了变化,它从配置文件中选择了默认配置文件。正如我之前写的,我的默认配置文件无法访问 SQS!

    所以,我的解决方案是从配置文件中删除(重命名)默认配置文件。而且因为没有默认配置文件了,SDK 又开始使用我的环境变量了。

    SDK 的荣耀!

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多