[英]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 开发工具包使用以下顺序加载凭证:
AWSOptions.Credentials
属性AWSOptions awsOptions = new AWSOptions
{
Credentials = new BasicAWSCredentials("yourAccessKey", "yourAccessSecret")
};
builder.Services.AddDefaultAWSOptions(awsOptions);
AWSOptions.Profile
属性AWSOptions awsOptions = new AWSOptions
{
Profile = "custom",
ProfilesLocation = @"c:\temp\credentials"
};
builder.Services.AddDefaultAWSOptions(awsOptions);
如果未指定配置文件位置,它将查看默认位置C:\Users\.aws\credentials
。
如果未提供AWSOptions.Credentials
和AWSOptions.Profile
或AWSOptions
对象本身为空。 在这种情况下,凭据配置文件名称将从环境变量AWS_PROFILE
加载。
AWS_PROFILE
环境变量,则default
将用作配置文件名称。C:\Users\.aws\credentials
如果 SDK 仍未获得凭证,则它会检查以下环境变量以加载 AWS 凭证。
ENVIRONMENT_VARIABLE_ACCESSKEY = "AWS_ACCESS_KEY_ID";
ENVIRONMENT_VARIABLE_SECRETKEY = "AWS_SECRET_ACCESS_KEY";
ENVIRONMENT_VARIABLE_SESSION_TOKEN = "AWS_SESSION_TOKEN";
最后,这是 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.