![](/img/trans.png)
[英]dynamodb node js --- UnrecognizedClientException: The security token included in the request is invalid
[英]DynamoDB The security token included in the request is invalid UnrecognizedClientException
我有 ~/.aws/credentials 和配置文件,我的代码如下
clientConfiguration.setProxyHost("MYPROXY");
clientConfiguration.setProxyPort(port);
clientConfiguration.setProxyUsername("username");
clientConfiguration.setProxyPassword("pw");
clientConfiguration.setPreemptiveBasicProxyAuth(false);
AmazonDynamoDBClient client = new AmazonDynamoDBClient(new ProfileCredentialsProvider("MY_PROFILE"),clientConfiguration);
//client.withRegion(Regions.US_EAST_1);
DynamoDBMapper mapper = new DynamoDBMapper(client);
// Get a book - Id=101
GetBook(mapper, 101);
我每次都遇到异常。我可以在 ~/.aws/credentials 的凭证文件中看到会话令牌
Error running the DynamoDBMapperQueryScanExample: com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The security token included in the request is invalid. (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: UnrecognizedClientException; Request ID: S0NTUAHKE57VC68FM3CVBOFAKFVV4KQNSO5AEMVJF66Q9ASUAAJG)
com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The security token included in the request is invalid. (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: UnrecognizedClientException; Request ID: S0NTUAHKE57VC68FM3CVBOFAKFVV4KQNSO5AEMVJF66Q9ASUAAJG)
AWS SDK 1.11.24 java 凭证文件
[TES1_AWS_STSdigital_Dev_Developer]
aws_access_key_id = XXXXX
aws_secret_access_key = AAAAA
aws_security_token = BBBBBBBB
token_expiration = 2016-08-08T16:34:48Z
[TEST2_AWS_TEST_Dev_ReadOnly]
aws_access_key_id = MMMMMM
aws_secret_access_key = NNNNNN
aws_security_token = OOOOOOO
token_expiration = 2016-08-08T16:34:48Z
[TEST3_AWS_STSdigital_Prod_ProdSupport]
aws_access_key_id = KKKKKKK
aws_secret_access_key = LLLLLLLLL
aws_security_token =FFFFFFFF
token_expiration = 2016-08-08T16:34:48Z
[TEST4_AWS_STSdigital_Prod_Monitoring]
aws_access_key_id = WWWWWW
aws_secret_access_key = SSSSSSSS
aws_security_token = VVVVVVVVV
token_expiration = 2016-08-08T16:34:48Z
~/.aws/config 中的配置文件
[DEFAULT]
scope = urn:amazon:webservices
[saml_provider]
url = https://myprivatesssaccess
default_region = us-east-1
[profile TEST1_AWS_STSdigital_Dev_Developer]
saml_role = arn:aws:iam::44444444:role/TEST1_AWS_STSdigital_Dev_Developer
region = us-east-1
[profile TEST2_AWS_TEST_Dev_ReadOnly]
saml_role = arn:aws:iam::3333333:role/TEST2_AWS_TEST_Dev_ReadOnly
region = us-east-1
[profile TEST3_STSdigital_Prod_ProdSupport]
saml_role = arn:aws:iam::222222:role/TEST3_AWS_STSdigital_Prod_ProdSupport
region = us-east-1
[profile TEST4_AWS_STSdigital_Prod_Monitoring]
saml_role = arn:aws:iam::1111111:role/TEST4_AWS_STSdigital_Prod_Monitoring
region = us-east-1
从简单的事情开始。 你检查过文件的权限吗? 至少从 Linux 开始,他们需要 600 或用户读/写、组和世界无访问权限。
您是否检查过 AWS 端以验证这些凭证是否与您尝试使用的账户相关联?
您可以运行一个使用凭据的简单命令吗? 来自 Amazon 的 CLI aws
命令是一个完美的起点。
aws ec2 help
很好的第一次检查。 然后尝试访问一些普遍可用的信息,例如现货 EC2 实例价格历史记录:
aws ec2 describe-spot-price-history --prod "Linux/UNIX" --start-time 2016-08-15
应该给你数千行输出。 然后尝试访问您自己的一些帐户信息:
aws ec2 describe-instances
此时,您知道一切都在 CLI 中运行。 下一步是非常 Java 连接,如果你从同一台机器上运行它,它现在应该可以工作,并且它与 ~/.aws/ 所在的主目录相同。
我每天都使用 Java 访问 DynamoDB。 一旦你清除了一些障碍,它就会很好地工作。
当我将区域设置为 RegionEndpoint.APEast1 而不是 RegionEndpoint.USEast1 时收到此错误。 我的错误,我接受了我在智能感知中看到的第一个“East1”字符串。
我正在使用 AWS-Fed 通过终端的联合角色启用对 AWS 的临时访问,而不是通过 aws configure 命令访问。 我在使用 boto3 与 DynamoDB 交互时遇到了同样的错误,并且能够通过在终端中将 AWS Profile 设置为 saml 来解决它,如下所示
export AWS_PROFILE=saml
其他情况可能是如果您的会话已过期,请再次尝试aws configure
试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.