

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

# リクエストを発行する
<a name="making-requests"></a>

サービスクライアントを使用して にリクエストを行います AWS のサービス。 AWS SDK for Kotlin は、リクエストを作成するための[型セーフビルダー](https://kotlinlang.org/docs/type-safe-builders.html)パターンに従ってドメイン固有の言語 (DSLs) を提供します。ネストされたリクエスト構造には、DSLs からもアクセスできます。

次の例は、Amazon DynamoDB [createTable](https://docs.aws.amazon.com/sdk-for-kotlin/api/latest/dynamodb/aws.sdk.kotlin.services.dynamodb/create-table.html) オペレーション入力を作成する方法を示しています。

```
val ddb = DynamoDbClient.fromEnvironment()

val req = CreateTableRequest {
    tableName = name
    keySchema = listOf(
        KeySchemaElement {
            attributeName = "year"
            keyType = KeyType.Hash
        },
        KeySchemaElement {
            attributeName = "title"
            keyType = KeyType.Range
        }
    )

    attributeDefinitions = listOf(
        AttributeDefinition {
            attributeName = "year"
            attributeType = ScalarAttributeType.N
        },
        AttributeDefinition {
            attributeName = "title"
            attributeType = ScalarAttributeType.S
        }
    )
    
    // You can configure the `provisionedThroughput` member
    // by using the `ProvisionedThroughput.Builder` directly:
    provisionedThroughput {
        readCapacityUnits = 10
        writeCapacityUnits = 10
    }
}

val resp = ddb.createTable(req)
```

## サービスインターフェイスの DSL オーバーロード
<a name="service-interface-dsl-overloads"></a>

サービスクライアントインターフェイスの各非ストリーミングオペレーションには DSL オーバーロードがあるため、個別のリクエストを作成する必要はありません。

オーバーロードされた関数を使用して Amazon Simple Storage Service (Amazon S3) バケットを作成する例:

```
s3Client.createBucket {    // this: CreateBucketRequest.Builder
    bucket = newBucketName
}
```

これは次に相当します:

```
val request = CreateBucketRequest {    // this: CreateBucketRequest.Builder 
    bucket = newBucketName 
}

s3client.createBucket(request)
```

## 入力を必要としないリクエスト
<a name="requests-no-required-inputs"></a>

必要な入力がないオペレーションは、リクエストオブジェクトを渡すことなく呼び出すことができます。これは多くの場合、Amazon S3 API オペレーションなどのリストタイプのオペレーションで可能です。 `listBuckets`

 たとえば、次の 3 つのステートメントは同等です。

```
s3Client.listBuckets(ListBucketsRequest {
  // Construct the request object directly.
})
s3Client.listBuckets {
  // DSL builder without explicitly setting any arguments.
}
s3Client.listBuckets()
```