

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

# Amazon MSK Provisioned 設定
<a name="msk-configuration"></a>

Amazon MSK は、ブローカー、トピック、および メタデータ ノードのデフォルト設定を提供します。また、カスタム設定を作成し、それらを使用して新しい MSK クラスターを作成したり、既存のクラスターを更新することもできます。MSK 設定は、一連のプロパティとそれに対応する値で構成されます。クラスターで使用するブローカーの種類に応じて、設定のデフォルト値が異なり、変更可能な設定項目も異なります。標準ブローカーおよび Express ブローカーの設定方法の詳細については、以下のセクションを参照してください。

**Topics**
+ [標準ブローカーの設定](msk-configuration-standard.md)
+ [Express ブローカー設定](msk-configuration-express.md)
+ [ブローカー設定オペレーション](msk-configuration-operations.md)

# 標準ブローカーの設定
<a name="msk-configuration-standard"></a>

このセクションでは、標準ブローカーの設定プロパティについて説明します。

**Topics**
+ [カスタム Amazon MSK 設定](msk-configuration-properties.md)
+ [デフォルト Amazon MSK 設定](msk-default-configuration.md)
+ [Amazon MSK 階層型ストレージのトピックレベル設定に関するガイドライン](msk-guidelines-tiered-storage-topic-level-config.md)

# カスタム Amazon MSK 設定
<a name="msk-configuration-properties"></a>

