3

我正面临这种奇怪的情况。我通过运行 assume-role-with-saml 命令生成我的 AWS AccessKeyId、SecretAccessKey 和 SessionToken。将这些值复制到 .aws\credentials 文件后,我尝试运行命令“aws s3 ls”并可以看到所有 S3 存储桶。同样,我可以运行任何 AWS 命令​​来查看对象,并且运行良好。但是,当我编写 .Net Core 应用程序来列出对象时,它在我的计算机上不起作用。在其他同事的计算机上可以找到相同的 .Net 应用程序。我们都可以通过相同的角色访问 AWS。IAM 控制台中没有用户。这是示例代码,但我不确定代码有没有问题,因为它在其他用户的计算机上运行良好。

var _ssmClient = new AmazonSimpleSystemsManagementClient();
                var r = _ssmClient.GetParameterAsync(new Amazon.SimpleSystemsManagement.Model.GetParameterRequest
                {
                    Name = "/KEY1/KEY2",
                    WithDecryption = true
                }).ConfigureAwait(false).GetAwaiter().GetResult();

知道为什么通过 CLI 运行命令有效而 API 调用无效吗?他们不是都在看同一个 %USERPROFILE%.aws\credentials 文件吗?

4

1 回答 1

3

我找到了。在这里发帖,因为它对有同样问题的人很有用。转到此文件夹:%USERPROFILE%\AppData\Local\AWSToolkit
备份所有文件和文件夹并从上述位置删除所有文件。

此解决方案仅适用于您可以运行“aws s3 ls”之类的命令并成功获得结果,但在从 .Net API 库运行相同命令时出现错误“提供的令牌已过期”。

于 2021-03-18T14:58:40.897 回答