如何在 NET Core 上的 AWS SDK 上设置凭据?
How to set credentials on AWS SDK on NET Core?
我是 AWS SDK 的新手,我正在尝试遵循 AWS documentation,但对 none 我需要设置的内容知之甚少。
官方文档告诉我将此添加到 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 吗?
同一文档还包括用于设置凭据的部分。
在这里查看 http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html
它没有给出使用 appSettings.json 文件设置凭据的示例,因为他们认为这不是正确(安全)的方式。
以下是有关设置凭据部分的介绍部分:
Don't put literal access keys in your application, including the
project's App.config or Web.config file. If you do, you create a risk
of accidentally exposing your credentials if, for example, you upload
the project to a public repository.
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 配置文件。
也许这对您来说为时已晚,但如果您正在使用 docker 或有一些其他 environment/setup 而不是 possible/easy 来使用 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。
Amazon 似乎让在文档中找到它变得比需要的更难了。
运行 在 AWS 中用于 reals 是可以的,因为你应该使用一个角色但是如果你使用 docker 作为开发然后在容器中设置一个配置文件是一个 PITA。
这有助于避免使用用于开发目的的应用程序设置从环境中获取凭据
var awsOption = Configuration.GetAWSOptions();
awsOption.Credentials = new BasicAWSCredentials(Configuration["AWS:AccessKey"], Configuration["AWS:SecretKey"]);
services.AddDefaultAWSOptions(awsOption);
适用于 .NET 的 AWS 开发工具包使用以下顺序加载凭证:
1。 AWSOptions.Profile
属性
AWSOptions awsOptions = new AWSOptions
{
Credentials = new BasicAWSCredentials("yourAccessKey", "yourAccessSecret")
};
builder.Services.AddDefaultAWSOptions(awsOptions);
2。 AWSOptions.Credentials
属性
AWSOptions awsOptions = new AWSOptions
{
Profile = "custom",
ProfilesLocation = @"c:\temp\credentials"
};
builder.Services.AddDefaultAWSOptions(awsOptions);
如果未指定配置文件位置,它将查看默认位置 C:\Users\.aws\credentials
。
3。 凭据配置文件存储链
如果 AWSOptions.Credentials
和 AWSOptions.Profile
都未提供或 AWSOptions
对象本身为空。在这种情况下,将从环境变量 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 凭证。
我也写了一篇关于同一主题的博客,你可以从这里查看 - Understanding Credential Loading in AWS SDK for .NET
我是 AWS SDK 的新手,我正在尝试遵循 AWS documentation,但对 none 我需要设置的内容知之甚少。
官方文档告诉我将此添加到 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 吗?
同一文档还包括用于设置凭据的部分。 在这里查看 http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html
它没有给出使用 appSettings.json 文件设置凭据的示例,因为他们认为这不是正确(安全)的方式。
以下是有关设置凭据部分的介绍部分:
Don't put literal access keys in your application, including the project's App.config or Web.config file. If you do, you create a risk of accidentally exposing your credentials if, for example, you upload the project to a public repository.
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 配置文件。
也许这对您来说为时已晚,但如果您正在使用 docker 或有一些其他 environment/setup 而不是 possible/easy 来使用 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。
Amazon 似乎让在文档中找到它变得比需要的更难了。
运行 在 AWS 中用于 reals 是可以的,因为你应该使用一个角色但是如果你使用 docker 作为开发然后在容器中设置一个配置文件是一个 PITA。
这有助于避免使用用于开发目的的应用程序设置从环境中获取凭据
var awsOption = Configuration.GetAWSOptions();
awsOption.Credentials = new BasicAWSCredentials(Configuration["AWS:AccessKey"], Configuration["AWS:SecretKey"]);
services.AddDefaultAWSOptions(awsOption);
适用于 .NET 的 AWS 开发工具包使用以下顺序加载凭证:
1。 AWSOptions.Profile
属性
AWSOptions awsOptions = new AWSOptions
{
Credentials = new BasicAWSCredentials("yourAccessKey", "yourAccessSecret")
};
builder.Services.AddDefaultAWSOptions(awsOptions);
2。 AWSOptions.Credentials
属性
AWSOptions awsOptions = new AWSOptions
{
Profile = "custom",
ProfilesLocation = @"c:\temp\credentials"
};
builder.Services.AddDefaultAWSOptions(awsOptions);
如果未指定配置文件位置,它将查看默认位置 C:\Users\.aws\credentials
。
3。 凭据配置文件存储链
如果 AWSOptions.Credentials
和 AWSOptions.Profile
都未提供或 AWSOptions
对象本身为空。在这种情况下,将从环境变量 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 凭证。
我也写了一篇关于同一主题的博客,你可以从这里查看 - Understanding Credential Loading in AWS SDK for .NET