繁体   English   中英

如何在 NET Core 上的 AWS 开发工具包上设置凭证?

[英]How to set credentials on AWS SDK on NET Core?

我是 AWS SDK 的新手,我正在尝试遵循 AWS 文档,但对我需要设置的内容几乎没有给出任何信息。

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

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

然后创建客户端:

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

这会导致抛出异常,说它找不到凭据。 我将 Api ID 和 Key 放在哪里? 这个简介是什么?

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

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

也许这对您来说为时已晚,但如果您使用 docker 或有其他一些环境/设置无法/易于使用 AWS 配置文件,那么您仍然可以使用环境变量。 例如:

var awsOptions = Configuration.GetAWSOptions();
awsOptions.Credentials = new EnvironmentVariablesAWSCredentials();
services.AddDefaultAWSOptions(awsOptions);
services.AddAWSService<IAmazonS3>();

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

亚马逊似乎让在文档中找到它比需要的更难。

在 AWS 中运行实数是可以的,因为您应该使用角色,但如果您使用 docker 进行开发,那么在容器中设置配置文件是 PITA。

json 文件是 $"appsettings.{env.EnvironmentName}.json",因此您应该将其命名为 appsettings.Development.json 并设置环境变量。

您是否在 AWS 凭证文件中定义了“local-test-profile”配置文件。

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

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

如果您不希望它位于默认位置,则可以设置“ProfilesLocation”json 配置文件。

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

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

适用于 .NET 的 AWS 开发工具包使用以下顺序加载凭证:

1. AWSOptions.Credentials属性

AWSOptions awsOptions = new AWSOptions
{
    Credentials = new BasicAWSCredentials("yourAccessKey", "yourAccessSecret")
};
builder.Services.AddDefaultAWSOptions(awsOptions);

2. AWSOptions.Profile属性

AWSOptions awsOptions = new AWSOptions
{
    Profile = "custom",
    ProfilesLocation = @"c:\temp\credentials"
};
builder.Services.AddDefaultAWSOptions(awsOptions);

如果未指定配置文件位置,它将查看默认位置C:\Users\.aws\credentials

3.凭证配置文件存储链

如果未提供AWSOptions.CredentialsAWSOptions.ProfileAWSOptions对象本身为空。 在这种情况下,凭据配置文件名称将从环境变量AWS_PROFILE加载。

  • 配置文件名称:如果没有这样AWS_PROFILE环境变量,则default将用作配置文件名称。
  • 配置文件位置C:\Users\.aws\credentials

4.环境变量 AWS 凭证

如果 SDK 仍未获得凭证,则它会检查以下环境变量以加载 AWS 凭证。

ENVIRONMENT_VARIABLE_ACCESSKEY = "AWS_ACCESS_KEY_ID";     
ENVIRONMENT_VARIABLE_SECRETKEY = "AWS_SECRET_ACCESS_KEY";        
ENVIRONMENT_VARIABLE_SESSION_TOKEN = "AWS_SESSION_TOKEN";

5. EC2 实例配置文件/ECS 任务配置文件

最后,这是 SDK 查找凭据的最重要位置。 这将是在 AWS 环境中运行的应用程序的最佳位置。 在这种情况下,SDK 从 EC2 实例配置文件或 ECS 任务角色加载 AWS 凭证。

我还写了一篇关于同一主题的博客,您可以从这里查看 - 了解 AWS SDK for .NET 中的凭证加载

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM