

 AWS SDK for .NET V3 がメンテナンスモードになりました。

[AWS SDK for .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) に移行することをお勧めします。移行方法の詳細と情報については、[メンテナンスモードのお知らせ](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)を参照してください。

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

# AWS SDK for .NET プロジェクトの高度な設定
<a name="net-dg-advanced-config"></a>

このセクションのトピックでは、お客様が関心を持つ可能性のある追加の設定タスクやメソッドについて説明します。

**Topics**
+ [AWSSDK.Extensions.NETCore.Setup および IConfiguration](net-dg-config-netcore.md)
+ [他のアプリケーションパラメータの設定](net-dg-config-other.md)
+ [AWS SDK for .NET の設定ファイルリファレンス](net-dg-config-ref.md)

# 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/aws-sdk-net-v3.7/extensions/src/AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v3.7/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/v3/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;
    }

    ...

}
```

# 他のアプリケーションパラメータの設定
<a name="net-dg-config-other"></a>

**注記**  
このトピックの情報は、.NET Framework に基づくプロジェクトに固有のものです。.NET Core に基づくプロジェクトでは、デフォルトでは `App.config` および `Web.config` ファイルは存在しません。

## 開いて .NET Framework のコンテンツを表示する
<a name="w2aab9c31b9b5b1"></a>

設定可能なアプリケーションパラメータは多数あります。
+  `AWSLogging` 
+  `AWSLogMetrics` 
+  `AWSRegion` 
+  `AWSResponseLogging` 
+  `AWS.DynamoDBContext.TableNamePrefix` 
+  `AWS.S3.UseSignatureVersion4` 
+  `AWSEndpointDefinition` 
+  [AWS サービス生成エンドポイント](#config-setting-service-generated-awsendpointdefinition) 

これらのパラメータは、アプリケーションの `App.config` ファイルまたは `Web.config` ファイルで設定できます。 AWS SDK for .NET API を使用してこれらを設定することもできますが、アプリケーションの `.config` ファイルを使用することをお勧めします。ここでは、両方のアプローチについて説明します。

このトピックで後ほど説明する `<aws>` エレメントの使用方法の詳細については、「[AWS SDK for .NETの設定ファイルリファレンス](net-dg-config-ref.md)」を参照してください。

### AWSLogging
<a name="config-setting-awslogging"></a>

SDK でイベントを記録する方法を設定します。例えば、推奨される方法としては `<aws>` 要素の子要素である `<logging>` 要素の使用があります。

```
<aws>
  <logging logTo="Log4Net"/>
</aws>
```

または:

```
<add key="AWSLogging" value="log4net"/>
```

指定できる値は以下のとおりです。

** `None` **  
 イベントのログ記録を無効にします。これがデフォルトです。

** `log4net` **  
log4net を使用してログを記録します。

** `SystemDiagnostics` **  
`System.Diagnostics` クラスを使用してログを記録します。

コンマで区切ることで、`logTo` 属性に複数の値を設定できます。次の例では、`.config` ファイルを使用して `log4net` ログと `System.Diagnostics` ログの両方を設定します。

```
<logging logTo="Log4Net, SystemDiagnostics"/>
```

または:

```
<add key="AWSLogging" value="log4net, SystemDiagnostics"/>
```

または、 AWS SDK for .NET API を使用して、[LoggingOptions](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TLoggingOptions.html) 列挙の値を組み合わせて、[AWSConfigs.Logging](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティを設定します。

```
AWSConfigs.Logging = LoggingOptions.Log4Net | LoggingOptions.SystemDiagnostics;
```

この設定の変更は、新しい AWS クライアントインスタンスに対してのみ有効になります。

### AWSLogMetrics
<a name="config-setting-awslogmetrics"></a>

SDK でパフォーマンスメトリクスを記録するかどうかを指定します。`.config` ファイルでメトリクスのログを設定するには、`<logging>` 要素の `logMetrics` 属性値を設定します。これは、`<aws>` 要素の子要素です。

```
<aws>
  <logging logMetrics="true"/>
