【问题标题】:AWS Lambda + DynamoDB Invalid security token in requestAWS Lambda + DynamoDB 请求中的安全令牌无效
【发布时间】:2021-04-23 18:09:14
【问题描述】:

我有一个与 DynamoDB 连接的 Lambda 函数。如果我构建和部署此功能并在我的 AWS 控制台中运行它,它工作得很好,但如果我尝试从我的 IDE (Intellij) 执行它,它就不起作用。我收到以下错误消息:

The security token included in the request is invalid (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: UnrecognizedClientException; 

我尝试在这里查看其他问题,但似乎没有任何锻炼。我有两个用户,每个用户都有一个组。其中一个具有 AdministratorAcces,另一个具有 DynamoDBFullAccess 和 AWSLambda_FullAccess 权限。他们都不能在本地执行该功能。尝试在 cmd 中使用 aws configure 重新配置我的凭据。

我还尝试创建新的安全凭据。问题不在于函数,因为如果我删除 DynamoDB 连接代码并在本地运行和部署该函数或将其部署在我的 AWS 控制台中成功执行。无论如何,我将在我的连接代码下方发布:

    AmazonDynamoDB client = AmazonDynamoDBClientBuilder.defaultClient();
    DynamoDBMapper mapper = new DynamoDBMapper(client);

    MyCustomData data = new MyCustomData("test","12313","test2");
    mapper.save(data);

编辑:

我一直在调试发生确切问题的代码,并且似乎在 AmazonHttpCLient.java 类中有一个检查凭据的部分。关键是AWSCredentials对象中有三个属性:

我在 ~/.aws/credentials 中的凭据没有 sessionToken 参数,我在任何时候都设置了它。我的一个朋友也调试了同一个项目,说他的调试中没有属性sessionToken。我尝试重新安装 AWS CLI、SAM 和 Intellij,删除凭证文件并检查我的变量环境中是否没有凭证,但问题仍然存在。

【问题讨论】:

    标签: java aws-lambda amazon-dynamodb


    【解决方案1】:

    这个错误很可能是由于用于与 AWS 账户建立连接的凭证/aws 配置文件造成的。

    要使用 IntelliJ IDEA 解决此问题,我建议您将 AWS Toolkit 安装到您的 IntelliJ IDEA 中。此外,使用 AWS Toolkit 找出使用哪个 aws 配置文件来满足您的用例。

    否则,请参阅现有的thread 以获取更多其他选项

    【讨论】:

    • 谢谢,阿米特。实际上,我已经在 Intellij 上使用 AWS Toolkit。我之前也阅读过该主题并检查了解决方案,但似乎没有任何效果。在环境变量中设置了凭据,但即使在删除之后,该函数似乎也无法访问凭据文件。对我来说,唯一可行的是将凭据放入代码中,但这是一种不好的做法。
    【解决方案2】:

    我设法通过降级我的 SAM CLI 版本解决了这个问题。它在 1.15.0 中,我的朋友在 1.6.2 中。所以我下载了那个特定的版本并像一个魅力一样工作。

    我不知道为什么会发生这种情况,但我希望在以后的版本中解决这个问题。

    希望对遇到此问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-12
      • 2018-04-09
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 2021-09-07
      • 1970-01-01
      相关资源
      最近更新 更多