AWS SDK for .NET
開発者ガイド

.NET Core を使用した AWS SDK for .NET の設定

.NET Core における最も大きな変更の 1 つは、ConfigurationManager と標準の app.config および web.config ファイルが削除されたことです。これらは .NET Framework および ASP.NET アプリケーションのあらゆる場所で使用されていました。従来の .NET アプリケーションの場合、AWS SDK for .NET ではこの設定システムを使用して AWS の認証情報やリージョンなどを設定しているため、コードでこれを実行する必要はありません。

.NET Core の設定システムでは、あらゆる場所で任意のタイプの入力ソースが許可されています。また、設定オブジェクトは 標準の .NET アプリケーションの ConfigurationManager のようにグローバルなシングルトンではないので、AWS SDK for .NET ではここから設定を読み取ることはできません。

注記

.NET Core の設定システムの背景については、.NET Core のドキュメントの「Configuration」のトピックを参照してください。

.NET Core と併せて AWS SDK for .NET を使いやすくするために、AWSSDK.Extensions.NETCore.Setup NuGet パッケージを使用できます。これは多くの .NET Core ライブラリと同様に IConfiguration インターフェイスに拡張メソッドを追加して、AWS 設定の取得をシームレスに行えるようにします。

AWSSDK.Extensions.NETCore.Setup の使用

Visual Studio で ASP.NET Core MVC アプリケーションを作成するときには、Startup.cs のコンストラクタによって設定が処理されます。さまざまな入力ソースを読み込み、ConfigurationBuilder を使用して Configuration プロパティを設定し、IConfiguration オブジェクトをビルドします。

public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); }

Configuration オブジェクトを使用して AWS のオプションを取得するには、まず AWSSDK.Extensions.NETCore.Setup NuGet パッケージを追加します。次に、設定ファイルにオプションを追加します。ConfigurationBuilder に追加されたファイルの 1 つは $"appsettings.{env.EnvironmentName}.json" であることに注意してください。プロジェクトのプロパティの [Debug] タブを見ると、このファイルが Development に設定されていることがわかります。これは設定を appsettings.Development.json ファイルに書き込むことができるため、ローカルテストの場合に非常に役に立ちます。このファイルはローカルテストの際には読み取り専用になります。EnvironmentNameProduction に設定した Amazon EC2 インスタンスをデプロイするとき、このファイルは無視され、AWS SDK for .NET は Amazon EC2 インスタンス用に設定された IAM 認証情報とリージョンにフォールバックします。

以下の設定は、AWS 設定を指定するためにプロジェクトの appsettings.Development.json ファイルに追加できる値の例を示しています。

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

ファイルで設定されている AWS オプションにコードからアクセスするには、IConfiguration に追加された GetAWSOptions 拡張メソッドを呼び出します。これらのオプションからサービスクライアントを構築するには、CreateServiceClient を呼び出します。次のコード例は、Amazon S3 サービスクライアントを作成する方法を示しています。

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

appsettings ファイルで指定できる値

appsettings.Development.json ファイルには次のアプリケーション設定値を設定できます。フィールド名には、以下に一覧するように大文字小文字を区別して使用する必要があります。これらの設定の詳細については、AWS.Runtime.ClientConfg クラスを参照してください。

  • リージョン

  • プロフィール

  • ProfilesLocation

  • SignatureVersion

  • RegionEndpoint

  • UseHttp

  • ServiceURL

  • AuthenticationRegion

  • AuthenticationServiceName

  • MaxErrorRetry

  • LogResponse

  • BufferSize

  • ProgressUpdateInterval

  • ResignRetries

  • AllowAutoRedirect

  • LogMetrics

  • DisableLogging

  • UseDualstackEndpoint

ASP.NET Core の依存関係インジェクション

AWSSDK.Extensions.NETCore.Setup NuGet パッケージにも、ASP.NET Core の新しい依存関係インジェクションシステムが組み込まれています。StartupConfigureServices メソッドは、MVC サービスが追加されている場所です。アプリケーションが Entity Framework を使用している場合は、これが初期化される場所でもあります。

public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); }

注記

.NET Core の依存関係インジェクションの背景については、.NET Core のドキュメントのサイトを参照してください。

AWSSDK.Extensions.NETCore.Setup NuGet パッケージでは新しい拡張メソッドが IServiceCollection に追加されており、AWS サービスを依存関係インジェクションに追加するために使用できます。次のコードは、IConfiguration から読み込んだ AWS のオプションを追加して、Amazon S3 や DynamoDB をサービスのリストに追加する方法を示しています。

public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonS3>(); services.AddAWSService<IAmazonDynamoDB>(); }

ここで、MVC コントローラがコンストラクタで IAmazonS3 または IAmazonDynamoDB のいずれかをパラメータとして使用している場合、依存関係インジェクションシステムはこれらのサービスを渡します。

public class HomeController : Controller { IAmazonS3 S3Client { get; set; } public HomeController(IAmazonS3 s3Client) { this.S3Client = s3Client; } ... }