

のバージョン 4 (V4) AWS SDK for .NET がリリースされました。

重要な変更とアプリケーションの移行については、[「移行トピック](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)」を参照してください。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# AWSSDK.Extensions.NETCore.Setup および IConfiguration インターフェイスの使用
<a name="net-dg-config-netcore"></a>

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

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

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

**注記**  
詳細については、「[ASP.NET Core の構成](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration)」を参照してください。

.NET Core AWS SDK for .NET で を簡単に使用するために、[AWSSDK.Extensions.NETCore.Setup](https://www.nuget.org/packages/AWSSDK.Extensions.NETCore.Setup/) NuGet パッケージを使用できます。多くの .NET Core ライブラリと同様に、インターフェイスに拡張機能メソッドを追加して、 AWS 設定をシームレスに`IConfiguration`します。

このパッケージのソースコードは GitHub の [https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.NETCore.Setup) にあります。

## AWSSDK.Extensions.NETCore.Setup の使用
<a name="net-core-configuration-builder"></a>

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` があります。このファイルは、`EnvironmentName` が **Development** に設定された場合に対応します。開発時にこのファイルに設定を入力すると、ローカルテスト中にのみ読み取られます。を **Production** に`EnvironmentName`設定した Amazon EC2 インスタンスをデプロイすると、このファイルは無視され、 は Amazon EC2 インスタンス用に設定された IAM 認証情報とリージョンに AWS SDK for .NET フォールバックされます。

次の設定は、`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 オプションにアクセスするには、 に追加された`GetAWSOptions`拡張メソッドを呼び出します`IConfiguration`。

これらのオプションからサービスクライアントを構築するには、`CreateServiceClient` を呼び出します。次の例は、Amazon S3 サービスクライアントを作成する方法を示しています。(必ず [AWSSDK.S3](https://www.nuget.org/packages/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 ファイルで指定できる値
<a name="net-core-appsettings-values"></a>

`appsettings.Development.json` ファイルには次のアプリケーション設定値を設定できます。フィールド名は、記載された大文字小文字を区別して使用する必要があります。これらの設定の詳細については、「`[AWS.Runtime.ClientConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html)`」クラスを参照してください。
+ Region
+ Profile
+ ProfilesLocation
+ SignatureVersion
+ RegionEndpoint
+ UseHttp
+ ServiceURL
+ AuthenticationRegion
+ AuthenticationServiceName
+ MaxErrorRetry
+ LogResponse
+ BufferSize
+ ProgressUpdateInterval
+ ResignRetries
+ AllowAutoRedirect
+ LogMetrics
+ DisableLogging
+ UseDualstackEndpoint

## ASP.NET Core の依存関係インジェクション
<a name="net-core-dependency-injection"></a>

*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 のドキュメントサイト](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection)を参照してください。

`AWSSDK.Extensions.NETCore.Setup` NuGet パッケージは、依存関係インジェクションに AWS サービスを追加するために`IServiceCollection`使用できる新しい拡張機能メソッドを に追加します。次のコードは、読み取り元の AWS オプションを追加してAmazon S3と DynamoDB をサービスのリスト`IConfiguration`に追加する方法を示しています。(必ず [AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3) および [AWSSDK.DynamoDBv2](https://www.nuget.org/packages/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;
    }

    ...

}
```