Configuring the AWS SDK for .NET with .NET Core - AWS SDK for .NET

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Configuring the AWS SDK for .NET with .NET Core

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

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

注記

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

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

Using AWSSDK.Extensions.NETCore.Setup

Visual StudioでASP.NET Core MVCアプリケーションを作成すると、 Startup.cs 構成プロバイダーからさまざまな入力ソースを読み込んで構成を処理します。読み取りなど。 appsettings.json.

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

Configuration オブジェクトを使用して AWS のオプションを取得するには、まず AWSSDK.Extensions.NETCore.Setup NuGet パッケージを追加します。次に、設定ファイルにオプションを追加します。追加されたファイルの1つが ConfigurationBuilder 呼ばれる $"appsettings.{env.EnvironmentName}.json"。 プロジェクトプロパティの[Debug]タブを見ると、このファイルが Development。 これは、構成を appsettings.Development.json ファイル(ローカル・テスト中は読み取り専用)。をデプロイするとき Amazon EC2 のインスタンス EnvironmentName に設定 Productionこのファイルは無視され、 AWS SDK for .NET IAM認証情報に戻り、 Amazon EC2 インスタンス。

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

{ "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 オプションにコードからアクセスするには、GetAWSOptions に追加された IConfiguration 拡張メソッドを呼び出します。

これらのオプションからサービス クライアントを作成するには、 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");

Allowed Values in appsettings File

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 Dependency Injection

は、 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 をサービスのリストに追加する方法を示しています。( AWSSDK.S3 および AWSSDK.DynamicDBv2 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; } ... }