Amazon MSK を使用してカスタム MSK 構成を作成し、以下の Apache Kafka 構成プロパティを設定できます。明示的に設定しないプロパティは、[デフォルト Amazon MSK 設定](msk-default-configuration.md) にある値を取得します。設定プロパティの詳細については、「[Apache Kafka の設定](https://kafka.apache.org/documentation/#configuration)」を参照してください。


| 名前 | 説明 | 
| --- | --- | 
| allow.everyone.if.no.acl.found | このプロパティを false に設定する場合は、最初に、クラスターに対して Apache Kafka ACL を定義する必要があります。最初に Apache Kafka ACL を定義せずにこのプロパティを false に設定すると、クラスターにアクセスできなくなります。その場合は、設定を再度更新し、このプロパティを true に設定することで、クラスターへのアクセスを回復できます。 | 
| auto.create.topics.enable | サーバーでトピックの自動作成を有効にします。 | 
| compression.type | 特定のトピックの最終的な圧縮タイプ。このプロパティは、スタンダードの圧縮コーデック (gzip、snappy、lz4、および zstd) に設定できます。また、uncompressed に設定することもできます。この値は、圧縮しないことと同等です。値を producer に設定すると、プロデューサーが設定した元の圧縮コーデックが保持されます。 | 
|  connections.max.idle.ms  | アイドル接続のタイムアウト (ミリ秒単位)。サーバーソケットプロセッサスレッドは、接続のアイドル状態がこのプロパティに対して設定されている値を超えると、その接続を閉じます。 | 
| default.replication.factor | 自動的に作成されるトピックのデフォルトのレプリケーション係数。 | 
| delete.topic.enable | トピックの削除オペレーションを有効にします。この設定をオフにすると、管理ツールからトピックを削除することができません。 | 
| group.initial.rebalance.delay.ms | グループコーディネーターが、最初の再調整を実行する前に、新しいグループに追加のデータコンシューマーが参加するのを待機する時間。遅延を長くすると再調整を減らせる可能性がありますが、処理が開始されるまでの時間が長くなります。 | 
| group.max.session.timeout.ms | 登録されたコンシューマーの最大セッションタイムアウト。タイムアウトを長くすると、コンシューマーはハートビート間でより多くの時間をメッセージの処理に使用できるようになりますが、その代償として、障害検出に要する時間が長くなります。 | 
| group.min.session.timeout.ms | 登録されたコンシューマーの最小セッションタイムアウト。タイムアウトを短くすると、障害検出までの時間が短縮される一方で、より頻繁にコンシューマーのハートビートが発生するようになります。これにより、ブローカーリソースが圧迫される可能性があります。 | 
| leader.imbalance.per.broker.percentage | ブローカーごとに許容されるリーダーの不均衡率。ブローカーごとにこの値を超えると、コントローラーはリーダーバランスをトリガーします。この値はパーセントで指定されます。 | 
| log.cleaner.delete.retention.ms | Apache Kafka が削除されたレコードを保持する時間。最小値は 0 です。 | 
| log.cleaner.min.cleanable.ratio |  この設定プロパティには、0 から 1 までの値を指定できます。この値は、ログコンパクターがログのクリーニングを試行する頻度を決定します (ログ圧縮が有効になっている場合)。デフォルトでは、Apache Kafka は、ログの 50％ 以上が圧縮されている場合は、そのログのクリーニングを回避します。この比率は、ログで重複によって浪費される最大スペースを制限します (50％ の場合、ログの最大 50％ が重複である可能性があることを意味します)。比率が高いほど、クリーニングは少なく、効率的ですが、ログ内の無駄なスペースが多くなります。  | 
| log.cleanup.policy | 保存ウィンドウ外のセグメントのデフォルトのクリーンアップポリシー。カンマ区切りの有効なポリシーのリスト。有効なポリシーは delete および compact です。階層型ストレージに対応したクラスターの場合、有効なポリシーは delete のみです。 | 
| log.flush.interval.messages | メッセージがディスクにフラッシュされるまでにログパーティションに蓄積されるメッセージの数。 | 
| log.flush.interval.ms | トピック内のメッセージがディスクにフラッシュされるまでにメモリに保持される最大時間 (ミリ秒単位)。この値を設定しない場合、log.flush.Scheduler.interval.ms の値が使用されます。最小値は 0 です。 | 
| log.message.timestamp.difference.max.ms | この設定は Kafka 3.6.0 では廃止されました。log.message.timestamp.before.max.ms および log.message.timestamp.after.max.ms の 2 つの設定が追加されました。ブローカーがメッセージを受信したときのタイムスタンプと、メッセージで指定されたタイムスタンプとの間の最大時間差。log.message.timestamp.type=CreateTime の場合、タイムスタンプの差がこのしきい値を超えると、メッセージは拒否されます。log.message.timestamp.type = LogAppendTime の場合、この設定は無視されます。 | 
| log.message.timestamp.type | メッセージ内のタイムスタンプがメッセージの作成時刻であるか、ログの追加時刻であるかを指定します。指定できる値は、CreateTime および LogAppendTime です。 | 
| log.retention.bytes | 削除する前のログの最大サイズ。 | 
| log.retention.hours | log.retention.ms プロパティの 3 次である、ログファイルを削除する前に保持する時間数。 | 
| log.retention.minutes | log.retention.ms プロパティに対してセカンダリである、ログファイルを削除する前に保持する時間 (分)。この値を設定しない場合、log.retention.hours の値が使用されます。 | 
| log.retention.ms | ログファイルを削除する前に保持するミリ秒数 (ミリ秒単位)。設定されていない場合は、log.retention.minutes の値が使用されます。 | 
| log.roll.ms | 新しいログセグメントがロールアウトされるまでの最大時間 (ミリ秒単位)。このプロパティを設定しない場合は、log.roll.hours の値が使用されます。このプロパティの可能な最小値は 1 です。 | 
| log.segment.bytes | 1 つのログファイルの最大サイズ。 | 
| max.incremental.fetch.session.cache.slots | 維持される増分取得セッションの最大数。 | 
| message.max.bytes |  Kafka が許容する最大レコードバッチサイズ。この値を増やし、0.10.2 より古いコンシューマーが存在する場合、コンシューマーの取得サイズも増やして、この大きさのレコードバッチを取得できるようにする必要があります。 最新のメッセージ形式バージョンでは、効率を上げるために、常にメッセージがバッチにグループ化されます。以前のメッセージ形式バージョンでは、非圧縮レコードはバッチにグループ化されません。その場合、この制限は単一のレコードにのみ適用されます。 この値は、トピックレベルの max.message.bytes 設定を使用して、トピックごとに設定できます。  | 
| min.insync.replicas |  プロデューサーが acks を `"all"` (または `"-1"`) に設定した場合、min.insync.replicas の値は書き込みが成功したと見なされるために書き込みを確認する必要があるレプリカの最小数を指定します。この最小値を満たせない場合、プロデューサーは例外 (NotEnoughReplicas、または NotEnoughReplicasAfterAppend) を発生させます。 min.insync.replicas と acks の値を使用すると、より高い耐久性を保証できます。例えば、レプリケーション係数が 3 のトピックを作成し、min.insync.replicas を 2 に設定して、acks を `"all"` に設定して生成するとします。これにより、大部分のレプリカが書き込みを受け取らない場合、プロデューサーが例外を発生させることができます。  | 
| num.io.threads | サーバーがリクエストを処理するために使用するスレッドの数。これにはディスク I/O が含まれる場合があります。 | 
| num.network.threads | サーバーがネットワークからリクエストを受信し、ネットワークにレスポンスを送信するために使用するスレッドの数。 | 
| num.partitions | トピックごとのログパーティションのデフォルト数。 | 
| num.recovery.threads.per.data.dir | スタートアップ時にログを復元し、シャットダウン時にログをフラッシュするために使用されるデータディレクトリごとのスレッド数。 | 
| num.replica.fetchers | ソースブローカーからのメッセージのレプリケートに使用されるフェッチャースレッドの数。この値を大きくすると、フォロワーブローカーでの I/O 並列処理の度合いが高くなります。 | 
| offsets.retention.minutes | コンシューマーグループがすべてのコンシューマーを失う (つまり、空になる) と、オフセットはこの保持期間にわたって保持されてから破棄されます。スタンドアロンのコンシューマー (手動割り当てを使用するコンシューマー) の場合、オフセットは、最後のコミットの時刻にこの保持期間を足した時刻に有効期限切れになります。 | 
| offsets.topic.replication.factor | オフセットトピックのレプリケーション係数。可用性を確保するには、この値を高く設定します。内部トピックの作成は、クラスターサイズがこのレプリケーション係数の要件を満たすまで失敗します。 | 
| replica.fetch.max.bytes | パーティションごとに取得しようとするメッセージのバイト数。これは絶対最大値ではありません。フェッチの空でない最初のパーティションの最初のレコードバッチがこの値より大きい場合、進行を保証するためにそのレコードバッチが返されます。message.max.bytes (ブローカー設定) または max.message.bytes (トピック設定) は、ブローカーが受け入れる最大レコードバッチサイズを定義します。 | 
| replica.fetch.response.max.bytes | フェッチレスポンス全体に対して予想される最大バイト数。レコードはバッチでフェッチされます。また、フェッチの空でない最初のパーティションの最初のレコードバッチがこの値より大きい場合、進行を保証するためにそのレコードバッチが引き続き返されます。これは絶対最大値ではありません。message.max.bytes (ブローカー設定) または max.message.bytes (トピック設定) プロパティは、ブローカーが受け付ける最大レコードバッチサイズを指定します。 | 
| replica.lag.time.max.ms | フォロワーがフェッチリクエストを送信していないか、またはリーダーのログ終了オフセットまでこのミリ秒数以上消費されていない場合、リーダーはフォロワーを ISR から削除します。MinValue: 10000MaxValue = 30000 | 
| replica.selector.class | ReplicaSelector を実装する完全修飾クラス名。ブローカーは、この値を使用して優先リードレプリカを見つけます。Apache Kafka バージョン 2.4.1 以降を使用していて、コンシューマーが最も近いレプリカからフェッチできるようにする場合は、このプロパティを org.apache.kafka.common.replica.RackAwareReplicaSelector に設定します。詳細については、「[Apache Kafka バージョン 2.4.1 (代わりに 2.4.1.1 を使用)](supported-kafka-versions.md#2.4.1)」を参照してください。 | 
| replica.socket.receive.buffer.bytes | ネットワークリクエスト用のソケット受信バッファ。 | 
| socket.receive.buffer.bytes | ソケットサーバーソケットの SO\$1RCVBUF バッファー。このプロパティに設定できる最小値は -1 です。値が -1 の場合、Amazon MSK は OS のデフォルトを使用します。 | 
| socket.request.max.bytes | ソケットリクエストの最大バイト数。 | 
| socket.send.buffer.bytes | ソケットサーバーソケットの SO\$1SNDBUF バッファー。このプロパティに設定できる最小値は -1 です。値が -1 の場合、Amazon MSK は OS のデフォルトを使用します。 | 
| transaction.max.timeout.ms | トランザクションの最大タイムアウト。クライアントのリクエストしたトランザクション時間がこの値を超えると、ブローカーは InitProducerIdRequest でエラーを返します。これにより、クライアントが大きすぎるタイムアウトを設定するのを防ぎ、トランザクションに含まれるトピックから読み取りを行うコンシューマーが停止するのを回避することができます。 | 
| transaction.state.log.min.isr | トランザクショントピックに対してオーバーライドされる min.insync.replicas 設定。 | 
| transaction.state.log.replication.factor | トランザクショントピックのレプリケーション係数。このプロパティに高い値を設定すると、可用性が向上します。内部トピックの作成は、クラスターサイズがこのレプリケーション係数の要件を満たすまで失敗します。 | 
| transactional.id.expiration.ms | トランザクションコーディネーターが、トランザクション ID を有効期限切れにする前に、現在のトランザクションのトランザクションステータスの更新の受信を待機する時間 (ミリ秒単位)。この設定は、プロデューサー ID の有効期限切れにも影響します。これは、プロデューサー ID の有効期限は、指定されたプロデューサー ID での最後の書き込みからこの時間が経過すると切れるためです。トピックの保持設定が原因でプロデューサー ID からの最後の書き込みが削除された場合、プロデューサー ID の有効期限切れが早くなる可能性があります。このプロパティの最小値は 1 ミリ秒です。 | 
| unclean.leader.election.enable | ISR セットに含まれていないレプリカを、データ損失の可能性がある場合でも、最終手段として、リーダーとして使用するかどうかを指定します。 | 
| zookeeper.connection.timeout.ms | ZooKeeper モードクラスター。クライアントが ZooKeeper への接続を確立するのを待機する最大時間。この値を設定しない場合、zookeeper.session.timeout.ms の値が使用されます。 MinValue = 6000 MaxValue = 18000 クラスターのダウンタイムを避けるため、T3.small では、この値を 10,000 に設定することをお勧めします。  | 
| zookeeper.session.timeout.ms |  ZooKeeper モードクラスター。Apache ZooKeeper セッションのタイムアウト (ミリ秒単位)。 MinValue = 6000 MaxValue = 18000  | 

カスタム MSK 設定を作成する方法、すべての設定を一覧表示する方法、または説明する方法については、「[ブローカー設定オペレーション](msk-configuration-operations.md)」を参照してください。カスタム MSK 設定を使用して MSK クラスターを作成したり、新しいカスタム設定でクラスターを更新したりするには、「[Amazon MSK の主な特徴および概念](operations.md)」を参照してください。

既存の MSK クラスターをカスタム MSK 設定で更新すると、Amazon MSK は、必要に応じてローリング再起動を実行し、顧客のダウンタイムを最小限に抑えるためのベストプラクティスを使用します。例えば、Amazon MSK は各ブローカーを再起動した後、次のブローカーに移動する前に、設定の更新中にブローカーが見逃した可能性のあるデータにブローカーがキャッチアップできるようにします。

## 動的 Amazon MSK 設定
<a name="msk-dynamic-confinguration"></a>

Amazon MSK が提供する設定プロパティに加えて、ブローカーの再起動を必要としないクラスターレベルおよびブローカーレベルの設定プロパティを動的に設定できます。一部の設定プロパティを動的に設定できます。Apache Kafka のドキュメントの「[Broker Configs](https://kafka.apache.org/documentation/#brokerconfigs)」の表で、読み取り専用としてマークされていないプロパティがこれに該当します。動的設定およびコマンド例については、Apache Kafka のドキュメントの「[Updating Broker Configs](https://kafka.apache.org/documentation/#dynamicbrokerconfigs)」を参照してください。

**注記**  
`advertised.listeners` プロパティは設定できますが、`listeners` プロパティは設定できません。

## トピックレベルの Amazon MSK 設定
<a name="msk-topic-confinguration"></a>

Apache Kafka コマンドを使用して、新規および既存のトピックのトピックレベルの設定プロパティを設定するか変更することができます。トピックレベルの設定プロパティの詳細と設定方法の例については、Apache Kafka のドキュメントの「[Topic-Level Configs](https://kafka.apache.org/documentation/#topicconfigs)」を参照してください。

# デフォルト Amazon MSK 設定
<a name="msk-default-configuration"></a>

MSK クラスターを作成し、カスタム MSK 設定を指定しない場合、Amazon MSK は、次の表に示す値を使用してデフォルト設定を作成および使用します。このテーブルにないプロパティの場合、Amazon MSK はご使用のバージョンの Apache Kafka に関連付けられているデフォルトを使用します。これらのデフォルト値のリストについては、[Apache Kafka の設定](https://kafka.apache.org/documentation/#configuration)を参照してください。


| 名前 | 説明 | 非階層型ストレージクラスターのデフォルト値 | 階層型ストレージ対応クラスターのデフォルト値 | 
| --- | --- | --- | --- | 
| allow.everyone.if.no.acl.found | 特定のリソースに一致するリソースパターンがない場合、リソースには ACL が関連付けられていません。この場合、このプロパティを true に設定すると、スーパーユーザーだけでなく、すべてのユーザーがリソースにアクセスできます。 | true | true | 
| auto.create.topics.enable | サーバー上のトピックの自動作成を有効にします。 | false | false | 
| auto.leader.rebalance.enable | 自動リーダーバランシングを有効にします。バックグラウンドスレッドは、必要に応じて一定の間隔でリーダーバランスをチェックして開始します。 | true | true | 
| default.replication.factor | 自動的に作成されるトピックのデフォルトのレプリケーション係数。 | 3 つのアベイラビリティーゾーン内のクラスターの場合は 3、2 つのアベイラビリティーゾーン内のクラスターの場合は 2。 | 3 つのアベイラビリティーゾーン内のクラスターの場合は 3、2 つのアベイラビリティーゾーン内のクラスターの場合は 2。 | 
|  local.retention.bytes  |  古いセグメントを削除する前の、パーティションのローカルログセグメントの最大サイズ。この値を設定しない場合、log.retention.bytes の値が使用されます。有効な値は、常に log.retention.bytes の値以下にする必要があります。デフォルト値 -2 は、ローカル保持に制限がないことを示します。これは、retention.ms/bytes 設定の -1 に相当します。local.retention.ms プロパティと local.retention.bytes プロパティは、ログセグメントをローカルストレージに保持する期間を決定するために使用されるという点で log.retention に似ています。既存の log.retention.\$1 設定は、トピックパーティションの保持設定です。これには、ローカルストレージとリモートストレージの両方が含まれます。有効な値: [-2; \$1Inf] の整数  | -2 は制限なし | -2 は制限なし | 
|  local.retention.ms  | 削除するまでローカルログセグメントを保持するミリ秒数。この値を設定しない場合、Amazon MSK は log.retention.ms の値を使用します。有効な値は、常に log.retention.bytes の値以下にする必要があります。デフォルト値 -2 は、ローカル保持に制限がないことを示します。これは、retention.ms/bytes 設定の -1 に相当します。local.retention.ms と local.retention.bytes の値は log.retention と似ています。MSK はこの設定を使用して、ログセグメントをローカルストレージに保持する期間を決定します。既存の log.retention.\$1 設定は、トピックパーティションの保持設定です。これには、ローカルストレージとリモートストレージの両方が含まれます。有効な値は 0 より大きい整数です。 | -2 は制限なし | -2 は制限なし | 
|  log.message.timestamp.difference.max.ms  | この設定は Kafka 3.6.0 では廃止されました。log.message.timestamp.before.max.ms および log.message.timestamp.after.max.ms の 2 つの設定が追加されました。ブローカーがメッセージを受信したときのタイムスタンプと、メッセージで指定されたタイムスタンプとの間に許容される最大差です。log.message.timestamp.type=CreateTime の場合、タイムスタンプの差がこのしきい値を超えると、メッセージは拒否されます。log.message.timestamp.type = LogAppendTime の場合、この設定は無視されます。不必要な頻度でのログローリングを避けるために、許容されるタイムスタンプの最大差は log.retention.ms 以下にする必要があります。 | 9223372036854775807 | Kafka 2.8.2. (階層型) および Kafka 3.7.x (階層型) の場合は 86400000。 | 
| log.segment.bytes | 1 つのログファイルの最大サイズ。 | 1073741824 | 134217728 | 
| min.insync.replicas |  プロデューサーが acks の値を `"all"` (または `"-1"`) に設定した場合、min.insync.replicas の値は書き込みが成功したと見なされるために書き込みを確認する必要があるレプリカの最小数を指定します。この値がこの最小値を満たしていない場合，プロデューサーは例外 (NotEnoughReplicas または NotEnoughReplicasAfterAppend) を発生させます。 min.insync.replicas と acks の値を組み合わせて使用すると、より高い耐久性を保証できます。例えば、レプリケーション係数が 3 のトピックを作成し、min.insync.replicas を 2 に設定して、acks を `"all"` に設定して生成するとします。これにより、大部分のレプリカが書き込みを受け取らない場合、プロデューサーが例外を発生させることができます。  | 3 つのアベイラビリティーゾーン内のクラスターの場合は 2、2 つのアベイラビリティーゾーン内のクラスターの場合は 1。 | 3 つのアベイラビリティーゾーン内のクラスターの場合は 2、2 つのアベイラビリティーゾーン内のクラスターの場合は 1。 | 
| num.io.threads | サーバーがリクエストを生成するために使用するスレッドの数。これにはディスク I/O が含まれる場合があります。 | 8 | max(8, vCPUs)。vCPUs はブローカーのインスタンスサイズによって異なります | 
| num.network.threads | サーバーがネットワークからリクエストを受信し、ネットワークにレスポンスを送信するために使用するスレッドの数。 | 5 | max(5, vCPUs / 2)。vCPUs はブローカーのインスタンスサイズによって異なります | 
| num.partitions | トピックごとのログパーティションのデフォルト数。 | 1 | 1 | 
| num.replica.fetchers | ソースブローカーからのメッセージをレプリケートするために使用されるフェッチャースレッドの数。この値を大きくすると、フォロワーブローカーの I/O 並列処理の度合いを上げることができます。 | 2 | max(2, vCPUs / 4)。vCPUs はブローカーのインスタンスサイズによって異なります | 
|  remote.log.msk.disable.policy  |  階層型ストレージを無効にする場合は、remote.storage.enable と一緒に使用します。remote.storage.enable を false に設定した場合に階層型ストレージ内のデータが削除されるようにするには、このポリシーを Delete に設定します。  | 該当なし | なし | 
| remote.log.reader.threads | リモートログリーダーのスレッドプールサイズ。リモートストレージからデータを取得するタスクをスケジュールする際に使用されます。 | 該当なし | max(10, vCPUs \$1 0.67)。vCPUs はブローカーのインスタンスサイズによって異なります | 
|  remote.storage.enable  | これを true に設定すると、トピックの階層型 (リモート) ストレージが有効になります。これを false に設定し、remote.log.msk.disable.policy が Delete に設定されている場合、トピックレベルの階層型ストレージが無効になります。階層型ストレージを無効にすると、リモートストレージからデータが削除されます。トピックの階層型ストレージを無効にすると、再度有効にすることはできません。 | false | false | 
| replica.lag.time.max.ms | フォロワーがフェッチリクエストを送信していないか、またはリーダーのログ終了オフセットまでこのミリ秒数以上消費されていない場合、リーダーはフォロワーを ISR から削除します。 | 30000 | 30000 | 
|  retention.ms  |  必須フィールド。最短期間は 3 日間です。設定は必須であるため、デフォルトはありません。 Amazon MSK は retention.ms 値と local.retention.ms を使用して、データがローカルから階層型ストレージに移動するタイミングを決定します。local.retention.ms 値は、データをローカルから階層型ストレージに移動するタイミングを指定します。retention.ms 値は、階層型ストレージからデータを削除する (つまり、クラスターから削除する) タイミングを指定します。有効な値: [-1; \$1Inf] の整数  | 最小 259,200,000 ミリ秒 (3 日間)。無期限に保持する場合は -1。 | 最小 259,200,000 ミリ秒 (3 日間)。無期限に保持する場合は -1。 | 
| socket.receive.buffer.bytes | ソケットサーバーソケットの SO\$1RCVBUF バッファー。値が -1 の場合、OS のデフォルトが使用されます。 | 102400 | 102400 | 
| socket.request.max.bytes | ソケットリクエストの最大バイト数。 | 104857600 | 104857600 | 
| socket.send.buffer.bytes | ソケットサーバーソケットの SO\$1SNDBUF バッファー。値が -1 の場合、OS のデフォルトが使用されます。 | 102400 | 102400 | 
| unclean.leader.election.enable | ISR セットに含まれていないレプリカを、データ損失の可能性がある場合でも、最終手段として、リーダーとして使用するかどうかを指定します。 | true | false | 
| zookeeper.session.timeout.ms |  Apache ZooKeeper セッションのタイムアウト (ミリ秒単位)。  | 18000 | 18000 | 
| zookeeper.set.acl | セキュア ACL を使用するようにクライアントを設定します。 | false | false | 

カスタム設定値の指定方法については、「[カスタム Amazon MSK 設定](msk-configuration-properties.md)」を参照してください。

# Amazon MSK 階層型ストレージのトピックレベル設定に関するガイドライン
<a name="msk-guidelines-tiered-storage-topic-level-config"></a>

階層型ストレージをトピックレベルで設定する場合のデフォルト設定と制限は次のとおりです。
+ Amazon MSK では、階層型ストレージが有効になっているトピックのログセグメントサイズを小さくすることはできません。セグメントを作成する場合、最小ログセグメントサイズは 48 MiB、または最小セグメントロール時間は 10 分です。これらの値は segment.bytes プロパティと segment.ms プロパティにマッピングされます。
+ local.retention.ms/bytes の値は、retention.ms/bytes より小さくする必要があります。これは階層型ストレージの保持設定です。
+ local.retention.ms/bytes のデフォルト値は -2 です。つまり、retention.ms の値が local.retention.ms/bytes に使用されます。この場合、データはローカルストレージと階層型ストレージの両方に残り (それぞれ 1 つのコピー)、同時に有効期限切れになります。このオプションでは、ローカルデータのコピーがリモートストレージに保持されます。この場合、消費トラフィックから読み取られるデータはローカルストレージから取得されます。
+ retention.ms のデフォルト値は 7 日間です。retention.bytes には、デフォルトサイズの制限はありません。
+ retention.ms/bytes の最小値は -1 です。これは、無期限に保持することを意味します。
+ local.retention.ms/bytes の最小値は -2 です。これは、ローカルストレージでは無期限に保持されることを意味します。これは、retention.ms/bytes を -1 に設定するのと同じです。
+ 階層型ストレージが有効になっているトピックには、トピックレベル設定の retention.ms が必須です。retention.ms の最小値は 3 日間です。

階層型ストレージの制約の詳細については、「[Amazon MSK クラスターの階層型ストレージの制約と制限](msk-tiered-storage.md#msk-tiered-storage-constraints)」を参照してください。

# Express ブローカー設定
<a name="msk-configuration-express"></a>

Apache Kafka には、MSK Provisioned のクラスターのパフォーマンスを調整するために使用できる数百のブローカー設定があります。誤った値または最適でない値を設定すると、クラスターの信頼性およびパフォーマンスに影響する可能性があります。Express ブローカーは、重要な設定に最適な値を設定し、一般的な設定ミスから保護することで、MSK Provisioned のクラスターの可用性と耐久性を向上させます。読み取りおよび書き込みアクセスに基づく設定には、以下の 3 つのカテゴリがあります。[読み取り / 書き込み (編集可能)](msk-configuration-express-read-write.md)、[読み取り専用](msk-configuration-express-read-only.md)、および読み取り不可 / 書き込み不可の設定です。一部の設定では、クラスターが実行されている Apache Kafka バージョンに対して Apache Kafka のデフォルト値が引き続き使用されます。それらを Apache Kafka のデフォルトとしてマークします。

**Topics**
+ [MSK Express のカスタムブローカー設定 (読み取り / 書き込みアクセス)](msk-configuration-express-read-write.md)
+ [Express ブローカーの読み取り専用設定](msk-configuration-express-read-only.md)

# MSK Express のカスタムブローカー設定 (読み取り / 書き込みアクセス)
<a name="msk-configuration-express-read-write"></a>

読み取り / 書き込みブローカーの設定は、Amazon MSK の[設定の更新機能](msk-update-cluster-config.md)を使用するか、Apache Kafka の AlterConfig API を使用して更新できます。Apache Kafka ブローカー設定は静的または動的のどちらか一方です。静的設定を適用するにはブローカーの再起動が必要ですが、動的設定にはブローカーの再起動は必要ありません。設定プロパティと更新モードの詳細については、「[ブローカー設定の更新](https://kafka.apache.org/documentation/#dynamicbrokerconfigs)」を参照してください。

**Topics**
+ [MSK Express ブローカーの静的設定](#msk-configuration-express-static-configuration)
+ [Express ブローカーの動的設定](#msk-configuration-express-dynamic-configuration)
+ [Express ブローカーのトピックレベルの設定](#msk-configuration-express-topic-configuration)

## MSK Express ブローカーの静的設定
<a name="msk-configuration-express-static-configuration"></a>

Amazon MSK を使用してカスタム MSK 設定ファイルを作成し、以下の静的プロパティを設定できます。Amazon MSK は、ユーザーが設定していないその他のすべてのプロパティを設定および管理します。静的設定ファイルは、MSK コンソールまたは [configurations コマンド](msk-configuration-operations-create.md)を使用して作成および更新できます。


| プロパティ | 説明 | デフォルト値 | 
| --- | --- | --- | 
|  allow.everyone.if.no.acl.found  |  このプロパティを false に設定する場合は、最初にクラスターに Apache Kafka ACL を定義していることを確認してください。事前に Apache Kafka ACL を定義していない場合、このプロパティを誤って設定すると、クラスターにアクセスできなくなります。その場合は、設定を再度更新し、このプロパティを正確に設定することで、クラスターへのアクセスを回復できます。  |  true  | 
|  auto.create.topics.enable  |  サーバー上のトピックの自動作成を有効にします。  |  false  | 
| compression.type |  特定のトピックに対する最終的な圧縮タイプを指定する。この設定では、標準の圧縮コーデックである gzip、snappy、lz4、zstd を受け入れます。 この設定では、さらに、圧縮なしと同等および「`producer`」の、生成元が設定した元の圧縮コーデックを保持する「`uncompressed`」も受け付けます。 | Apache Kafka のデフォルト | 
|  connections.max.idle.ms  |  アイドル接続のタイムアウト (ミリ秒単位)。サーバーソケットプロセッサスレッドは、接続のアイドル状態がこのプロパティに対して設定されている値を超えると、その接続を閉じます。  |  Apache Kafka のデフォルト  | 
|  delete.topic.enable  |  トピックの削除オペレーションを有効にします。この設定をオフにすると、管理ツールからトピックを削除することができません。  |  Apache Kafka のデフォルト  | 
|  group.initial.rebalance.delay.ms  |   グループコーディネーターが、最初の再調整を実行する前に、新しいグループに追加のデータコンシューマーが参加するのを待機する時間。遅延を長くすると再調整を減らせる可能性がありますが、処理が開始されるまでの時間が長くなります。  |  Apache Kafka のデフォルト  | 
|  group.max.session.timeout.ms  |  登録されたコンシューマーの最大セッションタイムアウト。タイムアウトを長くすると、コンシューマーはハートビート間でより多くの時間をメッセージの処理に使用できるようになりますが、その代償として、障害検出に要する時間が長くなります。  |  Apache Kafka のデフォルト  | 
|  leader.imbalance.per.broker.percentage  |  ブローカーごとに許容されるリーダーの不均衡率。ブローカーごとにこの値を超えると、コントローラーはリーダーバランスをトリガーします。この値はパーセントで指定されます。  |  Apache Kafka のデフォルト  | 
| log.cleanup.policy | 保存ウィンドウ外のセグメントのデフォルトのクリーンアップポリシー。カンマ区切りの有効なポリシーのリスト。有効なポリシーは delete および compact です。階層型ストレージに対応したクラスターの場合、有効なポリシーは、次の delete のみです。 | Apache Kafka のデフォルト | 
| log.message.timestamp.after.max.ms |  メッセージのタイムスタンプおよびブローカーのタイムスタンプの間の許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプと同じ、またはそれ以降であってもよく、その最大許容差はこの設定で指定された値によって決まります。 `log.message.timestamp.type=CreateTime` の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。`log.message.timestamp.type=LogAppendTime` の場合、この設定は無視されます。  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms、要するに 1 日) | 
| log.message.timestamp.before.max.ms |  ブローカーのタイムスタンプとメッセージタイムスタンプの許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプと同じ、またはそれ以前であってもよく、その最大許容差はこの設定で指定された値によって決まります。 `log.message.timestamp.type=CreateTime` の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。`log.message.timestamp.type=LogAppendTime` の場合、この設定は無視されます。  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms、要するに 1 日) | 
| log.message.timestamp.type | メッセージ内のタイムスタンプがメッセージの作成時刻であるか、ログの追加時刻であるかを指定します。指定できる値は、CreateTime および LogAppendTime です。 | Apache Kafka のデフォルト | 
| log.retention.bytes | 削除する前のログの最大サイズ。 | Apache Kafka のデフォルト | 
| log.retention.ms | ログファイルを削除する前に保持するミリ秒数。 | Apache Kafka のデフォルト | 
| max.connections.per.ip | 各 IP アドレスから許可される最大接続数。これは、max.connections.per.ip.overrides プロパティを使用してオーバーライドが設定されている場合、0 に設定できます。制限値に達した場合、その IP アドレスからの新規接続は切断されます。 | Apache Kafka のデフォルト | 
|  max.incremental.fetch.session.cache.slots  |  維持される増分取得セッションの最大数。  |  Apache Kafka のデフォルト  | 
| message.max.bytes |  Kafka が許容する最大レコードバッチサイズ。この値を増やし、0.10.2 より古いコンシューマーが存在する場合、コンシューマーの取得サイズも増やして、この大きさのレコードバッチを取得できるようにする必要があります。 最新のメッセージ形式バージョンでは、効率を上げるために、常にメッセージがバッチにグループ化されます。以前のメッセージ形式バージョンでは、非圧縮レコードはバッチにグループ化されません。その場合、この制限は単一のレコードにのみ適用されます。トピックレベル `max.message.bytes` の設定により、この値をトピックごとに設定できます。  | Apache Kafka のデフォルト | 
|  num.partitions  |  各トピックに対するデフォルトのパーティション数。  |  1  | 
|  offsets.retention.minutes  |  コンシューマーグループがすべてのコンシューマーを失う (つまり、空になる) と、オフセットはこの保持期間にわたって保持されてから破棄されます。スタンドアロンの消費者 (手動割り当てを使用するコンシューマー) の場合、オフセットは、最後のコミットの時刻に、この保持期間を加えた時刻に有効期限切れになります。  |  Apache Kafka のデフォルト  | 
|  replica.fetch.max.bytes  |  パーティションごとに取得しようとするメッセージのバイト数。これは絶対最大値ではありません。フェッチの空でない最初のパーティションの最初のレコードバッチがこの値より大きい場合、進行を保証するためにそのレコードバッチが返されます。message.max.bytes (ブローカー設定) または max.message.bytes (トピック設定) は、ブローカーが受け入れる最大レコードバッチサイズを定義します。  |  Apache Kafka のデフォルト  | 
|  replica.selector.class  |  ReplicaSelector を実装する完全修飾クラス名。ブローカーは、この値を使用して優先リードレプリカを見つけます。消費者が最も近いレプリカから取得できるようにするには、このプロパティ`org.apache.kafka.common.replica.RackAwareReplicaSelector`を設定してください。  |  Apache Kafka のデフォルト  | 
|  socket.receive.buffer.bytes  |  ソケットサーバーソケットの SO\$1RCVBUF バッファー。値が -1 の場合、OS のデフォルトが使用されます。  |  102400  | 
|  socket.request.max.bytes  |  ソケットリクエストの最大バイト数。  |  104857600  | 
|  socket.send.buffer.bytes  |  ソケットサーバーソケットの SO\$1SNDBUF バッファー。値が -1 の場合、OS のデフォルトが使用されます。  |  102400  | 
|  transaction.max.timeout.ms  |  トランザクションの最大タイムアウト。クライアントのリクエストしたトランザクション時間がこの値を超えると、ブローカーは InitProducerIdRequest でエラーを返します。これにより、クライアントが大きすぎるタイムアウトを設定するのを防ぎ、トランザクションに含まれるトピックから読み取りを行うコンシューマーが停止するのを回避することができます。  |  Apache Kafka のデフォルト  | 
|  transactional.id.expiration.ms  |  トランザクションコーディネーターが、トランザクション ID を有効期限切れにする前に、現在のトランザクションのトランザクションステータスの更新の受信を待機する時間 (ミリ秒単位)。この設定は、プロデューサー ID の有効期限にも影響します。これは、指定されたプロデューサー ID の有効期限は、指定されたプロデューサー ID での最後の書き込みからこの時間が経過すると切れるためです。トピックの保持設定が原因でプロデューサー ID からの最後の書き込みが削除された場合、プロデューサー ID の有効期限切れが早くなる可能性があります。このプロパティの最小値は 1 ミリ秒です。  |  Apache Kafka のデフォルト  | 

## Express ブローカーの動的設定
<a name="msk-configuration-express-dynamic-configuration"></a>

Apache Kafka AlterConfig API または Kafka-configs.sh ツールを使用して、次の動的設定を編集できます。Amazon MSK は、ユーザーが設定していないその他のすべてのプロパティを設定および管理します。ブローカーの再起動を必要としない クラスター-レベルおよびブローカーレベルの設定プロパティを動的に設定できます。


| プロパティ | 説明 | デフォルトの値 | 
| --- | --- | --- | 
|  advertised.listeners  |  `listeners` 設定プロパティと異なる場合、クライアントが使用するためのリスナーを公開します。IaaS 環境では、これはブローカーがバインドするインターフェイスとは異なる必要がある場合があります。これを設定しない場合、リスナー の値が使用されます。リスナーとは異なり、0.0.0.0 のメタアドレスを advertise (公開) として指定することはできません。 また、`listeners` とは異なり、このプロパティでは ポート番号の重複が許可されており、その結果、あるリスナーが別のリスナーのアドレスを advertise (公開) するように設定することができます。外部ロードバランサーが使用されている場合、これが有用な場合があります。 このプロパティはブローカーごとに設定されます。  |  null  | 
|  compression.type  |  特定のトピックの最終的な圧縮タイプ。このプロパティは、スタンダードの圧縮コーデック (`gzip`、`snappy`、`lz4`、および `zstd`) に設定できます。また、`uncompressed` に設定することもできます。この値は、圧縮しないことと同等です。値を `producer` に設定すると、プロデューサーが設定した元の圧縮コーデックが保持されます。  | Apache Kafka のデフォルト | 
| log.cleaner.delete.retention.ms | ログ圧縮が有効なトピックにおいて、削除用トゥームストーンマーカーを保持する期間。この設定は、コンシューマーがオフセット 0 から読み取りを開始した場合に、最終状態の有効なスナップショットを取得するために、読み取りを完了しなければならない時間の上限も定めます。そうしないと、スキャンが完了する前に削除用トゥームストーンが収集される場合があります。 | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms、要するに 1 日)、Apache Kafka デフォルト | 
| log.cleaner.min.compaction.lag.ms | ログ内でメッセージが圧縮されずに保持される最小時間。この設定は、圧縮処理中のログにのみ適用されます。 | 0、Apache Kafka デフォルト | 
| log.cleaner.max.compaction.lag.ms | ログ内でメッセージが圧縮対象外のままとなる最大時間。この設定は、圧縮処理中のログにのみ適用されます。この設定は、[7日間、Long.Max] の範囲に制限されます。 | 9223372036854775807、Apache Kafka デフォルト | 
|  log.cleanup.policy  |  保存ウィンドウ外のセグメントのデフォルトのクリーンアップポリシー。カンマ区切りの有効なポリシーのリスト。有効なポリシーは `delete` および `compact` です。階層型ストレージに対応したクラスターの場合、有効なポリシーは、次の `delete` のみです。  | Apache Kafka のデフォルト | 
|  log.message.timestamp.after.max.ms  |  メッセージのタイムスタンプおよびブローカーのタイムスタンプの間の許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプと同じ、またはそれ以降であってもよく、その最大許容差はこの設定で指定された値によって決まります。`log.message.timestamp.type=CreateTime` の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。`log.message.timestamp.type=LogAppendTime` の場合、この設定は無視されます。  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms、要するに 1 日) | 
|  log.message.timestamp.before.max.ms  |  ブローカーのタイムスタンプとメッセージタイムスタンプの許容されるタイムスタンプの差。メッセージのタイムスタンプはブローカーのタイムスタンプと同じ、またはそれ以前であってもよく、その最大許容差はこの設定で指定された値によって決まります。`log.message.timestamp.type=CreateTime` の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。`log.message.timestamp.type=LogAppendTime` の場合、この設定は無視されます。  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms、要するに 1 日) | 
|  log.message.timestamp.type  |  メッセージ内のタイムスタンプがメッセージの作成時刻であるか、ログの追加時刻であるかを指定します。指定できる値は、`CreateTime` および `LogAppendTime` です。  | Apache Kafka のデフォルト | 
|  log.retention.bytes  |  削除する前のログの最大サイズ。  |  Apache Kafka のデフォルト  | 
|  log.retention.ms  |  ログファイルを削除する前に保持するミリ秒数。  |  Apache Kafka のデフォルト  | 
|  max.connection.creation.rate  |  ブローカーでいつでも許可される最大接続作成レート。  |  Apache Kafka のデフォルト  | 
|  max.connections  |  ブローカーで同時に許可される接続の最大数。この制限は、`max.connections.per.ip` を使用して設定された IP ごとの制限に加えて適用されます。  |  Apache Kafka のデフォルト  | 
|  max.connections.per.ip  |  各 IP アドレスから許可される最大接続数。これは、max.connections.per.ip.overrides プロパティを使用してオーバーライドが設定されている場合、`0` に設定できます。制限値に達した場合、その IP アドレスからの新規接続は切断されます。  |  Apache Kafka のデフォルト  | 
|  max.connections.per.ip.overrides  |  デフォルトの最大接続数に対する、IP アドレスまたはホスト名ごとのオーバーライドをコンマ区切りで列挙したリスト。例として値は `hostName:100,127.0.0.1:200` です  | Apache Kafka のデフォルト | 
|  message.max.bytes  |  Kafka が許容する最大レコードバッチサイズ。この値を増やし、0.10.2 より古いコンシューマーが存在する場合、コンシューマーの取得サイズも増やして、この大きさのレコードバッチを取得できるようにする必要があります。最新のメッセージ形式バージョンでは、効率を上げるために、常にメッセージがバッチにグループ化されます。以前のメッセージ形式バージョンでは、非圧縮レコードはバッチにグループ化されません。その場合、この制限は単一のレコードにのみ適用されます。トピックレベル `max.message.bytes` の設定により、この値をトピックごとに設定できます。  | Apache Kafka のデフォルト | 
|  producer.id.expiration.ms  |  トピックパーティションリーダーがプロデューサー ID を期限切れにする前に待機する時間 (ミリ秒単位) プロデューサー ID は、関連するトランザクションが進行中の間は有効期限切れになりません。プロデューサー ID は、トピックの保持設定によりそのプロデューサー ID からの最後の書き込みが削除された場合、より早く期限切れになる可能性があることに注意してください。この値を再試行中に期限切れを防ぐため、またメッセージの重複を防止するために、同じまたは、`delivery.timeout.ms`それ以上に設定することが有効です。ただし、ほとんどのユースケースではデフォルト値で十分です。  | Apache Kafka のデフォルト | 

## Express ブローカーのトピックレベルの設定
<a name="msk-configuration-express-topic-configuration"></a>

Apache Kafka コマンドを使用して、新規および既存のトピックのトピックレベルの設定プロパティを設定するか変更することができます。トピックレベルの設定を指定できない場合、Amazon MSK はブローカーのデフォルト設定を使用します。ブローカーレベルの設定と同様に、Amazon MSK はトピックレベルの設定プロパティの一部を変更から保護します。例としては、レプリケーション係数、`min.insync.replicas`、`unclean.leader.election.enable` などがあります。レプリケーション係数の値が`3`以外の値でトピックを作成しようとすると、Amazon MSK はデフォルトでレプリケーション係数`3` が設定されたトピックを作成します。トピックレベルの設定プロパティの詳細と設定方法の例については、Apache Kafka のドキュメントの「[Topic-Level Configs](https://kafka.apache.org/documentation/#topicconfigs)」を参照してください。


| プロパティ | 説明 | 
| --- | --- | 
|  cleanup.policy  |  この設定は、ログセグメントで使用する保持ポリシーを指定します。「削除」ポリシー (デフォルト) は、古いセグメントの保持期間またはサイズ制限に達した場合にそれらを破棄します。「コンパクト」ポリシーはログ圧縮を有効にし、各キーに対して最新の値を保持します。両方のポリシーをカンマ区切りで指定することも可能です (例: 「delete,compact」)。この場合、保持時間とサイズの設定に基づき古いセグメントは破棄され、保持されたセグメントは圧縮されます。Express ブローカーにおける圧縮は、パーティション内のデータが 256 MB に達した後にトリガーされます。  | 
|  compression.type  |  特定のトピックに対する最終的な圧縮タイプを指定する。この設定は、標準の圧縮コーデック (`gzip`、`snappy`、`lz4`、`zstd`) を受け入れます。さらに、圧縮なし、および`producer`同等の設定を受け入れます`uncompressed`;これは、プロデューサーが設定した元の圧縮コーデックを保持することを意味します。  | 
| delete.retention.ms |  ログ圧縮が有効なトピックにおいて、削除用トゥームストーンマーカーを保持する期間。この設定は、コンシューマーがオフセット 0 から読み取りを開始した場合に、最終状態の有効なスナップショットを取得するために、読み取りを完了しなければならない時間の上限も定めます。そうしないと、スキャンが完了する前に削除用トゥームストーンが収集される場合があります。 この設定のデフォルト値は 86400000 (24 \$1 60 \$1 60 \$1 1000 ms、要するに 1 日)、Apache Kafka Default  | 
|  max.message.bytes  |  Kafka が許可する最大レコードバッチサイズ (圧縮が有効な場合、圧縮後のサイズ)。この値を増やし、より年長の消費者が存在する場合は、消費者がこれほど大きなレコードバッチを取得できるように、`0.10.2`消費者のフェッチサイズも増やす必要がある。最新のメッセージ形式バージョンでは、効率を上げるために、レコードは常にバッチにグループ化されます。以前のメッセージ形式バージョンでは、圧縮されていないレコードはバッチにグループ化されず、この制限は単一のレコードにのみ適用されます。これは、トピックレベルの`max.message.bytes config`でトピックごとに設定できます。  | 
|  message.timestamp.after.max.ms  |  この設定は、メッセージのタイムスタンプとブローカーのタイムスタンプの間の許容されるタイムスタンプ差を設定します。メッセージのタイムスタンプはブローカーのタイムスタンプと同じ、またはそれ以降であってもよく、その最大許容差はこの設定で指定された値によって決まります。`message.timestamp.type=CreateTime` の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。`message.timestamp.type=LogAppendTime` の場合、この設定は無視されます。  | 
|  message.timestamp.before.max.ms  |  この設定は、ブローカーのタイムスタンプとメッセージのタイムスタンプの間の許容されるタイムスタンプ差を設定します。メッセージのタイムスタンプはブローカーのタイムスタンプと同じ、またはそれ以前であってもよく、その最大許容差はこの設定で指定された値によって決まります。`message.timestamp.type=CreateTime` の場合、タイムスタンプの差がこの指定されたしきい値を超えるとメッセージは拒否されます。`message.timestamp.type=LogAppendTime` の場合、この設定は無視されます。  | 
|  message.timestamp.type  |  メッセージ内のタイムスタンプが、メッセージ作成時刻であるか ログ 追記時刻かを定義する。この値は `CreateTime` または `LogAppendTime` のいずれかでなければなりません  | 
| min.compaction.lag.ms |  ログ内でメッセージが圧縮されずに保持される最小時間。この設定は、圧縮処理中のログにのみ適用されます。 この設定のデフォルト値は 0、Apache Kafka Default  | 
| max.compaction.lag.ms |  ログ内でメッセージが圧縮対象外のままとなる最大時間。この設定は、圧縮処理中のログにのみ適用されます。この設定は、[7日間、Long.Max] の範囲に制限されます。 この設定のデフォルト値は 9223372036854775807、Apache Kafka Default です。  | 
|  retention.bytes  |  この設定は、パーティション (ログセグメントで構成される) が成長できる最大サイズを制御します。これにより、「削除」保持ポリシーを使用している場合に、古いログセグメントを破棄してスペースを確保するタイミングを決定します。デフォルトではサイズ制限はなく、時間制限のみが設定されています。この制限はパーティションレベルで適用されるため、パーティションの数を掛けてトピックの保持をバイト単位で計算します。さらに、`retention.bytes configuration` は `segment.ms` および `segment.bytes` 設定とは独立して動作します。さらに、`retention.bytes`がゼロに設定されている場合、新しいセグメントのローリングが開始されます。  | 
|  retention.ms  |  この設定は、「削除」保持ポリシーを使用している場合に、古いログセグメントを破棄して空き領域を確保する前に、ログを保持する最大時間を制御します。これは、消費者がデータを読み取るまでの所要時間に関する SLA (サービスレベル契約) を表しています。`-1` に設定する場合、時間制限は適用されません。さらに、`retention.ms` 設定は `segment.ms` および `segment.bytes` 設定とは独立して動作します。さらに、`retention.ms`条件が満たされた場合、新しいセグメントのローリングが開始されます。  | 

# Express ブローカーの読み取り専用設定
<a name="msk-configuration-express-read-only"></a>

Amazon MSK は、これらの設定の値を設定し、クラスター の可用性に影響を与える可能性のある変更から保護します。これらの値はクラスター上で実行されている Apache Kafka のバージョンによって異なる場合がありますので、必ずご自身のクラスターの値を確認してください。

次の表は、Express ブローカーの読み取り専用設定を一覧表示します。


| プロパティ | 説明 | Express ブローカー値 | 
| --- | --- | --- | 
| broker.id | このサーバーのブローカー ID。 | 1、2、3... | 
| broker.rack | ブローカーのラック。これは耐障害性のためのラック認識レプリケーション割り当てに使用されます。例: `RACK1`、`us-east-1d` | AZ ID または サブネット ID | 
|  default.replication.factor  |  すべてのトピックに対するデフォルトのレプリケーション係数。  |  3  | 
| fetch.max.bytes | フェッチリクエストに対して返す最大バイト数。 | Apache Kafka のデフォルト | 
| group.max.size | 一つの消費者グループが収容できる消費者の最大数。 | Apache Kafka のデフォルト | 
| inter.broker.listener.name | ブローカー間の通信に使用される リスナー の名前。 | REPLICATION\$1SECURE または REPLICATION | 
| inter.broker.protocol.version | ブローカー間プロトコルを使用するバージョンを指定します。 | Apache Kafka のデフォルト | 
| リスナー | リスナー リスト - リスナー として監視する URIs と リスナー 名のカンマ区切りリスト。advertised.listeners property は設定できますが、listeners プロパティは設定できません。 | MSK 生成された | 
| log.message.format.version | ブローカーがログにメッセージを追加するために使用するメッセージ形式バージョンを指定します。 | Apache Kafka のデフォルト | 
| min.insync.replicas | プロデューサーが acks を `all` (または `-1`)に設定した場合、`min.insync.replicas` の値は書き込みが成功と見なされるために必要な最小レプリカ数を指定します。この最小値を満たせない場合、プロデューサーは例外(`NotEnoughReplicas` または `NotEnoughReplicasAfterAppend`) を発生させます。 プロデューサーの ack の値を使用して、より高い耐久性の保証を強化できます。acks を「all」に設定します。これにより、大部分のレプリカが書き込みを受け取らない場合、プロデューサーが例外を発生させることができます。 | 2 | 
| num.io.threads | サーバーがリクエストの生成に使用するスレッドの数。これには、ディスク I/O が含まれる場合があります (m7g.large, 8)、 (m7g.xlarge, 8)、 (m7g.2xlarge, 16)、 (m7g.4xlarge, 32)、 (m7g.8xlarge, 64)、 (m7g.12xlarge, 96)、 (m7g.16xlarge, 128) | インスタンス タイプに基づきます。=Math.max(8、2 \$1 vCPUs) | 
| num.network.threads | サーバーがネットワークからリクエストを受信し、ネットワークにレスポンスを送信するために使用するスレッドの数。 (m7g.large, 8)、 (m7g.xlarge, 8)、 (m7g.2xlarge, 8)、 (m7g.4xlarge, 16)、 (m7g.8xlarge, 32)、 (m7g.12xlarge, 48)、 (m7g.16xlarge, 64) | インスタンス タイプに基づきます。=Math.max(8、vCPUs) | 
| replica.fetch.response.max.bytes | フェッチレスポンス全体に対して予想される最大バイト数。レコードはバッチでフェッチされます。また、フェッチの空でない最初のパーティションの最初のレコードバッチがこの値より大きい場合、進行を保証するためにそのレコードバッチが引き続き返されます。これは絶対最大値ではありません。message.max.bytes(ブローカー設定) またはmax.message.bytes (トピック設定) プロパティは、ブローカーが受け入れる最大レコードバッチサイズを指定します。 | Apache Kafka のデフォルト | 
| request.timeout.ms | この設定は、クライアントがリクエストの応答を待機する最大時間を制御します。タイムアウトが経過するまでに応答が受信されない場合、クライアントは必要に応じてリクエストを再送信するか、再試行回数が上限に達した場合はリクエストを失敗とする。 | Apache Kafka のデフォルト | 
| transaction.state.log.min.isr | トランザクショントピックのオーバーライド min.insync.replicas 設定。 | 2 | 
| transaction.state.log.replication.factor | トランザクショントピックのレプリケーション係数。 | Apache Kafka のデフォルト | 
| unclean.leader.election.enable | ISR セットに含まれていないレプリカが、最終手段としてリーダーとして機能することを許可します。これによりデータ損失が発生する可能性があります。 | FALSE | 

# ブローカー設定オペレーション
<a name="msk-configuration-operations"></a>

Apache Kafka ブローカー設定は静的または動的のどちらか一方です。静的設定を適用するには、ブローカーの再起動が必要です。動的設定を更新するためにブローカーを再起動する必要はありません。設定プロパティと更新モードの詳細については、Apache Kafka Configuration を参照してください。

このトピックでは、カスタム MSK 設定を作成する方法と、それらの設定に対してオペレーションを実行する方法について説明します。MSK 設定を使用してクラスターを作成または更新する方法については、「[Amazon MSK の主な特徴および概念](operations.md)」を参照してください。

**Topics**
+ [設定を作成する](msk-configuration-operations-create.md)
+ [設定の更新](msk-configuration-operations-update.md)
+ [設定を削除](msk-configuration-operations-delete.md)
+ [設定メタデータを取得](msk-configuration-operations-describe.md)
+ [設定変更の詳細を取得する](msk-configuration-operations-describe-revision.md)
+ [現在のリージョンにおけるアカウントの設定一覧](msk-configuration-operations-list.md)
+ [Amazon MSK 設定状態](msk-configuration-states.md)

# 設定を作成する
<a name="msk-configuration-operations-create"></a>

このプロセスでは、カスタム Amazon MSK 設定を作成する方法と、その設定に対してオペレーションを実行する方法について説明します。

1. 設定する設定プロパティと、それらに割り当てる値を指定するファイルを作成します。次に、設定ファイルの例を示します。

   ```
   auto.create.topics.enable = true
   
   log.roll.ms = 604800000
   ```

1. 次の AWS CLI コマンドを実行し、*config-file-path* を、前のステップで設定を保存したファイルへのパスに置き換えます。
**注記**  
設定に選択する名前は、次の正規表現「^[0-9A-Za-z][0-9A-Za-z-]\$10,\$1\$1」と一致する必要があります。

   ```
   aws kafka create-configuration --name "ExampleConfigurationName" --description "Example configuration description." --kafka-versions "1.1.1" --server-properties fileb://config-file-path
   ```

   このコマンドを実行した後の正常なレスポンスの例を以下に示します。

   ```
   {
       "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
       "CreationTime": "2019-05-21T19:37:40.626Z",
       "LatestRevision": {
           "CreationTime": "2019-05-21T19:37:40.626Z",
           "Description": "Example configuration description.",
           "Revision": 1
       },
       "Name": "ExampleConfigurationName"
   }
   ```

1. 上記のコマンドは、新しい設定の Amazon リソースネーム (ARN) を返します。この ARN は、他のコマンドでこの設定を参照する必要があるため、保存します。設定の ARN を紛失した場合は、アカウント内のすべての設定をリストして、ARN を再確認することができます。

# 設定の更新
<a name="msk-configuration-operations-update"></a>

このプロセスでは、カスタム Amazon MSK 設定を更新する方法について説明します。

1. 更新する設定プロパティと、それらに割り当てる値を指定するファイルを作成します。次に、設定ファイルの例を示します。

   ```
   auto.create.topics.enable = true
   
   min.insync.replicas = 2
   ```

1. 次の AWS CLI コマンドを実行します。*config-file-path* は、前のステップで設定を保存したファイルへのパスに置き換えてください。

   *configuration-arn* は、設定の作成時に取得した ARN に置き換えてください。設定の作成時に ARN を保存しなかった場合は、`list-configurations` コマンドを使用して、アカウント内のすべての設定をリストすることができます。目的の設定がレスポンス内のリストに表示されます。設定の ARN もそのリストに表示されます。

   ```
   aws kafka update-configuration --arn configuration-arn --description "Example configuration revision description." --server-properties fileb://config-file-path
   ```

1. このコマンドを実行した後の正常なレスポンスの例を以下に示します。

   ```
   {
       "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
       "LatestRevision": {
           "CreationTime": "2020-08-27T19:37:40.626Z",
           "Description": "Example configuration revision description.",
           "Revision": 2
       }
   }
   ```

# 設定を削除
<a name="msk-configuration-operations-delete"></a>

次の手順は、クラスターに接続されていない設定を削除する方法を示しています。クラスターに添付されている設定を削除することはできません。

1. この例を実行する際には、*configuration-arn* を、設定の作成時に取得した ARN に置き換えてください。設定の作成時に ARN を保存しなかった場合は、`list-configurations` コマンドを使用して、アカウント内のすべての設定をリストすることができます。目的の設定がレスポンス内のリストに表示されます。設定の ARN もそのリストに表示されます。

   ```
   aws kafka delete-configuration --arn configuration-arn
   ```

1. このコマンドを実行した後の正常なレスポンスの例を以下に示します。

   ```
   {
       "arn": " arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
       "state": "DELETING"
   }
   ```

# 設定メタデータを取得
<a name="msk-configuration-operations-describe"></a>

次の手順は、Amazon MSK 設定を記述して、設定に関するメタデータを取得する方法を示しています。

1. 次のコマンドは、設定に関するメタデータを返します。設定の詳細な説明を取得するには、`describe-configuration-revision` を実行します。

   この例を実行する際には、*configuration-arn* を、設定の作成時に取得した ARN に置き換えてください。設定の作成時に ARN を保存しなかった場合は、`list-configurations` コマンドを使用して、アカウント内のすべての設定をリストすることができます。目的の設定がレスポンス内のリストに表示されます。設定の ARN もそのリストに表示されます。

   ```
   aws kafka describe-configuration --arn configuration-arn
   ```

1. このコマンドを実行した後の正常なレスポンスの例を以下に示します。

   ```
   {
       "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1",
       "CreationTime": "2019-05-21T00:54:23.591Z",
       "Description": "Example configuration description.",
       "KafkaVersions": [
           "1.1.1"
       ],
       "LatestRevision": {
           "CreationTime": "2019-05-21T00:54:23.591Z",
           "Description": "Example configuration description.",
           "Revision": 1
       },
       "Name": "SomeTest"
   }
   ```

# 設定変更の詳細を取得する
<a name="msk-configuration-operations-describe-revision"></a>

このプロセスでは、Amazon MSK 設定リビジョンの詳細な説明を示します。

`describe-configuration` コマンドを使用して MSK 設定を記述すると、設定のメタデータが表示されます。設定の詳細な記述を取得するには、`describe-configuration-revision` コマンドを使用します。
+ 次のコマンドを実行します。*configuration-arn* は、設定の作成時に取得した ARN に置き換えてください。設定の作成時に ARN を保存しなかった場合は、`list-configurations` コマンドを使用して、アカウント内のすべての設定をリストすることができます。目的の設定がレスポンス内のリストに表示されます。設定の ARN もそのリストに表示されます。

  ```
  aws kafka describe-configuration-revision --arn configuration-arn --revision 1
  ```

  このコマンドを実行した後の正常なレスポンスの例を以下に示します。

  ```
  {
      "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1",
      "CreationTime": "2019-05-21T00:54:23.591Z",
      "Description": "Example configuration description.",
      "Revision": 1,
      "ServerProperties": "YXV0by5jcmVhdGUudG9waWNzLmVuYWJsZSA9IHRydWUKCgp6b29rZWVwZXIuY29ubmVjdGlvbi50aW1lb3V0Lm1zID0gMTAwMAoKCmxvZy5yb2xsLm1zID0gNjA0ODAwMDAw"
  }
  ```

  `ServerProperties` の値は base64 でエンコードされます。base64 デコーダー (https://www.base64decode.org/ など) を使用して手動でデコードする場合は、カスタム設定の作成に使用した元の設定ファイルの内容を取得します。この場合、次のようになります。

  ```
  auto.create.topics.enable = true
  
  log.roll.ms = 604800000
  ```

# 現在のリージョンにおけるアカウントの設定一覧
<a name="msk-configuration-operations-list"></a>

このプロセスでは、現在の AWS リージョンのアカウント内のすべての Amazon MSK 設定を一覧表示する方法について説明します。
+ 以下のコマンドを実行してください。

  ```
  aws kafka list-configurations
  ```

  このコマンドを実行した後の正常なレスポンスの例を以下に示します。

  ```
  {
      "Configurations": [
          {
              "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1",
              "CreationTime": "2019-05-21T00:54:23.591Z",
              "Description": "Example configuration description.",
              "KafkaVersions": [
                  "1.1.1"
              ],
              "LatestRevision": {
                  "CreationTime": "2019-05-21T00:54:23.591Z",
                  "Description": "Example configuration description.",
                  "Revision": 1
              },
              "Name": "SomeTest"
          },
          {
              "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
              "CreationTime": "2019-05-03T23:08:29.446Z",
              "Description": "Example configuration description.",
              "KafkaVersions": [
                  "1.1.1"
              ],
              "LatestRevision": {
                  "CreationTime": "2019-05-03T23:08:29.446Z",
                  "Description": "Example configuration description.",
                  "Revision": 1
              },
              "Name": "ExampleConfigurationName"
          }
      ]
  }
  ```

# Amazon MSK 設定状態
<a name="msk-configuration-states"></a>

Amazon MSK 設定は、次のいずれかの状態になります。設定に対してオペレーションを実行するには、設定が `ACTIVE` または `DELETE_FAILED` 状態である必要があります。
+ `ACTIVE`
+ `DELETING`
+ `DELETE_FAILED`