AWSSDK.Extensions.NETCore.Setup および IConfiguration インターフェイスの使用 - AWS SDK for .NET

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWSSDK.Extensions.NETCore.Setup および IConfiguration インターフェイスの使用

(このトピックは以前「.NET Core を使用した AWS SDK for .NET の設定」というタイトルでした)

.NET Core における最も大きな変更の 1 つは、ConfigurationManager と標準の app.config および web.config ファイルが削除されたことです。これらは .NET Framework および ASP.NET アプリケーションで使用されていました。

.NET Core での設定は、設定プロバイダーによって定められたキーと値のペアに基づいて行われます。設定プロバイダーは、コマンドライン引数、ディレクトリファイル、環境変数、設定ファイルなど、さまざまな設定ソースから設定データをキーと値のペアに読み込みます。

注記

詳細については、「ASP.NET Core の構成」を参照してください。

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

AWSSDK.Extensions.NETCore.Setup の使用

ASP.NET コアモデル-ビューコントローラー (MVC) アプリケーションを作成するとします。このアプリケーションは、Visual Studio で ASP.NET Core ウェブアプリケーションテンプレートを使用するか、または .NET Core CLI で dotnet new mvc ... を実行することにより作成できます。アプリケーションを作成すると、Startup.cs のコンストラクタは appsettings.json などの設定プロバイダーからさまざまな入力ソースを読み取ることによって設定を処理します。

public Startup(IConfiguration configuration) { Configuration = configuration; }

Configuration オブジェクトを使用して AWS のオプションを取得するには、まず AWSSDK.Extensions.NETCore.Setup NuGet パッケージを追加します。次に、以下の記載に従って設定ファイルにオプションを追加します。

プロジェクトに追加されたファイルの 1 つに、appsettings.Development.json があります。このファイルは、EnvironmentNameDevelopment に設定された場合に対応します。開発時にこのファイルに設定を入力すると、ローカルテスト中にのみ読み取られます。EnvironmentNameProduction に設定された Amazon EC2 インスタンスをデプロイする場合にはこのファイルは無視され、AWS SDK for .NET は Amazon EC2 インスタンスに設定された IAM 認証情報とリージョンにフォールバックします。

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

{ "AWS": { "Profile": "local-test-profile", "Region": "us-west-2" }, "SupportEmail": "TechSupport@example.com" }

CSHTML ファイルの設定にアクセスするには、Configuration ディレクティブを使用します。

@using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <h1>Contact</h1> <p> <strong>Support:</strong> <a href='mailto:@Configuration["SupportEmail"]'>@Configuration["SupportEmail"]</a><br /> </p>

ファイルで設定されている AWS オプションにコードからアクセスするには、IConfiguration に追加された GetAWSOptions 拡張メソッドを呼び出します。

これらのオプションからサービスクライアントを構築するには、CreateServiceClient を呼び出します。次の例は、Amazon S3 サービスクライアントを作成する方法を示しています。(必ず AWSSDK.S3 NuGet パッケージをプロジェクトに追加してください)

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

appsettings.Development.json ファイルで複数のエントリを使用して、互換性のない設定を持つ複数のサービスクライアントを作成することもできます。次の例に示すように、service1 の設定には us-west-2 リージョンが含まれ、service2 の設定には特殊なエンドポイント URL が含まれています。

{ "service1": { "Profile": "default", "Region": "us-west-2" }, "service2": { "Profile": "default", "ServiceURL": "URL" } }

その後、JSON ファイルのエントリを使用することで、特定のサービスのオプションを取得できます。例えば、service1 の設定を取得するには以下を使用します。

var options = Configuration.GetAWSOptions("service1");

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

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

  • Region

  • Profile

  • 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 の新しい依存関係インジェクションシステムも組み込まれています。アプリケーションの Startup クラスの ConfigureServices メソッドは、MVC サービスが追加される場所です。アプリケーションが Entity Framework を使用している場合は、これが初期化される場所でもあります。

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

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

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

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; } ... }