【发布时间】: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