</aws>
```

または、`<appSettings>` セクションで `AWSLogMetrics` キーを設定します。

```
<add key="AWSLogMetrics" value="true">
```

または、 AWS SDK for .NET API でメトリクスのログ記録を設定するには、[AWSConfigs.LogMetrics](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティを設定します。

```
AWSConfigs.LogMetrics = true;
```

この設定では、すべてのクライアント/設定のデフォルトの `LogMetrics` プロパティを設定します。この設定の変更は、新しい AWS クライアントインスタンスに対してのみ有効になります。

### AWSRegion
<a name="config-setting-awsregion"></a>

 AWS リージョンを明示的に指定していないクライアントのデフォルトリージョンを設定します。`.config` ファイルでリージョンを設定する推奨される方法は、`aws` 要素の `region` 属性値を設定することです。

```
<aws region="us-west-2"/>
```

または、`<appSettings>` セクションで *AWSRegion* キーを設定します。

```
<add key="AWSRegion" value="us-west-2"/>
```

または、 AWS SDK for .NET API を使用してリージョンを設定するには、[AWSConfigs.AWSRegion](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティを設定します。

```
AWSConfigs.AWSRegion = "us-west-2";
```

特定のリージョンの AWS クライアントの作成の詳細については、[AWS 「リージョンの選択](net-dg-region-selection.md)」を参照してください。この設定の変更は、新しい AWS クライアントインスタンスに対してのみ有効になります。

### AWSResponseLogging
<a name="config-setting-awsresponselogging"></a>

SDK がサービス応答を記録するタイミングを設定します。指定できる値は以下のとおりです。

** `Never` **  
サービス応答を記録しません。これがデフォルトです。

** `Always` **  
常にサービス応答を記録します。

** `OnError` **  
エラーが発生したときのみサービス応答を記録します。

`.config` ファイルでサービス ログを設定する推奨される方法は、`<logging>` 要素の `logResponses` 属性値を設定することです。これは、`<aws>` 要素の子要素です。

```
<aws>
  <logging logResponses="OnError"/>
</aws>
```

または、`<appSettings>` セクションで *AWSResponseLogging* キーを設定します。

```
<add key="AWSResponseLogging" value="OnError"/>
```

または、 AWS SDK for .NET API でサービスログ記録を設定するには、[AWSConfigs.ResponseLogging](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティを [ResponseLoggingOption](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TResponseLoggingOption.html) 列挙のいずれかの値に設定します。

```
AWSConfigs.ResponseLogging = ResponseLoggingOption.OnError;
```

この設定に対する変更はすぐに反映されます。

### `AWS.DynamoDBContext.TableNamePrefix`
<a name="config-setting-aws-dynamodbcontext-tablenameprefix"></a>

手動で設定しなかった場合に `DynamoDBContext` で使用されるデフォルトの `TableNamePrefix` を設定します。

`.config` ファイルでテーブル名プレフィックスを設定する際の推奨される方法は、`<dynamoDBContext>` 要素の `tableNamePrefix` 属性値を設定することです。この要素は `<dynamoDB>` 要素の子要素であり、これ自体は `<aws>` 要素の子要素です。

```
<dynamoDBContext tableNamePrefix="Test-"/>
```

または、`<appSettings>` セクションで `AWS.DynamoDBContext.TableNamePrefix` キーを設定します。

```
<add key="AWS.DynamoDBContext.TableNamePrefix" value="Test-"/>
```

または、 AWS SDK for .NET API でテーブル名のプレフィックスを設定するには、[AWSConfigs.DynamoDBContextTableNamePrefix](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティを設定します。

```
AWSConfigs.DynamoDBContextTableNamePrefix = "Test-";
```

この設定への変更は、`DynamoDBContextConfig` および `DynamoDBContext` の新しく構築されたインスタンスのみに有効です。

### `AWS.S3.UseSignatureVersion4`
<a name="config-setting-aws-s3-usesignatureversion4"></a>

Amazon S3 クライアントがリクエストへの署名で署名バージョン 4 を使用するかどうかを設定します。

Amazon S3 の署名バージョン 4 での署名を `.config` ファイルで設定する際に推奨される方法は、`<s3>` 要素の `useSignatureVersion4` 属性を設定することです。これは、`<aws>` 要素の子要素です。

```
<aws>
  <s3 useSignatureVersion4="true"/>
