快递服务器收到AWS AccessDeniedException,但AWS CLI有效

时间:2018-12-31 21:37:15

标签: node.js amazon-web-services express amazon-dynamodb aws-cli

我正在运行一个Express节点服务器,该服务器调用AWS Dynamodb / KMS 我已经设置了〜/ .aws / config和〜/ .aws / credentials,并且我很确定Express会选择这些配置。

现在的问题是,当我运行快递服务器时,我为我的用户获取了AccessDeniedException异常(AccessDeniedException:用户:arn:xxx无权执行)。但是,当我使用AWS cli时,我可以毫无问题地访问dynamodb / KMS。

我可能错了,但在我看来cli和express都使用同一帐户访问AWS。一个人怎么可能失败?还有什么方法可以验证我的express和cli是否使用相同的aws帐户?

我用来访问发电机的示例代码是:

const DynamoDB = require("aws-sdk/clients/dynamodb");
const docClient = new DynamoDB.DocumentClient({region: "us-east-1"});

1 个答案:

答案 0 :(得分:0)

How is it possible that one is failing?

AccessDeniedException 为此,您可以尝试以下操作:

  1. 因此 AWS 开发工具包优先获取水芹。检查您的应用程序试图从何处获取信用。最好的方法是将 AWS Creds 定义为环境变量,以便应用程序可以使用它们

  2. 如果使用的用户在附加的策略中没有完整的权限。

  3. 使用 AWS CLI 和 AWS 开发工具包验证您尝试执行的操作。尝试使用相同的凭据执行相同的操作。

回答您的问题 is there any way to verify that my express and cli are using the same aws account?

  • 基本上它应该使用您的 .aws/config 文件中提到的配置文件。但是为了确认,您可以在调用 sdk 时在代码中使用 --profile