通过NodeJS SDK(AWS-SDK-js)拒绝访问AWS SQS(SUDDENLY!!)



首先,我知道SO也有类似的问题我想让你知道我已经发现问题出在哪里了。只是想与其他潜在客户分享解决方案为了解决同样的问题。。。不,它不是复制品话题

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

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

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

我花了很多时间寻找解决方案。。。StackOverflow的其他程序员(例如这里的程序员(的典型问题非常明显:错误的IAM策略或错误的凭据。但几天前一切都对我有效,现在不行了?!这让我疯了。

扰流板警报好吧,最后,问题实际上是关于错误的凭据。但是,当我们这边什么都没有改变的时候,这怎么可能呢,对吧

我在AWS开发者论坛上发现了类似的问题——我开始玩IAM政策,但没有改变。


好的,发生了什么请参阅下面的答案

好的,发生了什么?

2018年10月17日左右,您可以在aws-sdk-js提交历史中找到"Feature/load shared config"。这是一个v2.337.0+版本。我没有读过代码,但从那时起(和版本(,获得AWS凭据的优先级似乎发生了变化。在此之前,环境变量的优先级似乎比配置文件更高。但现在不行了!这是什么意思?

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

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

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

因此,我的解决方案是从配置文件中删除(重命名(默认配置文件。由于不再有默认配置文件,SDK再次开始使用我的环境变量

SDK的荣耀!

最新更新