</aws>
```

または、`AWS.S3.UseSignatureVersion4` セクションで `true` キーを `<appSettings>` に設定します。

```
<add key="AWS.S3.UseSignatureVersion4" value="true"/>
```

または、 AWS SDK for .NET API で署名バージョン 4 の署名を設定するには、[AWSConfigs.S3UseSignatureVersion4](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティを に設定します`true`。

```
AWSConfigs.S3UseSignatureVersion4 = true;
```

デフォルトでは、この設定は `false` ですが、一部のケースまたは一部のリージョンではデフォルトで署名バージョン 4 が使用される場合があります。設定が `true` の場合、すべてのリクエストに署名バージョン 4 が使用されます。この設定の変更は新しい Amazon S3 クライアントインスタンスに対してのみ有効です。

### AWSEndpointDefinition
<a name="config-setting-awsendpointdefinition"></a>

SDK がリージョンとエンドポイントを定義するカスタム設定ファイルを使用するかどうかを設定します。

`.config` ファイルでエンドポイント定義ファイルを設定するには、`<aws>` 要素の `endpointDefinition` 属性値を設定することをお勧めします。

```
<aws endpointDefinition="c:\config\endpoints.json"/>
```

または、`<appSettings>` セクションで *AWSEndpointDefinition* キーを設定できます。

```
<add key="AWSEndpointDefinition" value="c:\config\endpoints.json"/>
```

または、 AWS SDK for .NET API を使用してエンドポイント定義ファイルを設定するには、[AWSConfigs.EndpointDefinition](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティを設定します。

```
AWSConfigs.EndpointDefinition = @"c:\config\endpoints.json";
```

ファイル名が指定されていない場合、カスタム設定ファイルは使用されません。この設定の変更は、新しい AWS クライアントインスタンスに対してのみ有効になります。endpoint.json ファイルは、[https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/endpoints.json](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/endpoints.json) から入手できます。

### AWS サービス生成エンドポイント
<a name="config-setting-service-generated-awsendpointdefinition"></a>

一部の AWS サービスは、リージョンエンドポイントを使用する代わりに独自のエンドポイントを生成します。これらのサービスのクライアントは、そのサービスおよびリソースに固有のサービス URL を使用します。これらのサービスの 2 つの例は、Amazon CloudSearch と です AWS IoT。次の例は、これらのサービスのエンドポイントを取得する方法を示しています。

#### Amazon CloudSearch エンドポイントの例
<a name="cs-endpoints-example"></a>

Amazon CloudSearch クライアントは、Amazon CloudSearch 設定サービスにアクセスするために使用されます。Amazon CloudSearch 設定サービスを使用して、検索ドメインを作成、設定、管理します。検索ドメインを作成するには、[CreateDomainRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/TCreateDomainRequest.html) オブジェクトを作成し、`DomainName` プロパティを指定します。リクエストオブジェクトを使用して [AmazonCloudSearchClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/TCloudSearchClient.html) オブジェクトを作成します。[CreateDomain](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/MCloudSearchCreateDomainCreateDomainRequest.html) メソッドを呼び出します。呼び出しから返される [CreateDomainResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/TCreateDomainResponse.html) オブジェクトには、`DocService` および `SearchService` エンドポイントの両方を持つ `DomainStatus` プロパティが含まれます。[AmazonCloudSearchDomainConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearchDomain/TCloudSearchDomainConfig.html) オブジェクトを作成し、それを使用して [AmazonCloudSearchDomainClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearchDomain/TCloudSearchDomainClient.html) クラスの `DocService` および `SearchService` インスタンスを初期化します。

```
// Create domain and retrieve DocService and SearchService endpoints
DomainStatus domainStatus;
using (var searchClient = new AmazonCloudSearchClient())
{
    var request = new CreateDomainRequest
    {
        DomainName = "testdomain"
    };
    domainStatus = searchClient.CreateDomain(request).DomainStatus;
    Console.WriteLine(domainStatus.DomainName + " created");
}

