本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
凭证和配置文件解析
按特定顺序 AWS SDK for .NET 搜索凭证,并使用当前应用程序的第一组可用凭证。
凭证搜索顺序
-
在 AWS 服务客户端上显式设置的凭证,如中所述访问应用程序中的凭证和配置文件。
注意
该主题之所以出现在特殊注意事项部分中,是因为它不是指定凭证的首选方法。
-
凭据配置文件,其名称由中的值指定AWSConfigs。 AWSProfileName。
-
名称由
AWS_PROFILE
环境变量指定的凭证配置文件。 -
[default]
凭证配置文件。 -
由
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和AWS_SESSION_TOKEN
环境变量创建的 S essionAWSCredentials,如果它们都是非空的。 -
由
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量创建的 B asicAWSCredentials(如果它们都为非空)。 -
Amazon EC2 实例元数据。
如果您的应用程序在 Amazon EC2 实例上运行,例如在生产环境中,请使用中描述的IAM角色使用IAM角色授予访问权限。否则,例如在预发行测试中,请将您的凭据存储在文件中,该文件使用您的 Web 应用程序在服务器上可以访问的 AWS 凭据文件格式。
配置文件解析
由于有两种不同的凭证存储机制,因此了解如何配置 AWS SDK for .NET 以使用它们非常重要。的AWSConfigs。 AWSProfilesLocation属性控制如何 AWS SDK for .NET 查找凭据配置文件。
AWSProfilesLocation | 配置文件解析行为 |
---|---|
null (未设置) 或空 |
如果平台支持,请搜索应用SDK商店,然后在默认位置搜索共享 AWS
凭据文件。如果配置文件不在上述任何一个位置,请搜索 |
AWS 证书文件格式的文件的路径 |
仅 在指定文件中搜索具有指定名称的配置文件。 |
使用联合用户账户凭证
使用 AWS SDK for .NET (AWSSDK.Core
联合访问支持意味着用户可使用您的 Active Directory 进行身份验证。系统将自动为用户授予临时凭证。这些临时证书的有效期为一小时,将在您的应用程序调 AWS 用服务时使用。SDK负责管理临时证书。对于已加入域的用户账户,如果您的应用程序发出调用但凭证已过期,则将自动重新验证用户的身份并授予全新凭证。(对于 non-domain-joined帐户,在重新进行身份验证之前,系统会提示用户输入凭据。)
要在您的中使用此支持. NET应用程序,则必须先使用 PowerShell cmdlet 设置角色配置文件。要了解具体信息,请参阅AWS Tools for Windows PowerShell 文档。
设置角色配置文件后,请在应用程序中引用该配置文件。有多种方法可以做到这一点,其中一种是使用AWSConfigs。 AWSProfileName属性的方式与处理其他凭证配置文件的方式相同。
大AWS Security Token Service会 (AWSSDK. SecurityToken
指定角色或临时凭证
对于在 Amazon EC2 实例上运行的应用程序,管理证书的最安全方法是使用IAM角色,如中所述使用IAM角色授予访问权限。
对于软件可执行文件对组织外部用户可用的应用程序情景,建议您将软件设计为使用临时安全凭证。除了提供有限的 AWS 资源访问权限外,这些证书还可以在指定的时间段后过期。有关临时安全凭证的更多信息,请参阅:
使用代理凭证
如果您的软件 AWS 通过代理与通信,则可以使用服务Config
类的ProxyCredentials
属性为代理指定凭据。服务的 Config
类通常是该服务主命名空间的一部分。示例包括以下内容:AmazonCloudDirectoryConfig在 Amazon 中。 CloudDirectory命名空间和AmazonGameLiftConfig在 Amazon 中。 GameLift命名空间。
例如,对于 Amazon S3,您可以使用类似于以下内容的代码,其中SecurelyStoredUserName
和SecurelyStoredPassword
是在NetworkCredential
AmazonS3Config config = new AmazonS3Config(); config.ProxyCredentials = new NetworkCredential(SecurelyStoredUserName, SecurelyStoredPassword);
注意
SDK使用了ProxyUsername
和的早期版本ProxyPassword
,但这些属性已被弃用。