无法创建Amazon Web Services(AWS)凭据对象

Jus*_*son 5 .net c# sdk amazon-web-services amazon-dynamodb

我正在尝试开始针对本地Dynamo数据库服务进行开发.第一步是创建一个客户端:

var storedAWSCreds = new StoredProfileAWSCredentials();
Run Code Online (Sandbox Code Playgroud)

这引发了一个异常:

App.config不包含凭据信息.添加AWSAccessKey和AWSSecretKey或AWSProfileName

我的app.config具有所需的属性:

<add key="AWSProfileName" value="justin"/>
<add key="AWSProfilesLocation" value="C:\code\dynamodb\credentials"/>
Run Code Online (Sandbox Code Playgroud)

凭证配置文件:

justin
aws_access_key_id = REMOVED-FOR-POST
aws_secret_access_key = REMOVED-FOR-POST
Run Code Online (Sandbox Code Playgroud)

此时我想我会尝试其他一个重载方法并明确告诉构造函数参数应该是什么:

var storedAWSCreds = new StoredProfileAWSCredentials("justin", @"C:\code\dynamodb\credentials");
Run Code Online (Sandbox Code Playgroud)

同样,同样的例外.

好的,异常说我可以直接在我的配置中提供凭据,所以我尝试了:

<add key="AWSAccessKey" value="REMOVED-FOR-POST"/>
<add key="AWSSecretKey" value="REMOVED-FOR-POST"/>
Run Code Online (Sandbox Code Playgroud)

同样,同样的例外.

如何StoredProfileAWSCredentials创建对象?我显然遗漏了一些明显的或他们的异常消息不正确.

我将指出,我可以BasicAWSCredentials通过在构造函数中指定访问密钥和密钥来创建对象:

var basicAWSCreds = new BasicAWSCredentials("REMOVED-FOR-POST", "REMOVED-FOR-POST");
Run Code Online (Sandbox Code Playgroud)

但是,在某些时候我宁愿不在我的应用程序中对其进行硬编码.

小智 5

你的配置部分

<add key="AWSProfilesLocation" value="C:\code\dynamodb\credentials" />
Run Code Online (Sandbox Code Playgroud)

应该

<add key="AWSProfilesLocation" value="C:\code\dynamodb\credentials\filename.json" /> 
Run Code Online (Sandbox Code Playgroud)

它的工作原理.换句话说,在"配置文件"位置指定文件名.

如果您使用较新的SDK,那么使用以下内容也可以:

<configSections>
   <section name="aws" type="Amazon.AWSSection, AWSSDK" />
</configSections>
<aws profileName="YourProfileName" profilesLocation="C:\aws\credentials\aws-credentialfile.json" region="xx-xxxx-x" />
Run Code Online (Sandbox Code Playgroud)


Jim*_*gan 1

配置文件名称需要位于方括号中,如下所示

[justin]
aws_access_key_id = REMOVED-FOR-POST
aws_secret_access_key = REMOVED-FOR-POST
Run Code Online (Sandbox Code Playgroud)