aws-sdk - AWS .NET SDK 何时加载凭证文件?它是在启动时还是在初始化客户端或......?
问题描述
正如我的标题所述,我们正在使用 AWS .NET SDK 并在我们的 web.config 上配置了一个指向凭证文件的配置文件(请参阅:https ://docs.aws.amazon.com/sdk-for-net/v2 /developer-guide/net-dg-config-creds.html使用凭证文件)在磁盘上(所以在源代码之外)。这似乎工作正常,但我们每 x 个周期轮换这些键,因此我们需要更改文件中的键。我的问题是 de AWS .NET SDK 是否注意到文件已更改并自动加载新凭证,或者它何时实际加载?换句话说,如果我们更改此文件中的凭据,我们是否需要执行其他步骤才能让应用程序实际使用它们?
我现在尝试的是在本地启动应用程序,将凭据更改为错误的凭据,并且呼叫仍然可以顺利进行。接下来,我停止了我的应用程序并使用具有错误凭据的同一文件进行了重建。这样做之后,应用程序仍然能够进行正确的调用,所以我想知道它是如何工作的,就好像它依赖于确实有效的凭据一样。或者也许我只是没有测试正确。
我们正在使用 .net framework 4.6.2 应用程序,使用 aws sdk 3.3 版
另外我忘了提到的是,对于每个请求,我们都会像这样初始化客户端:
using (AmazonCognitoIdentityProviderClient client = new AmazonCognitoIdentityProviderClient(regionEndpoint))
解决方案
简短的回答是创建这样的客户端将导致在创建第一个客户端时从凭据文件中读取凭据。
更长的答案是当您在没有凭据的情况下创建时,客户端使用FallbackCredentialsFactory类通过凭据文件或 EC2 实例元数据等环境来查找凭据。FallbackCredentialsFactory 有一个Amazon.Runtime.CredentialManagement.CredentialProfileStoreChain的静态实例,用于获取配置文件的凭据。
如果您想要不同的东西,您可以让您的代码在创建客户端之前创建一个 CredentialProfileStoreChain 实例,并使用它来获取凭据并将这些凭据传递给客户端。
推荐阅读
- c# - 设计视图模型并避免在控制器中使用 if else 语句并使用设计模式编写良好的业务逻辑 asp.net web api
- django - Django:如何在 sqlite3 数据库中添加/删除字段?
- mysql - 列出受相同抗生素影响的细菌对
- sql - 三个条件以防万一
- java - 算法实现java(algo)
- angular - 将@angular/pwa 添加到现有项目
- java - 将类路径设置为 txt 文件中的字符串
- c# - 我应该绑定到 WPF Prism 中的 SharedService 属性吗
- angular - 角度5中的身份验证弹簧安全性
- maven - 在 OSGI 中导出没有包的类