// Test the DocService endpoint
var docServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.DocService.Endpoint
};
using (var domainDocService = new AmazonCloudSearchDomainClient(docServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain DocService client instantiated using the DocService endpoint");
    Console.WriteLine("DocService endpoint = " + domainStatus.DocService.Endpoint);

    using (var docStream = new FileStream(@"C:\doc_source\XMLFile4.xml", FileMode.Open))
    {
        var upload = new UploadDocumentsRequest
        {
            ContentType = ContentType.ApplicationXml,
            Documents = docStream
        };
        domainDocService.UploadDocuments(upload);
    }
}

// Test the SearchService endpoint
var searchServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.SearchService.Endpoint
};
using (var domainSearchService = new AmazonCloudSearchDomainClient(searchServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain SearchService client instantiated using the SearchService endpoint");
    Console.WriteLine("SearchService endpoint = " + domainStatus.SearchService.Endpoint);

    var searchReq = new SearchRequest
    {
        Query = "Gambardella",
        Sort = "_score desc",
        QueryParser = QueryParser.Simple
    };
    var searchResp = domainSearchService.Search(searchReq);
}
```

#### AWS IoT エンドポイントの例
<a name="iotlong-endpoints-example"></a>

のエンドポイントを取得するには AWS IoT、[AmazonIoTClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IoT/TIoTClient.html) オブジェクトを作成し、[DescribeEndPoint](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IoT/MIoTDescribeEndpointDescribeEndpointRequest.html) メソッドを呼び出します。返される [DescribeEndPointResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IoT/TDescribeEndpointResponse.html) オブジェクトには、`EndpointAddress` が含まれます。[AmazonIotDataConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IotData/TIotDataConfig.html) オブジェクトを作成し、`ServiceURL` プロパティを設定します。次に、このオブジェクトを使用して [AmazonIotDataClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IotData/TIotDataClient.html) クラスをインスタンス化します。

```
string iotEndpointAddress;
using (var iotClient = new AmazonIoTClient())
{
    var endPointResponse = iotClient.DescribeEndpoint();
    iotEndpointAddress = endPointResponse.EndpointAddress;
}

var ioTdocServiceConfig = new AmazonIotDataConfig
{
    ServiceURL = "https://" + iotEndpointAddress
};
using (var dataClient = new AmazonIotDataClient(ioTdocServiceConfig))
{
    Console.WriteLine("AWS IoTData client instantiated using the endpoint from the IotClient");
}
```

# AWS SDK for .NET の設定ファイルリファレンス
<a name="net-dg-config-ref"></a>

**注記**  
このトピックの情報は、.NET Framework に基づくプロジェクトに固有のものです。.NET Core に基づくプロジェクトでは、デフォルトでは `App.config` および `Web.config` ファイルは存在しません。

## 開いて .NET Framework のコンテンツを表示する
<a name="w2aab9c31c11b5b1"></a>

.NET プロジェクトの `App.config` ファイルまたは `Web.config` ファイルを使用すると、AWS の認証情報、ログオプション、AWS サービスエンドポイント、AWS リージョンなどの AWS の設定や、Amazon DynamoDB、Amazon EC2、Amazon S3 などの AWS サービスの一部の設定を指定できます。以下では、適切な形式の `App.config` ファイルまたは `Web.config` ファイルを使用してこれらの設定を指定する方法について説明します。

**注記**  
`App.config` ファイルまたは `Web.config` ファイルの `<appSettings>` 要素を引き続き使用して AWS の設定を指定することもできますが、このトピックで後ほど説明するように `<configSections>` 要素および `<aws>` 要素を使用することをお勧めします `<appSettings>` エレメントの詳細については、「[AWS SDK for .NET アプリケーションの設定](net-dg-config.md)」の `<appSettings>` エレメントの例を参照してください。

**注記**  
以下の [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) クラスプロパティをコードファイルで使用して AWS の設定を指定することはできますが、以下のプロパティは非推奨であり、将来のリリースではサポートされなくなる可能性があります。  
 `DynamoDBContextTableNamePrefix` 
 `EC2UseSignatureVersion4` 
 `LoggingOptions` 
 `LogMetrics` 
 `ResponseLoggingOption` 
 `S3UseSignatureVersion4` 
一般に、このトピックでこれから説明するように、コードファイルで `AWSConfigs` クラスのプロパティを使用して AWS の設定を指定するのではなく、`App.config` ファイルまたは `Web.config` ファイルの `<configSections>` 要素および `<aws>` 要素を使用して AWS の設定を指定することをお勧めします。上記のプロパティの詳細については、「[AWS SDK for .NET アプリケーションの設定](net-dg-config.md)」の `AWSConfigs` コード例を参照してください。

**Topics**
+ [AWS 設定セクションの宣言](#net-dg-config-ref-declaring)
+ [使用できる要素](#net-dg-config-ref-elements)
+ [要素のリファレンス](#net-dg-config-ref-elements-ref)

### AWS 設定セクションの宣言
<a name="net-dg-config-ref-declaring"></a>

AWS の設定は、`App.config` または `Web.config` ファイルの `<aws>` 要素内で指定します。`<aws>` 要素の使用を始める前に、次の例で示すように `<section>` 要素 (`<configSections>` 要素の子要素) を作成し、その `name` 属性を `aws` に、`type` 属性を `Amazon.AWSSection, AWSSDK.Core` に設定する必要があります。

```
<?xml version="1.0"?>
<configuration>
  ...
  <configSections>
    <section name="aws" type="Amazon.AWSSection, AWSSDK.Core"/>
  </configSections>
  <aws>
    <!-- Add your desired AWS settings declarations here. -->
  </aws>
  ...
</configuration>
```

Visual Studio のエディタでは、`<aws>` 要素またはその子要素の自動コード補完機能（IntelliSense）は提供されていません。

`<aws>` 要素を正しくフォーマットするには、`Amazon.AWSConfigs.GenerateConfigTemplate` メソッドを呼び出してください。このメソッドは `<aws>` 要素の正規バージョンを適切な文字列として出力するので、それを利用できます。以下のセクションでは、`<aws>` 要素の属性と子要素について説明します。

### 使用できる要素
<a name="net-dg-config-ref-elements"></a>

AWS 設定セクションで使用できる要素の間の論理的な関係を次に示します。このリストの最新バージョンは `Amazon.AWSConfigs.GenerateConfigTemplate` メソッドを呼び出すことによって生成できます。このメソッドは、`<aws>` 要素の正規バージョンをそのまま使用できる文字列として出力します。

```
<aws
  endpointDefinition="string value"
  region="string value"
  profileName="string value"
  profilesLocation="string value">
  <logging
    logTo="None, Log4Net, SystemDiagnostics"
    logResponses="Never | OnError | Always"
    logMetrics="true | false"
    logMetricsFormat="Standard | JSON"
    logMetricsCustomFormatter="NameSpace.Class, Assembly" />
  <dynamoDB
    conversionSchema="V1 | V2">
    <dynamoDBContext
      tableNamePrefix="string value">
      <tableAliases>
        <alias
          fromTable="string value"
          toTable="string value" />
      </tableAliases>
      <map
        type="NameSpace.Class, Assembly"
        targetTable="string value">
        <property
          name="string value"
          attribute="string value"
          ignore="true | false"
          version="true | false"
          converter="NameSpace.Class, Assembly" />
      </map>
    </dynamoDBContext>
  </dynamoDB>
  <s3
    useSignatureVersion4="true | false" />
  <ec2
    useSignatureVersion4="true | false" />
  <proxy
    host="string value"
    port="1234"
    username="string value"
    password="string value" />
</aws>
```

### 要素のリファレンス
<a name="net-dg-config-ref-elements-ref"></a>

AWS 設定セクションで使用できる要素のリストを次に示します。各要素について、使用できる属性と親子要素が示されています。

**Topics**
+ [alias](#net-dg-config-ref-elements-alias)
+ [`aws`](#net-dg-config-ref-elements-aws)
+ [dynamoDB](#net-dg-config-ref-elements-dynamodb)
+ [dynamoDBContext](#net-dg-config-ref-elements-ddbcontext)
+ [Ec2](#net-dg-config-ref-elements-ec2)
+ [ログ記録](#net-dg-config-ref-elements-logging)
+ [マップ](#net-dg-config-ref-elements-map)
+ [property](#net-dg-config-ref-elements-property)
+ [proxy](#net-dg-config-ref-elements-proxy)
+ [s3](#net-dg-config-ref-elements-s3)

#### alias
<a name="net-dg-config-ref-elements-alias"></a>

`<alias>` 要素は、1 つ以上のテーブル間マッピングのコレクションに含まれる、タイプに対して設定されているものとは異なるテーブルを指定する単一の項目を表します この要素は、`Amazon.Util.TableAlias` の `Amazon.AWSConfigs.DynamoDBConfig.Context.TableAliases` プロパティから AWS SDK for .NET クラスのインスタンスにマッピングされます。テーブル名のプレフィックスを適用する前に再マッピングが行われます。

この要素は次の属性を含むことができます:

** `fromTable` **  
マップ元テーブルからマップ先テーブルへのマッピングのマップ元テーブル部分です。この属性は、`Amazon.Util.TableAlias.FromTable` の AWS SDK for .NET プロパティにマッピングされます。

** `toTable` **  
マップ元テーブルからマップ先テーブルへのマッピングのマップ先テーブル部分です この属性は、`Amazon.Util.TableAlias.ToTable` の AWS SDK for .NET プロパティにマッピングされます。

`<alias>` 要素の親は、`<tableAliases>` 要素です。

`<alias>` 要素には子要素は含まれません。

次に `<alias>` 要素の使用例を示します。

```
<alias
  fromTable="Studio"
  toTable="Studios" />
```

#### `aws`
<a name="net-dg-config-ref-elements-aws"></a>

`<aws>` 要素は、AWS 設定セクションの最上位要素を表します。この要素は次の属性を含むことができます:

** `endpointDefinition` **  
使用する AWS のリージョンとエンドポイントを定義するカスタム設定ファイルの絶対パスです。この属性は、`Amazon.AWSConfigs.EndpointDefinition` の AWS SDK for .NET プロパティにマッピングされます。

** `profileName` **  
サービスの呼び出しに使用される、保存された AWS 認証情報のプロファイル名です。この属性は、`Amazon.AWSConfigs.AWSProfileName` の AWS SDK for .NET プロパティにマッピングされます。

** `profilesLocation` **  
他の AWS SDK に共有される認証情報ファイルの場所の絶対パスです。デフォルトでは、認証情報ファイルは現在のユーザーのホームディレクトリにある `.aws` ディレクトリに格納されます。この属性は、`Amazon.AWSConfigs.AWSProfilesLocation` の AWS SDK for .NET プロパティにマッピングされます。

** `region` **  
明示的にリージョンを指定していないクライアントで使用されるデフォルトの AWS リージョン ID です。この属性は、`Amazon.AWSConfigs.AWSRegion` の AWS SDK for .NET プロパティにマッピングされます。

`<aws>` 要素に親要素はありません。

`<aws>` 要素は次の子要素を含むことができます。
+  `<dynamoDB>` 
+  `<ec2>` 
+  `<logging>` 
+  `<proxy>` 
+  `<s3>` 

次に `<aws>` 要素の使用例を示します。

```
<aws
  endpointDefinition="C:\Configs\endpoints.xml"
  region="us-west-2"
  profileName="development"
  profilesLocation="C:\Configs">
  <!-- ... -->
</aws>
```

#### dynamoDB
<a name="net-dg-config-ref-elements-dynamodb"></a>

`<dynamoDB>` 要素は、Amazon DynamoDB の設定のコレクションを表します。この要素は、*conversionSchema* 属性を含むことができます。この属性は、.NET と DynamoDB オブジェクトの間の変換に使用するバージョンを表します。使用できる値は、V1 および V2 です。この属性は、`Amazon.DynamoDBv2.DynamoDBEntryConversion` の AWS SDK for .NET クラスにマッピングされます。詳細については、「[DynamoDB Series - Conversion Schemas](http://blogs.aws.amazon.com/net/post/Tx2TCOGWG7ARUH5/DynamoDB-Series-Conversion-Schemas)」を参照してください。

`<dynamoDB>` 要素の親は、`<aws>` 要素です。

`<dynamoDB>` 要素は、`<dynamoDBContext>` 子要素を含むことができます。

次に `<dynamoDB>` 要素の使用例を示します。

```
<dynamoDB
  conversionSchema="V2">
  <!-- ... -->
</dynamoDB>
```

#### dynamoDBContext
<a name="net-dg-config-ref-elements-ddbcontext"></a>

`<dynamoDBContext>` 要素は、Amazon DynamoDB コンテキスト固有の設定のコレクションを表します。この要素は *tableNamePrefix* 属性を含むことができます。この属性は、テーブル名プレフィックスが手動で設定されていない場合に DynamoDB コンテキストが使用するデフォルトのプレフィックスを表します。この属性は、`Amazon.Util.DynamoDBContextConfig.TableNamePrefix` の `Amazon.AWSConfigs.DynamoDBConfig.Context.TableNamePrefix` プロパティから AWS SDK for .NET プロパティにマッピングされます。詳細については、「[Enhancements to the DynamoDB SDK](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK)」を参照してください。

`<dynamoDBContext>` 要素の親は、`<dynamoDB>` 要素です。

`<dynamoDBContext>` 要素は次の子要素を含むことができます。
+  `<alias>` (1 つまたは複数のインスタンス)
+  `<map>` (1 つまたは複数のインスタンス)

次に `<dynamoDBContext>` 要素の使用例を示します。

```
<dynamoDBContext
  tableNamePrefix="Test-">
  <!-- ... -->
</dynamoDBContext>
```

#### Ec2
<a name="net-dg-config-ref-elements-ec2"></a>

`<ec2>` 要素は、Amazon EC2 の設定のコレクションを表します。この要素は、*useSignatureVersion4* 属性を含むことができます。この属性は、署名バージョン 4 の署名をすべての要求に対して使用すること (true)、または署名バージョン 4 の署名をすべての要求に対して使用しないこと (false、デフォルト) を指定します。この属性は、`Amazon.Util.EC2Config.UseSignatureVersion4` の `Amazon.AWSConfigs.EC2Config.UseSignatureVersion4` プロパティから AWS SDK for .NET プロパティにマッピングされます。

`<ec2>` 要素の親は、要素です。

`<ec2>` 要素には子要素は含まれません。

次に `<ec2>` 要素の使用例を示します。

```
<ec2
  useSignatureVersion4="true" />
```

#### ログ記録
<a name="net-dg-config-ref-elements-logging"></a>

`<logging>` 要素は、応答ログおよびパフォーマンスメトリクスログの設定のコレクションを表します。この要素は次の属性を含むことができます:

** `logMetrics` **  
パフォーマンスメトリクスをすべてのクライアントおよび設定に対して記録するか (true)、または記録しないか (false) を示します。この属性は、`Amazon.Util.LoggingConfig.LogMetrics` の `Amazon.AWSConfigs.LoggingConfig.LogMetrics` プロパティから AWS SDK for .NET プロパティにマッピングされます。

** `logMetricsCustomFormatter` **  
ログ記録メトリクスのカスタムフォーマッターのデータ型およびアセンブリ名です この属性は、`Amazon.Util.LoggingConfig.LogMetricsCustomFormatter` の `Amazon.AWSConfigs.LoggingConfig.LogMetricsCustomFormatter` プロパティから AWS SDK for .NET プロパティにマッピングされます。

** `logMetricsFormat` **  
ログ記録メトリクスを示す形式です (`Amazon.Util.LoggingConfig.LogMetricsFormat` の `Amazon.AWSConfigs.LoggingConfig.LogMetricsFormat` プロパティから AWS SDK for .NET プロパティにマッピングされます)。  
使用できる値は次のとおりです。    
** `JSON` **  
JSON 形式を使用します。  
** `Standard` **  
デフォルトの形式を使用します。

** `logResponses` **  
サービス応答をいつログに記録するかを示します (`Amazon.Util.LoggingConfig.LogResponses` の `Amazon.AWSConfigs.LoggingConfig.LogResponses` プロパティから AWS SDK for .NET プロパティにマッピングされます)。  
使用できる値は次のとおりです。    
** `Always` **  
常にサービス応答を記録します。  
** `Never` **  
サービス応答を記録しません。  
** `OnError` **  
エラーがあるときにのみサービス応答を記録します。

** `logTo` **  
ログを記録する場所を示します (`LogTo` の `Amazon.AWSConfigs.LoggingConfig.LogTo` プロパティから AWS SDK for .NET プロパティにマッピングされます)。  
使用できる値は次のとおりです。    
** `Log4Net` **  
log4net にログを記録します。  
** `None` **  
ログを無効にします。  
** `SystemDiagnostics` **  
System.Diagnostics にログを記録します。

`<logging>` 要素の親は、`<aws>` 要素です。

`<logging>` 要素には子要素は含まれません。

次に `<logging>` 要素の使用例を示します。

```
<logging
  logTo="SystemDiagnostics"
  logResponses="OnError"
  logMetrics="true"
  logMetricsFormat="JSON"
  logMetricsCustomFormatter="MyLib.Util.MyMetricsFormatter, MyLib" />
```

#### マップ
<a name="net-dg-config-ref-elements-map"></a>

`<map>` 要素は、.NET の型から DynamoDB のテーブルへのマッピングのコレクション内の 1 つの項目を表します (`TypeMapping` の `Amazon.AWSConfigs.DynamoDBConfig.Context.TypeMappings` プロパティから AWS SDK for .NET クラスのインスタンスにマッピングされます)。詳細については、「[Enhancements to the DynamoDB SDK](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK)」を参照してください。

この要素は次の属性を含むことができます:

** `targetTable` **  
マッピングが適用される DynamoDB のテーブルです。この属性は、`Amazon.Util.TypeMapping.TargetTable` の AWS SDK for .NET プロパティにマッピングされます。

** `type` **  
マッピングが適用される型とアセンブリ名です この属性は、`Amazon.Util.TypeMapping.Type` の AWS SDK for .NET プロパティにマッピングされます。

`<map>` 要素の親は、`<dynamoDBContext>` 要素です。

`<map>` 要素は、`<property>` 子要素の 1 つまたは複数のインスタンスを含むことができます。

次に `<map>` 要素の使用例を示します。

```
<map
  type="SampleApp.Models.Movie, SampleDLL"
  targetTable="Movies">
  <!-- ... -->
</map>
```

#### property
<a name="net-dg-config-ref-elements-property"></a>

`<property>` 要素は DynamoDB のプロパティを表します。(この要素は、AWS SDK for .NET の `AddProperty` メソッドから Amazon.Util.PropertyConfig クラスのインスタンスにマッピングされます) 詳細については、「[DynamoDB SDK の機能強化](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK)」および「[DynamoDB の属性](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DeclarativeTagsList.html)」を参照してください。

この要素は次の属性を含むことができます:

** `attribute` **  
範囲キーの名前など、プロパティの属性の名前です。この属性は、`Amazon.Util.PropertyConfig.Attribute` の AWS SDK for .NET プロパティにマッピングされます。

** `converter` **  
このプロパティに使用する必要があるコンバーターの種類です この属性は、`Amazon.Util.PropertyConfig.Converter` の AWS SDK for .NET プロパティにマッピングされます。

** `ignore` **  
関連付けられているプロパティを無視する必要があるか (true)、またはないか (false) を示します。この属性は、`Amazon.Util.PropertyConfig.Ignore` の AWS SDK for .NET プロパティにマッピングされます。

** `name` **  
プロパティの名前。この属性は、`Amazon.Util.PropertyConfig.Name` の AWS SDK for .NET プロパティにマッピングされます。

** `version` **  
このプロパティが項目のバージョン番号を格納する必要があるか (true)、またはないか (false) を示します。この属性は、`Amazon.Util.PropertyConfig.Version` の AWS SDK for .NET プロパティにマッピングされます。

`<property>` 要素の親は、`<map>` 要素です。

`<property>` 要素には子要素は含まれません。

次に `<property>` 要素の使用例を示します。

```
<property
  name="Rating"
  converter="SampleApp.Models.RatingConverter, SampleDLL" />
```

#### proxy
<a name="net-dg-config-ref-elements-proxy"></a>

`<proxy>` 要素は、AWS SDK for .NET で使用するプロキシの設定を表します。この要素は次の属性を含むことができます:

**ホスト**  
プロキシサーバーのホスト名または IP アドレスです この属性は、`Amazon.Util.ProxyConfig.Host` の `Amazon.AWSConfigs.ProxyConfig.Host` プロパティから AWS SDK for .NET プロパティにマッピングされます。

**password**  
プロキシサーバーで認証するためのパスワードです。この属性は、`Amazon.Util.ProxyConfig.Password` の `Amazon.AWSConfigs.ProxyConfig.Password` プロパティから AWS SDK for .NET プロパティにマッピングされます。

**ポート**  
プロキシのポート番号です。この属性は、`Amazon.Util.ProxyConfig.Port` の `Amazon.AWSConfigs.ProxyConfig.Port` プロパティから AWS SDK for .NET プロパティにマッピングされます。

**username**  
プロキシサーバーで認証するユーザー名です。この属性は、`Amazon.Util.ProxyConfig.Username` の `Amazon.AWSConfigs.ProxyConfig.Username` プロパティから AWS SDK for .NET プロパティにマッピングされます。

`<proxy>` 要素の親は、`<aws>` 要素です。

`<proxy>` 要素には子要素は含まれません。

次に `<proxy>` 要素の使用例を示します。

```
<proxy
  host="192.0.2.0"
  port="1234"
  username="My-Username-Here"
  password="My-Password-Here" />
```

#### s3
<a name="net-dg-config-ref-elements-s3"></a>

`<s3>` 要素は、Amazon S3 の設定のコレクションを表します。この要素は、*useSignatureVersion4* 属性を含むことができます。この属性は、署名バージョン 4 の署名をすべての要求に対して使用すること (true)、または署名バージョン 4 の署名をすべての要求に対して使用しないこと (false、デフォルト) を指定します。この属性は、`Amazon.AWSConfigs.S3Config.UseSignatureVersion4` の AWS SDK for .NET プロパティにマッピングされます。

`<s3>` 要素の親は、`<aws>` 要素です。

`<s3>` 要素には子要素は含まれません。

次に `<s3>` 要素の使用例を示します。

```
<s3 useSignatureVersion4="true" />
```