

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

# サービスクライアントを作成する
<a name="creating-clients"></a>

にリクエストを行うには AWS のサービス、まずそのサービスのクライアントをインスタンス化する必要があります。

使用する HTTP クライアント、ログ記録レベル、再試行設定など、サービスクライアントの共通設定を設定できます。さらに、各サービスクライアントには、 AWS リージョン と認証情報プロバイダーが必要です。SDK はこれらの値を使用して、正しいリージョンにリクエストを送信し、正しい認証情報を使用してリクエストに署名します。

これらの値はコード内でプログラムによって指定することも、環境から自動的にロードされるようにすることもできます。

## コードでクライアントを設定する
<a name="programmatic-config"></a>

特定の値でサービスクライアントを設定するには、次のスニペットに示すように、サービスクライアントファクトリメソッドに渡される Lambda 関数で指定できます。

```
val dynamoDbClient = DynamoDbClient {
    region = "us-east-1"
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

設定ブロックで指定しない値は、デフォルトに設定されます。たとえば、前のコードのように認証情報プロバイダーを指定しない場合、認証情報プロバイダーはデフォルトで[デフォルトの認証情報プロバイダーチェーン](credential-providers.md#default-credential-provider-chain)になります。

**警告**  
などの一部のプロパティにはデフォルト`region`がありません。プログラムによる設定を使用する場合は、設定ブロックで明示的に指定する必要があります。SDK が プロパティを解決できない場合、API リクエストが失敗する可能性があります。

## 環境からクライアントを設定する
<a name="loading-from-the-environment"></a>

サービスクライアントを作成すると、SDK は現在の実行環境内の場所を検査し、いくつかの設定プロパティを判断できます。これらの場所には、[共有設定ファイルと認証情報ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)、[環境変数](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)、[JVM システムプロパティ](https://docs.aws.amazon.com/sdkref/latest/guide/jvm-system-properties.html)が含まれます。解決できるプロパティには、[AWS リージョン](region-selection.md)、[再試行戦略](retries.md)、[ログモード](logging.md#sdk-log-mode)などがあります。SDK が実行環境から解決できるすべての設定の詳細については、[AWS SDKs](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html)」を参照してください。

環境ソース設定でクライアントを作成するには、サービスクライアントインターフェイス`suspend fun fromEnvironment()`で静的メソッドを使用します。

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
```

この方法でクライアントを作成すると、Amazon EC2 で を実行する場合 AWS Lambdaや、サービスクライアントの設定を環境から利用できるその他のコンテキストで実行する場合に便利です。これにより、コードが実行中の環境から切り離され、コードを変更せずにアプリケーションを複数のリージョンにデプロイすることが容易になります。

さらに、Lambda ブロックを に渡すことで、特定のプロパティを上書きできます`fromEnvironment`。次の例では、環境 (リージョンなど) からいくつかの設定プロパティをロードしますが、特にプロファイルから認証情報を使用するように認証情報プロバイダーを上書きします。

```
val dynamoDbClient = DynamoDbClient.fromEnvironment { 
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

SDK は、プログラム設定または環境から決定できない設定プロパティにデフォルト値を使用します。たとえば、コードまたは環境設定で認証情報プロバイダーを指定しない場合、認証情報プロバイダーはデフォルトで[デフォルトの認証情報プロバイダーチェーン](credential-providers.md#default-credential-provider-chain)になります。

**警告**  
リージョンなどの一部のプロパティにはデフォルトがありません。環境設定で指定するか、設定ブロックで明示的に指定する必要があります。SDK が プロパティを解決できない場合、API リクエストが失敗する可能性があります。

**注記**  
一時的なアクセスキーや SSO 設定などの認証情報関連のプロパティは実行環境で確認できますが、値は作成時にクライアントによって取得されません。代わりに、値はリクエストごとに認証情報プロバイダーレイヤーによってアクセスされます。

## クライアントを閉じる
<a name="closing-the-client"></a>

サービスクライアントが不要になった場合は、サービスクライアントを閉じて、使用しているリソースを解放します。

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
// Invoke several DynamoDB operations.
dynamoDbClient.close()
```

サービスクライアントは[https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html)インターフェイスを拡張するため、次のスニペットに示すように、 [https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html)拡張機能を使用してブロックの最後にクライアントを自動的に閉じることができます。

```
DynamoDbClient.fromEnvironment().use { dynamoDbClient ->
    // Invoke several DynamoDB operations.
}
```

前の例では、Lambda ブロックは、先ほど作成されたクライアントへの参照を受け取ります。このクライアントリファレンスでオペレーションを呼び出すことができ、例外をスローするなどしてブロックが完了すると、クライアントは閉じられます。