web-dev-qa-db-ja.com

NET Core上のAWS SDKで認証情報を設定する方法は?

私は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に正しく接続するためだけに、この例に欠けているものを誰かに教えていただけますか?

25
Natan

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設定ファイルを設定できます。

14
JAZ

多分これはあなたにとって遅すぎるかもしれませんが、ドッカーを使用している場合、または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で実際に実行することは問題ありませんが、deverにdockerを使用する場合、コンテナでプロファイルを設定するのはPITAです。

19
Jonesie

同じドキュメントには、資格情報を設定するためのセクションも含まれています。こちらをご覧ください http://docs.aws.Amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html

AppSettings.jsonファイルを使用して資格情報を設定する例は示していません。彼らはそれを行うのが正しい(安全な)方法だとは思わないからです。

これは、資格情報の設定に関するセクションの紹介部分からのものです。

プロジェクトのApp.configファイルやWeb.configファイルなど、リテラルアクセスキーをアプリケーションに入れないでください。使用すると、たとえば、プロジェクトをパブリックリポジトリにアップロードした場合に、資格情報を誤って公開するリスクが生じます。

0
Hasan