如何在NET Core上的AWS SDK上设置凭据?

时间:2017-03-27 18:04:50

标签: c# aws-sdk aws-sdk-net

我是AWS SDK的新手,我试图关注AWS documentation,但对于我需要设置的内容几乎没有提供。

官方文档告诉我将其添加到appsettings.json:

{
  "AWS": {
    "Profile": "local-test-profile",
    "Region": "us-west-2"
  }
}

然后创建客户端:

var options = Configuration.GetAWSOptions();
IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();

这会导致抛出异常,说它无法找到凭据。我在哪里放置Api ID和密钥?这个简介是什么?

请记住,我没有偏好如何设置它。我只是试图遵循.NET Core的官方文档,他们唯一的例子不起作用。文档似乎暗示我应该事先了解他们的许多术语和设置,或者我正在迁移现有的应用程序,并且已经完成了所有设置。

有人可以指出这个示例中缺少的内容只是为了让API正确连接到AWS吗?

4 个答案:

答案 0 :(得分:18)

对您而言,这可能为时已晚,但如果您使用的是docker或者其他环境/设置无法使用AWS配置文件,那么您仍然可以使用环境变量。例如:

{{1}}

然后设置AWS_ACCESS_KEY_ID&amp; AWS_SECRET_ACCESS_KEY&amp;您环境中的AWS_REGION。

似乎亚马逊在文档中找到了比在需要时更难找到的东西。

在AWS中运行reals是可以的,因为你应该使用一个角色,但是如果你使用dock for dock然后在容器中设置一个配置文件就是PITA。

答案 1 :(得分:12)

json文件是$&#34; appsettings。{env.EnvironmentName} .json&#34;,所以你应该把它命名为appsettings.Development.json并设置环境变量。

您是否定义了&#34; local-test-profile&#34; AWS凭证文件中的配置文件。

应该在C:\ Users \ {USERNAME} \。aws \ credentials

[local-test-profile]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key

如果您不想在默认位置使用它,则可以设置&#39;个人资料位置&#39; json配置文件。

答案 2 :(得分:4)

这有助于避免使用用于开发目的的appsettings从环境中获取凭据

var awsOption = Configuration.GetAWSOptions();
    awsOption.Credentials = new BasicAWSCredentials(Configuration["AWS:AccessKey"], Configuration["AWS:SecretKey"]);
    services.AddDefaultAWSOptions(awsOption);

答案 3 :(得分:0)

相同文档还包括用于设置凭据的部分。 请在此处查看http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html

它没有给出使用appSettings.json文件设置凭据的示例,因为他们认为这不是正确(安全)的方式。

以下是关于设置凭据的部分的介绍部分:

  

不要在文件中添加文字访问键,包括   project的App.config或Web.config文件。如果这样做,则会产生风险   例如,如果您上传,则意外暴露您的凭据   项目到公共存储库。