全般

Q: Amazon MSK とは何ですか?
Amazon Managed Streaming for Apache Kafka (Amazon MSK) は、Apache Kafka のインフラストラクチャと運用を管理する AWS ストリーミングデータサービスであり、デベロッパーや DevOps 管理者が Apache Kafka の運用のエキスパートとならなくても、AWS で Apache Kafka アプリケーションおよび Apache Kafka Connect コネクタを簡単に実行できるようにします。Amazon MSK は Apache Kafka クラスターを運用、維持、スケールし、すぐに使用できるエンタープライズプラスのセキュリティ機能を提供します。また、ストリーミングデータアプリケーションを迅速に開発するための AWS 統合が組み込まれています。開始するために、既存の Apache Kafka ワークロードおよび Apache Kafka Connect コネクタを Amazon MSK に移行できます。または、数回クリックするだけで、新しいワークロードをゼロから構築できます。クラスター内のトラフィックにデータ転送料金はかからず、契約や前払い料金は必要ありません。お客様は、使用したリソースに対してのみ料金を支払います。
 
Q. Apache Kafka とは何ですか?
Apache Kafka は、リアルタイムストリーミングデータパイプラインやアプリケーションを構築するための高いパフォーマンス、耐障害性、スケーラビリティを備えたオープンソースプラットフォームです。Apache Kafka は、データストアにストリーミングデータを生成するアプリケーション (プロデューサー) と、データストアからストリーミングデータを使用するアプリケーション (コンシューマー) を切り離すストリーミングデータストアです。組織では、ストリーミングデータを継続的に分析して対応するアプリケーションのデータソースとして Apache Kafka を利用できます。 Apache Kafka の詳細はこちら
 
Q:Apache Kafka Connect とは何ですか?
Apache Kafka のオープンソースコンポーネントである Apache Kafka Connect は、データベース、key-value ストア、検索インデックス、ファイルシステムなどの外部システムと Apache Kafka を接続するためのフレームワークです。
 
Q: ストリーミングデータとは何ですか?
ストリーミングデータは、数千ものマシン、デバイス、ウェブサイト、アプリケーションによって生成された小さいレコード (レコードは通常数キロバイトです) の連続したストリームです。ストリーミングデータには、モバイルアプリケーションやウェブアプリケーションを使用して顧客が生成したログファイル、E コマースの購買情報、プレイヤーによるゲーム内のアクティビティ、ソーシャルネットワークの情報、取引所の財務情報、地理空間サービスの情報、セキュリティログ、メトリクス、接続されているデバイスのテレメトリ、データセンターのインストルメンテーション情報など、様々なデータが含まれます。Amazon MSK や Amazon Kinesis Data Streams などのストリーミングデータサービスを利用すると、ストリーミングデータの継続的な収集、処理、配信が容易に行えます。 ストリーミングデータの詳細はこちら
 
Q. Apache Kafka の主な機能は何ですか?
Apache Kafka には、3 つの主な機能があります。
  • Apache Kafka は、耐障害性の方法でストリーミングデータを保存し、プロデューサーとコンシューマーの間にバッファを提供します。イベントを連続する一連のレコードとして保存し、レコードが生成された順序を保持します。
  • Apache Kafka では、多くのデータプロデューサー – 例: ウェブサイト、IoT デバイス、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスなど – がストリーミングデータを連続的に発行し、Apache Kafka トピックを使用して分類できます。複数のデータコンシューマー (機械学習アプリケーション、AWS Lambda 関数、マイクロサービスなど) がこれらのトピックを独自のレートで読み込みます。これは、メッセージキューやエンタープライズメッセージングシステムと似ています。
  • データコンシューマーは、Apache Kafka トピックからのデータを先入れ先出しベースで処理し、データが生成された順序を保持します。

 

Apache Kafka は、レコードをトピックに保存します。データプロデューサーは、レコードをトピックに書き込み、コンシューマーはレコードをトピックから読み込みます。Apache Kafka 内の各レコードは、キー、値、タイムスタンプ、そして時にはヘッダーメタデータで構成されています。Apache Kafka は、ブローカーと呼ばれる複数のノード間でトピックをパーティション化し、レプリケートします。Apache Kafka は、1 つ以上のブローカーでクラスターとして実行され、ブローカーは可用性の高いクラスターを作成するために複数の AWS アベイラビリティーゾーンに配置できます。Apache Kafka は、クラスタータスクを調整するために Apache ZooKeeper に依存しており、Apache Kafka クラスターを操作するリソースの状態を維持できます。
 
Q. どのような場合に Apache Kafka を使用すればよいですか?
Apache Kafka は、ストリーミングデータを変換、配信、反応するリアルタイムのアプリケーションをサポートし、複数のシステムやアプリケーション間でデータを確実に送信するリアルタイムのストリーミングデータパイプラインを構築するために使用することができます。
 
Q. Amazon MSK は何をしますか?
Amazon MSK では、高可用性とセキュリティを備えた AWS でのオープンソース版 Apache Kafka を簡単に開始し、実行することができます。また、Amazon MSK は、Apache Kafka クラスターを運用するための運用オーバーヘッドなしに、AWS のサービスとの統合を実現します。Amazon MSK では、お客様が Apache Kafka のオープンソースバージョンを使用できますが、Apache Kafka クラスターのセットアップ、プロビジョン、AWS 統合、継続的なメンテナンスはサービスが行います。

コンソールで数回クリックするだけで、Amazon MSK クラスターを作成できます。そこから Amazon MSK は異常なブローカーを置き換える、データを自動的にレプリケートして可用性を高める、Apache ZooKeeper ノードを管理する、必要に応じてハードウェアパッチを自動的にデプロイする、AWS のサービスとの統合を管理する、コンソールから重要なメトリクスを参照できるようにする、といった処理を行います。また、Apache Kafka のバージョンアップグレードがサポートされるため、Apache Kafka のオープンソースバージョンに加えられる改善点を活用できます。
 
Q: Amazon MSK はどの Apache Kafka のバージョンをサポートしていますか?
サポート対象の Apache Kafka のバージョンについては、 Amazon MSK ドキュメントをご覧ください。
 
Q: Apache Kafka API は Amazon MSK と互換性がありますか?
はい、すべてのデータプレーンと管理 API が Amazon MSK によってネイティブにサポートされます。
 
Q. Apache Kafka AdminClient は Amazon MSK によりサポートされていますか?
はい。
 
Q. Amazon MSK ではスキーマレジストリの使用をサポートしていますか?
はい。Apache Kafka のクライアントから AWS Glue スキーマレジストリを使用可能です。スキーマレジストリは、AWS Glue のサーバーレスな機能で、追加料金なしでご利用いただます。詳細をご確認の上で使用を開始していただくには、スキーマレジストリの ユーザードキュメントをご覧ください。
 
Q: M7g クラスターの使用を開始するにはどうすればよいですか?
Amazon MSK は、すべての Apache Kafka ワークロードを実行するために、「large」サイズから「16xlarge」サイズまでの Graviton 3 ベースの M7g インスタンスをサポートするようになりました。Graviton インスタンスは MSK と同じ可用性と耐久性の利点を備えており、対応する M5 インスタンスと比較してコストを最大 24% 削減できます。Graviton インスタンスは、MSK の M5 インスタンスと比較して、インスタンスあたりのスループットが最大 29% 高いため、お客様は少数のブローカーまたはより小さなサイズのインスタンスで MSK クラスターを実行できます。

MSK Serverless

Q: MSK Serverless とは?
MSK Serverless は Amazon MSK のクラスタータイプであり、Apache Kafka クラスターを簡単に実行できます。コンピューティング容量とストレージ容量を管理する必要はありません。MSK Serverless を使用すれば、クラスターをプロビジョン、構成、または最適化することなくアプリケーションを実行でき、ストリーミングおよび保持するデータ量に対して料金をお支払いいただきます。

Q: MSK Serverless はクラスター内のパーティションで自動的にバランスを取りますか?
はい。MSK Serverless は、パーティションをフルで管理します。これには、パーティションをモニタリングして移動し、クラスター全体で均等にロードすることも含まれます。

Q: MSK Serverless はどのくらいのデータスループット容量をサポートしていますか?
MSK Serverless は、クラスターごとに最大 200 MBps の書き込み容量と 400 MBps の読み取り容量を提供しています。さらに、クラスター内のすべてのパーティションで十分なスループットの可用性を確保するために、MSK Serverless はパーティションごとに最大 5 MBps のインスタント書き込み容量と 10 MBps のインスタント読み取り容量を割り当てています。

Q: MSK Serverless はどのようなセキュリティ機能を提供しますか?
MSK Serverless は、AWS Key Management Service (KMS) を通じて発行されたサービスマネージドキーを使用して、転送中のトラフィックすべてと保管中のデータすべてを暗号化します。クライアントは、トラフィックを公開インターネットに公開することなく、AWS PrivateLink を使用するプライベート接続経由で MSK Serverless に接続します。さらに、MSK Serverless は IAM アクセスコントロールを提供します。これにより、トピックなどの Apache Kafka リソースに対するクライアント認証とクライアント承認を管理できます。

Q: プロデューサとコンシューマは、どうやって MSK Serverless クラスターにアクセスできますか?
MSK Serverless クラスターを作成するときは、クラスターのクライアントをホストする 1 つ以上の Amazon Virtual Private Cloud (VPC) サブネットを提供します。これらの VPC のいずれかでホストされているクライアントは、ブローカーのブートストラップ文字列を使用して MSK Serverless クラスターに接続できます。

Q: MSK Serverless はどのリージョンで利用できますか?
最新リージョンの可用性については、MSK の料金ページを参照してください。

Q: MSK Serverless はどの認証タイプに対応していますか?
MSK Serverless は現在、クライアントの認証と承認のために AWS IAM をサポートしています。クライアントは認証のために AWS IAM ロールを引き受けることができ、関連付けられた IAM ポリシーを使用してアクセスコントロールを適用できます。

Q: MSK Serverless クラスターでデータを処理するにはどうすればよいですか?
Apache Kafka 互換ツールを使用して、MSK Serverless クラスタートピックのデータを処理できます。MSK Serverless は、ステートフルストリーム処理のために Amazon Managed Service for Apache Flink と、およびイベント処理のために AWS Lambda と統合します。Apache Kafka Connect シンクコネクタを使用して、任意の送信先にデータを送信することもできます。

Q: MSK Serverless はどのように高可用性を確保しますか?
パーティションを作成すると、MSK Serverless はそのレプリカを 2 つ作成し、それらを異なるアベイラビリティーゾーンに配置します。さらに、MSK Serverless は、障害が発生したバックエンドリソースを自動的に検出して回復し、高可用性を維持します。

データの生成と使用

Q: Apache Kafka API を使用して Apache Kafka からデータを出し入れすることはできますか?
はい、Amazon MSK はネイティブの Apache Kafka プロデューサーおよびコンシューマー API をサポートしています。クライアントが Amazon MSK 内のクラスターを操作し始めたときに、アプリケーションコードを変更する必要はありません。

Q. Apache Kafka Connect、Apache Kafka Streams、または Apache Kafka の他のエコシステムコンポーネントを Amazon MSK で使用することはできますか?
はい、Apache Kafka プロデューサーおよびコンシューマー API を利用するあらゆるコンポーネント、および Apache Kafka Admin Client を使用できます。.jar ファイルを Apache Kafka クラスターにアップロードするツールは、現在のところ Amazon MSK と互換性がありません (Confluent Control Center、Confluent Auto Data Balancer、Uber uReplicator など)。

Amazon MSK への移行

Q: 既存の Apache Kafka クラスター内のデータを Amazon MSK に移行できますか?
はい、サードパーティーのツールや、Apache Kafka でサポートされている MirrorMaker のようなオープンソースのツールを使って、クラスターから Amazon MSK クラスターにデータをレプリケートすることができます。ここでは、マイグレーションを完成させるための Amazon MSK のマイグレーションラボをご紹介します。

バージョンアップグレード

Q: Apache Kafka のバージョンアップグレードはサポートされていますか?
はい、Amazon MSK では、プロビジョンドクラスターのフルマネージド型の Apache Kafka のインプレースバージョンアップグレードをサポートしています。お使いの Apache Kafka バージョンのアップグレードや高可用性のベストプラクティスの詳細については、バージョンアップグレードのドキュメントを参照してください。

クラスター

Q: 最初の Amazon MSK クラスターを作成するにはどうすればよいですか?
AWS マネジメントコンソールまたは AWS SDK を使用し、数回のクリックで最初のクラスターを作成できます。まず、 Amazon MSK コンソールに移動し、Amazon MSK クラスターを作成する AWS リージョンを選択します。クラスターの名前、クラスターの実行に使用する Virtual Private Cloud (VPC)、および各アベイラビリティーゾーンのサブネットを選択します。プロビジョンされたクラスターを作成する場合は、ブローカーインスタンスタイプ、アベイラビリティーゾーンごとのブローカーの数、およびブローカーごとのストレージを選択することもできます。
 
Q. クラスター内にはどのようなリソースがありますか?
プロビジョンされたクラスターには、ブローカーインスタンス、プロビジョンされたストレージ、および抽象化された Apache ZooKeeper ノードが含まれています。Serverless クラスターはそれ自体がリソースであり、基盤となるすべてのリソースを抽象化します。
 
Q. Amazon MSK クラスターではどのようなタイプのブローカーインスタンスをプロビジョンできますか?
プロビジョンされたクラスターの場合、EC2 T3.small または EC2 M7g インスタンスファミリー内のインスタンスを選択できます。サーバーレスクラスターの場合、ブローカーは完全に抽象化されます。
 
Q. Amazon MSK はリザーブドインスタンスの料金に対して、割引を行っていますか?
現在はしていません。
 
Q. ブローカーブートボリュームのプロビジョニングと支払いは必要ですか?
いいえ、プロビジョンする各ブローカーには、Amazon MSK サービスによって管理されるブートボリュームストレージが含まれています。
 
Q. Apache Kafka クラスターを作成するとき、基になるリソース (Amazon EC2 インスタンスなど) は EC2 コンソールに表示されますか?
Elastic Network Interface (ENI) などの一部のリソースは、Amazon EC2 アカウントに表示されます。他の Amazon MSK リソースは、Amazon MSK サービスによって管理されているため EC2 アカウントには表示されません。
 
Q. Amazon MSK クラスター内では何をプロビジョンする必要がありますか?
プロビジョンドクラスターでは、作成したクラスターごとにブローカーインスタンスとブローカーストレージをプロビジョンする必要があります。オプションで、ストレージボリュームのストレージスループットをプロビジョンできます。これを使用すれば、追加のブローカーをプロビジョンしなくても、I/O をシームレスにスケールできます。Apache ZooKeeper ノードはプロビジョンする必要はありません。これらのリソースは、作成した各クラスターに追加料金なしで含められるためです。サーバーレスクラスターの場合は、リソースとしてクラスターを作成するだけで完了です。
 
Q. クラスターのデフォルトのブローカー設定は何ですか?
特に指定がない限り、Amazon MSK は Apache Kafka のオープンソースバージョンにより指定されたのと同じデフォルトを使用します。両方のクラスタータイプのデフォルト設定については、 こちらに記載されています。
Q. AZ 間で不均等になるようにブローカーをプロビジョンできますか (us-east-1a では 3、us-east-1b では 2、us-east-1c では 1 など)?
いいえ、Amazon MSK では、クラスター内の AZ 間でブローカーの数量を均等にするというベストプラクティスが適用されます。

Q. データレプリケーションは Amazon MSK でどのように機能しますか?
Amazon MSK は、Apache Kafka のリーダー - フォロワーレプリケーションを使用して、ブローカー間でデータをレプリケートします。Amazon MSK を使用すると、マルチ AZ レプリケーションでクラスターを簡単にデプロイでき、トピック別にカスタムレプリケーション戦略を使用することもできます。デフォルトでは、各レプリケーションオプションで、指定したレプリケーション戦略を使用してリーダーおよびフォロワーブローカーが展開されて分離されます。たとえば、AZ クラスターごとにブローカーが 1 つの 3 AZ ブローカーレプリケーション戦略を選択した場合、Amazon MSK は 3 つのブローカーのクラスター (リージョン内の 3 つの AZ で 1 つのブローカー) を作成し、デフォルトでは (トピックレプリケーション係数の上書きを選択しない限り) トピックレプリケーション係数も 3 になります。

Q. デフォルトのブローカー設定の変更、またはクラスター設定を Amazon MSK にアップロードすることはできますか?
はい、Amazon MSK ではカスタム設定を作成して、新しいクラスターにも既存のクラスターにも適用することができます。カスタム設定の詳細については、設定に関するドキュメントをご覧ください。

Q. どのような設定プロパティをカスタマイズできますか?
カスタマイズ可能な設定プロパティは、こちらに記載されています。

Q. 新しいトピックのデフォルト設定は何ですか?
Amazon MSK は、こちらに特に明記されていない限り、Apache Kafka のデフォルト設定を使用します。

トピック

Q: トピックはどのように作成しますか?
Apache Kafka クラスターが作成されたら、Apache Kafka API を使用してトピックを作成できます。すべてのトピックおよびパーティションのアクションと設定が Apache Kafka API を使用して実行されます。以下のコマンドは、Apache Kafka API を使用してトピックを作成する例であり、クラスターで利用可能な構成の詳細を示しています。

bin/kafka-topics.sh --create —bootstrap-server <BootstrapBrokerString> --replication-factor 3 --partitions 1 --topic TopicName

ネットワーク

Q: Amazon MSK は Amazon VPC で実行されますか?
はい、Amazon MSK は常に Amazon MSK サービスにより管理される Amazon VPC 内で実行されます。Amazon MSK リソースは、クラスターのセットアップ時に選択したお客様自身の Amazon VPC、サブネット、セキュリティグループで利用可能になります。VPC の IP アドレスは、Elastic Network Interface (ENI) を通じて Amazon MSK リソースにアタッチされ、すべてのネットワークトラフィックが AWS ネットワーク内に留まり、デフォルトではインターネットにアクセスできなくなります。

Q. Amazon MSK クラスター内のブローカーはどのようにして VPC 内のクライアントにアクセスできるようになりますか?
クラスター内のブローカーは、アカウントに表示される ENI を通じて VPC 内のクライアントにアクセスできるようになります。ENI のセキュリティグループは、ブローカーで許可される受信および送信トラフィックのソースとタイプを指示します。

Q: 公開インターネット経由でクラスターに接続することは可能ですか?
はい、Amazon MSK は、Apache Kafka 2.6.0 以降のバージョンを実行している Amazon MSK クラスターのブローカーにインターネット経由で安全に接続するオプションを提供しています。パブリックアクセスを可能にすることで、プライベートな Amazon Virtual Private Cloud (VPC) の外部にいる許可されたクライアントは、特定の Amazon MSK クラスターとの間で暗号化されたデータをストリーミングでやり取りすることができます。MSK クラスターのパブリックアクセスは、クラスターの作成後に追加費用なしで有効にできますが、クラスターの出入りには標準的な AWS のデータ転送コストがかかります。パブリックアクセスを有効にすることについての詳細は、パブリックアクセスのドキュメントを参照してください。

Q. クライアントと Amazon MSK クラスター間の接続はプライベートですか?
デフォルトでは、Amazon MSK クラスターからデータを生成して使用するには、VPC および Amazon MSK クラスター間でプライベート接続を使用する必要があります。ただし、Amazon MSK クラスターのパブリックアクセスを有効にして、パブリックな bootstrap-broker 文字列を使用して MSK クラスターに接続する場合、その接続は、認証、認可、および暗号化されているものの、もはやプライベートとはみなされません。クラスターのセキュリティグループに、信頼される IP アドレスからのパブリックアクセスを許可するインバウンド TCP ルールを設定し、パブリックアクセスを有効にした場合は、これらのルールをできるだけ制限することをお勧めします。

VPC への接続

質問: Amazon MSK クラスターにインターネット経由で接続する方法を教えてください。
最も簡単な方法は、Apache Kafka 2.6.0 以降のバージョンを実行している MSK クラスターのブローカーへのインターネット経由の公開接続を有効にすることです。セキュリティ上の理由から、MSK クラスターの作成時にパブリックアクセスを有効にすることはできません。ただし、既存のクラスターを更新して公的にアクセス可能にすることができます。また、新しいクラスターを作成してから、そのクラスターを更新して公的にアクセス可能にすることもできます。パブリックアクセスを有効にすることについての詳細は、パブリックアクセスのドキュメントを参照してください。

質問: AWS ネットワーク内から Amazon MSK クラスターに接続し、クラスターの Amazon VPC の外部から接続する方法を教えてください。
Apache Kafka バージョン 2.7.1 以降のバージョンを実行する MSK クラスターのマルチ VPC プライベート接続を有効にすることで、MSK クラスターとは異なる VPC または AWS アカウントから MSK クラスターに接続できます。サポートされている認証方式 (IAM 認証、SASL SCRAM、mTLS 認証) のいずれかのクラスター作成後にのみ、プライベート接続を有効にできます。プライベート接続を有効にするには、AWS PrivateLink テクノロジーを使用する Amazon MSK マネージド VPC 接続を使用してクラスターにプライベート接続するようにクライアントを設定する必要があります。プライベート接続の設定の詳細については、AWS ドキュメント内からのアクセスを参照してください。

暗号化

Q: Amazon MSK クラスターでデータを暗号化することはできますか?
はい、Amazon MSK は Amazon Elastic Block Store (Amazon EBS) サーバー側の暗号化AWS Key Management Service (AWS KMS) キーを使用して、ストレージボリュームを暗号化できます。

Q: Amazon MSK クラスター内のブローカー間で転送中のデータは暗号化されていますか?
はい、デフォルトでは、新しいクラスタはブローカー間通信用の TLS を介した転送データの暗号化が有効になっています。プロビジョンされたクラスターの場合、クラスターの作成時に転送データの暗号化の使用をオプトアウトできます。

Q: Apache Kafka クライアントと Amazon MSK サービス間で転送データは暗号化されますか?
はい。デフォルトでは、転送中の暗号化は、CLI または AWS マネジメントコンソールから作成されたクラスターに対してのみ TLS に設定されます。クライアントが TLS 暗号化を使用してクラスターと通信するには、追加設定が必要です。プロビジョンドクラスターでは、デフォルトの暗号化設定は、TLS/プレーンテキストまたはプレーンテキストの設定を選択して変更できます。MSK 暗号化について続きを読む。

Q: 転送中のデータは、Amazon MSK クラスター内のブローカーと Apache ZooKeeper ノードの間を移動する際に暗号化されますか?
はい。Apache Kafka バージョン 2.5.1 以降を実行している Amazon MSK クラスターは、Apache Kafka ブローカーノードと ZooKeeper ノード間の TLS 転送中の暗号化をサポートしています。

アクセス管理

Q. クラスタ認証と Apache Kafka API の認可を制御するにはどうすればよいですか?
サーバーレスクラスターの場合、認証と認可の両方に IAM アクセスコントロールを使用できます。プロビジョンされたクラスターの場合、3 つのオプションがあります。1) AuthN/Z 共に AWS Identity and Access Management (IAM) アクセスコントロール (推奨)、2) AuthN に TLS 証明書認証 (CA)、AuthZ にアクセスコントロールリスト、3) AuthN に SASL/SCRAM、AuthZ にアクセスコントロールリスト。Amazon MSK は IAM Access Control の使用を推奨します。最も簡単に使用でき、デフォルトで最小特権のアクセスになるため、最も安全なオプションです。

Q. Amazon MSK では認可はどのように機能しますか?
IAM アクセスコントロールを使用している場合、Amazon MSK はあなたが書いたポリシーと独自のオーソライザーを使用してアクションを認可します。TSL 証明書認証や SASL/SCRAM を使用している場合、Apache Kafka は認可にアクセスコントロールリスト (ACL) を使用します。ACL を有効にするには、TLS 証明書と SASL/SCRAM のいずれかを使用してクライアント認証を有効にする必要があります。

Q. クライアントを同時に認証および認可するにはどうすればよいですか?
IAM Access Control を使用している場合、Amazon MSK が追加の設定なしに認証と認可を行います。TLS 認証を使用している場合、クライアント TLS 証明書の Dname を ACL のプリンシパルとして使用して、クライアントのリクエストを認可できます。SASL/SCRAM を使用している場合、ユーザー名を ACL のプリンシパルとして使用して、クライアントのリクエストを認可できます。

Q. どのようにしてサービス API アクションをコントロールするのですか?
AWS Identity and Access Management (IAM) を使用してサービス API アクションをコントロールすることができます。

Q. 既存のクラスターに対して、IAM Access Control を有効にすることはできますか?
はい、AWS コンソールから、または UpdateSecurity API を使用して、既存のクラスターの IAM アクセスコントロールを有効にできます。

Q. IAM Access Control は、Amazon MSK 以外でも使用できますか?
いいえ。IAM Access Control は、Amazon MSK クラスターのみで使用できます。

Q: Amazon MSK クラスターにプライベートに接続するために、Amazon MSK とは異なる AWS アカウントの Apache Kafka クライアントにクロスアカウントアクセス許可を付与するにはどうすればよいですか?
Amazon MSK クラスターにクラスターポリシーをアタッチして、Amazon MSK クラスターへのプライベート接続を設定するためのクロスアカウントの Apache Kafka クライアント許可を付与できます。IAM クライアント認証を使用する場合、クラスターポリシーを使用して、接続しているクライアントの Apache Kafka データプレーンの許可をきめ細かく定義することもできます。クラスターポリシーの詳細については、クラスターポリシーのドキュメントをご覧ください。

モニタリング、メトリクス、ログ記録、およびタグ付け

Q: クラスターまたはトピックのパフォーマンスをモニタリングするにはどうすればよいですか?
Amazon MSK コンソール、Amazon CloudWatch コンソール、またはオープンソースのモニタリングソリューションである Open Monitoring with Prometheus を使用した JMX とホストメトリクスを介して、クラスターのパフォーマンスをモニタリングすることができます。

Q. CloudWatch のさまざまなモニタリングレベルのコストはいくらですか?
Amazon CloudWatch を使用してクラスターをモニタリンスするコストは、Apache Kafka クラスターのモニタリングレベルとサイズによります。Amazon CloudWatch は、メトリクスごとに毎月課金され、無料利用枠が含まれます。詳細については、 Amazon CloudWatch 料金を参照してください。各モニタリングレベルで公開されるメトリクスの数の詳細については、 Amazon MSK モニタリングドキュメントを参照してください。

Q. Prometheus を使用した Open Monitoring と互換性のあるモニタリングツールはどれですか?
Prometheus エクスポータから読み取るように設計されたツール、例えば、 DatadogLensesNew RelicSumo Logic、Prometheus サーバーなどは Open Monitoring と互換性があります。Open Monitoring の詳細については、 Amazon MSK Open Monitoring ドキュメントを参照してください。

Q. クライアントの状態とパフォーマンスをモニタリングするにはどうすればよいですか?
使用している Apache Kafka バージョンによりサポートされているクライアント側のモニタリングを使用できます。

Q. Amazon MSK リソースにタグを付けることはできますか?
はい、AWS Command Line Interface (AWS CLI) またはコンソールから Amazon MSK クラスターにタグを付けることができます。

Q. コンシューマーラグをモニタリングするにはどうすれば良いですか?
トピックレベルのコンシューマーラグのメトリクスは、メトリクスのデフォルトセットの中に用意されています。このメトリクスは、Amazon MSK から Amazon CloudWatch に対し公開されており、すべてのクラスターで利用できます。これらのメトリクスの取得には、特別なセットアップは必要ありません。プロビジョンされたクラスターの場合、パーティションレベルのコンシューマラグメトリクス (パーティションディメンション) を取得することもできます。これを行うには、クラスターで拡張モニタリング (PER_PARTITION_PER_TOPIC) を有効にしてください。別の方法として、クラスターのブローカーからパーティションレベルのメトリクスをキャプチャするために、クラスターで Open Monitoring を有効にして、Prometheus サーバーを使用することもできます。カスタマーラグのメトリクスは、他の Apache Kafka メトリクスと同様に、ポート 11001 から取得します。

Q: コンシューマーラグのメトリクスを Amazon CloudWatch に公開するにはどの程度のコストがかかりますか?
トピックレベルのメトリクスであれば、Amazon MSK メトリクスのデフォルトセットに含まれているので、無料でご利用いただけます。パーティションレベルのメトリクスにはは、Amazon CloudWatch の料金が適用されます。

Q: Apache Kafka ブローカーログにアクセスする方法を教えてください。
プロビジョンされたクラスターのブローカーログ配信を有効にできます。ブローカーログを Amazon CloudWatch Logs、Amazon Simple Storage Service (S3)、Amazon Kinesis Data Firehose に配信できます。Kinesis Data Firehose は、他の送信先の間で Amazon OpenSearch Service をサポートしています。この機能を有効にする方法については、Amazon MSK Logging ドキュメントを参照してください。料金の詳細については、 CloudWatch Logs および Kinesis Data Firehose の料金ページを、参照してください。

Q: ブローカーログのログレベルは何ですか?
Amazon MSK では、プロビジョンドクラスター内のすべてのブローカーに対し、INFO レベルのログが提供されます。

Q. Apache ZooKeeper ログにアクセスする方法を教えてください。
サポートチケット経由で Apache ZooKeeper ログをリクエストできます。

Q. トピックの作成など、Apache Kafka のリソース API の使用状況を記録することはできますか?
はい、IAM Access Control を使用している場合、Apache Kafka リソース API の使用は AWS CloudTrail に記録されます。

メタデータの管理

Q: Apache ZooKeeper とは何ですか?
https://zookeeper.apache.org による説明: 「Apache ZooKeeper は、設定情報の維持、名前付け、分散化された同期の提供、およびグループサービスを提供する一元化されたサービスです。これらすべての種類のサービスが分散アプリケーションにより何らかの形で使用されます」 (Apache Kafka を含む)。

Q: Amazon MSK は Apache ZooKeeper を使用しますか?
はい。Amazon MSK はメタデータの管理に Apache ZooKeeper を使用します。さらに、Apache Kafka バージョン 3.7 以降では、ZooKeeper モードと KRaft モードのどちらでもクラスターを作成できます。KRaft モードで作成されたクラスターは、ZooKeeper ノードの代わりに KRaft コントローラーを使用してメタデータ管理を行います。

Q: KRaft とは何ですか
KRaft (Apache Kafka Raft) は、Apache Kafka クラスターのメタデータ管理を、外部の Apache ZooKeeper ノードから Apache Kafka 内のコントローラーのグループに移行するコンセンサスプロトコルです。この変更により、メタデータを Apache Kafka ブローカー内でトピックとして保存およびレプリケートできるようになり、メタデータの伝播速度が上がります。 「デベロッパーガイド」をご覧ください。

Q: Amazon MSK と ZooKeeper モードで KRaft モードを使用する場合に必要な API の変更はありますか?
Amazon MSK で KRaft モードを使用するために API を変更する必要はありません。ただし、現在もクライアントが --zookeeper 接続文字列を使用している場合は、--bootstrap-server 接続文字列を使用してクラスターに接続し、管理アクションを実行するようにクライアントを更新すべきです。--zookeeper フラグは Apache Kafka バージョン 2.5 で非推奨となり、Apache Kafka 3.0 以降では削除されています。そのため、最新の Apache Kafka クライアントバージョンと --bootstrap-server 接続文字列を使用することをお勧めします。

Q: ZooKeeper に接続するツールがあります。これらは ZooKeeper なしで、KRaft クラスターでどのように機能しますか?
使用するツールが、ZooKeeper 接続なしで Apache Kafka Admin API を使用できることを確認すべきです。例えば、KRaft モードのクラスターでの Cruise Control の使用に関する最新のドキュメントをご覧ください。Cruise Control は、ZooKeeper に接続せずに Apache Kafka を実行するためのステップも公開しています。

Q: KraFT ベースのクラスターでは、ブローカーごとに、ZooKeeper ベースのクラスターよりも多くのパーティションをホストできますか?
ブローカーあたりのパーティション数は、KRaft ベースのクラスターと ZooKeeper ベースのクラスターで同じです。ただし、KRaft では、クラスターでより多くのブローカーをプロビジョニングすることで、クラスターごとにより多くのパーティションをホストできます。

統合

Q. Amazon MSK と統合されるのはどの AWS のサービスですか?
Amazon MSK は次のサービスと統合されます。

 

Amazon MSK Serverless は以下と統合されます。
  • Kinesis Data Firehose を使用して MSK から Amazon S3 にデータを簡単かつコードなしで配信している Amazon S3。
  • ネットワークの分離とセキュリティ用の Amazon VPC
  • メトリクス用の Amazon CloudWatch
  • Apache Kafka とサービス API の認証と認可のための Amazon IAM
  • Apache Kafka アプリケーションが使用するスキーマの進化を管理する AWS Glue スキーマレジストリ
  • AWS API ログ用の AWS CloudTrail
  • プライベート接続のための AWS PrivateLink

スケーリング

Q: クラスタ内のストレージをどのようにスケールアップできますか?
AWS マネジメントコンソールまたは AWS CLI を使用して、プロビジョンドクラスター内のストレージをスケールアップできます。また、階層化ストレージを使用することで、ストレージ用のブローカーを追加することなく、クラスター上に事実上無制限にデータを保存することができます。サーバーレスクラスターでは、ストレージが使用状況に基づいてシームレスに拡張されます。
 
Q: 階層化ストレージはどのように機能するのですか?
Apache Kafka は、ログセグメントと呼ばれるファイルにデータを保存します。各セグメントが完了すると、クラスターまたはトピックレベルで設定されたサイズに基づいて、それは低コストストレージ階層にコピーされます。データは、指定された保持時間またはサイズだけパフォーマンス最適化されたストレージに保持され、その後削除されます。低コストストレージには、別に時間やサイズの制限設定があり、プライマリストレージ階層よりもその制限時間は長くなります。クライアントが低コスト階層に保存されたセグメントからデータを要求すると、ブローカーはそこからデータを読み取り、プライマリストレージからデータを提供するのと同じようにデータを提供します。

Q: クラスター内のストレージを自動的に拡張するにはどうすればよいですか?
AWS マネジメントコンソールを使用するか、AWS CLI または API を使用して AWS Application Auto Scaling ポリシーを作成することにより、Auto Scaling ストレージポリシーを作成できます。
 
Q: 既存のクラスター内でブローカー数のスケーリングは行えますか?
はい。プロビジョニングされた Amazon MSK クラスター用のブローカーの数を増やしたり、減らしたりすることを選択できます。

Q: 既存のクラスターでブローカーのサイズをスケールできますか?
はい。プロビジョンされた Amazon MSK クラスターで小規模または大規模のブローカータイプにスケーリングすることを選択できます。

Q. ブローカー間でパーティションのバランスを取るにはどうすればよいですか?
I/O の熱を管理するために、パーテーションのバランスを自動的に調整する Cruise Control を使用できます。詳細については、 Cruise Control のドキュメントをご覧ください。または、Apache Kafka Admin API kafka-reassign-partitions.sh を使用して、ブローカー間でパーティションを再度割り当てることもできます。サーバーレスクラスターでは、Amazon MSK が自動的にパーティションのバランスを取ります。

料金と可用性

Q: Amazon MSK の料金のしくみを教えてください。
料金は、作成するリソースによって異なります。詳細については、料金表ページをご覧ください。

Q: データレプリケーションの結果、データ転送料金は発生しますか?
いいえ、クラスター内のデータ転送はすべてサービスに含まれており、追加料金はありません。

Q. どの AWS リージョンで Amazon MSK が提供されていますか?
Amazon MSK のリージョン別利用状況については、ここに記載されています。

Q. データ転送の料金体系を教えてください。
プロビジョンドクラスターを使用して、Amazon MSK クラスターで送受信されたデータに対して通常の AWS データ転送料金をお支払いいただきます。ブローカー間のデータ転送、ブローカーおよび Apache ZooKeeper ノード間のデータ転送など、同じリージョンのクラスター内におけるデータ転送に料金はかかりません。

サーバーレスクラスターでは、別のリージョンとの間で転送されるデータ、およびパブリックインターネットに転送されるデータについては、標準の AWS データ転送料金をお支払いいただきます。

コンプライアンス

Q. Amazon MSK に適用されるコンプライアンスプログラムは何ですか?
Amazon MSK は以下のプログラムに準拠または対応しています。

  • HIPAA 対応
  • PCI
  • ISO
  • SOC 1、2、3

AWS のサービスとコンプライアンスプログラムの完全なリストについては、コプライアンスプログラムによる AWS 対象範囲内のサービスを参照してください

サービスレベルアグリーメント (SLA)

Q. Amazon MSK の SLA は何を保証していますか?
Amazon MSK SLA は、Amazon MSK に最低 99.9% の月間アップタイム率を保証しています (MSK Serverless および MSK Connect を含む)。
 
Q: SLA サービスクレジットの資格を有しているかどうかは、どうすればわかりますか?
Amazon MSK でのマルチ AZ 配置で、毎月の請求サイクル中に月間稼働率が 99.9% 未満の場合、Amazon MSK SLA に基づく Amazon MSK の SLA クレジットを取得できます。
 
SLA の利用規約に関するすべての詳細、およびクレジット請求方法の詳細については、 Amazon MSK SLA の詳細ページをご参照ください。

レプリケーション

Q: Amazon MSK Replicator とは何ですか?
Amazon MSK Replicator は Amazon MSK の機能であり、これを使用することで、お客様はコードを記述したり、インフラストラクチャを管理したりすることなく、異なる AWS リージョン (クロスリージョンレプリケーション) または同じ AWS リージョン内の Amazon MSK クラスター間でデータを確実にレプリケートできます (同一リージョンレプリケーション)。クロスリージョンレプリケーション (CRR) を使用して、可用性が高く耐障害性のあるマルチリージョンストリーミングアプリケーションを構築し、回復力を高めることができます。また、CRR を使用して、さまざまな地域のコンシューマーに低レイテンシーのアクセスを提供することもできます。SRR を使用して、1 つのクラスターから多数のクラスターにデータを分散し、パートナーやチームとデータを共有できます。SRR または CRR を使用して、複数のクラスターのデータを 1 つのクラスターに集約して分析することもできます。

Q: MSK Replicator を使用するにはどうすればよいですか?
ソースとターゲットの MSK クラスターのペア間のレプリケーションを設定するには、デスティネーションの AWS リージョンに Replicator を作成する必要があります。Replicator を作成するには、ソースとターゲットの MSK クラスターの Amazon リソースネーム (ARN)、および MSK Replicator がクラスターへのアクセスに使用できる AWS Identity and Access Management (IAM) ロールなどの詳細を指定します。ターゲット MSK クラスターがまだ存在しない場合は、作成する必要があります。また、トピック名の設定や Replicator の開始位置などの追加設定を構成するオプションもあります。

Q: MSK Replicator ではどのタイプの Kafka クラスターがサポートされていますか?
MSK Replicator は MSK クラスター間のレプリケーションのみをサポートします。プロビジョンド MSK クラスターとサーバーレスタイプの両方の MSK クラスターがサポートされます。MSK Replicator を使用して、プロビジョンドからサーバーレスへ、またはその逆に移行することもできます。その他の Kafka クラスターはサポートされていません。

Q: レプリケートするトピックを指定できますか?
はい。Replicator の作成時に、許可リストと拒否リストを使用してレプリケートするトピックを指定できます。

Q: MSK Replicator はトピック設定とコンシューマーグループのオフセットをレプリケートしますか?
はい。MSK Replicator は、トピック構成、アクセスコントロールリスト (ACL)、コンシューマーグループオフセットなどの必要な Kafka メタデータを自動的にレプリケートするため、消費アプリケーションはフェイルオーバー後にシームレスに処理を再開できます。データのみをレプリケートする場合は、これらの設定を 1 つ以上オフにすることができます。Replicator の作成時に、許可リストまたは拒否リストを使用して、レプリケートするコンシューマーグループを指定することもできます。

Q: イングレススループットが変化した場合、レプリケーションをスケールする必要がありますか?
いいえ。MSK Replicator は、イングレススループットの変化に対応するために、基盤となるレプリケーションインフラストラクチャを自動的にデプロイ、プロビジョニング、スケールします。

Q: 異なる AWS アカウントの MSK クラスター間でデータをレプリケートできますか?
いいえ、MSK Replicator は、同じ AWS アカウント内の MSK クラスター間のレプリケーションのみをサポートします。

Q: レプリケーションをモニタリングするにはどうすればよいですか?
宛先リージョンで Amazon CloudWatch を利用して、各 Replicator について、トピックおよび集計レベルで「ReplicationLatency、MessageLag、および ReplicatorThroughput」のメトリクスを追加料金なしで表示できます。メトリクスは「AWS/Kafka」名前空間の ReplicatorName の下に表示されます。また、「ReplicatorFailure、AuthError、ThrottleTime」メトリクスを確認して、Replicator が問題なく実行しているかどうかを確認することもできます。

Q: MSK Replicator を使用して、1 つのクラスターから複数のクラスターにデータをレプリケートしたり、多数のクラスターから 1 つのクラスターにデータをレプリケートしたりできますか?
はい。必要なのは、ソースとターゲットのクラスターペアごとに異なる Replicator を作成することだけです。

Q: MSK Replicator はソースとターゲット MSK クラスターにどのように接続しますか?
MSK Replicator は IAM Access Control を使用してソースクラスターとターゲットクラスターに接続します。Replicator を作成するには、IAM Access Control のソースとターゲット MSK クラスターを有効にする必要があります。Amazon MSK は複数の認証方法を同時にサポートしているため、クライアントでは SASL/SCRAM や mTLS などの他の認証方法を引き続き使用できます。

Q: MSK Replicator ではどのくらいのレプリケーションレイテンシーが予想されますか?
MSK Replicator はデータを非同期にレプリケートします。レプリケーションレイテンシーは、MSK クラスターの AWS リージョン間のネットワーク距離、ソースクラスターとターゲットクラスターのスループットキャパシティ、ソースクラスターとターゲットクラスターのパーティション数など、さまざまな要因によって異なります。レイテンシーが大きい場合は、「トラブルシューティングガイド」に従ってください。

Q: トピック名を MSK Replicator と同じに維持できますか?
はい。MSK Replicator では、新しい Replicator を作成する際に、[プレフィックス] と [同一] の中からトピック名の設定を選択できます。デフォルトでは、MSK Replicator は、トピック名に自動生成されたプレフィックスを追加して、ターゲットクラスターに新しいトピックを作成します。例えば、MSK Replicator は、「トピック」のデータを、ソースクラスターから「<sourceKafkaClusterAlias>.topic」というターゲットクラスターの新しいトピックにレプリケートします。DescribeReplicator API または MSK コンソールの [Replicator の詳細] ページを使用して、ターゲットクラスターのトピック名に追加されるプレフィックスを [sourceKafkaClusterAlias] フィールドで確認できます。元の名前を保持しながらトピックをターゲットクラスターにレプリケートするのに必要なのは、トピック名の設定を [同一] に設定することだけです。

Q:[同一] のトピック名の設定を使用すべきなのはなぜですか?
AWS リージョン全体で可用性が高く、回復力のあるストリーミングデータアーキテクチャの構築を簡素化するには、[同一] のトピック名の設定を使用すべきです。元のトピック名を保持しながら Kafka トピックを他の Amazon MSK クラスターにレプリケートすることで、この設定は、レプリケーションのセットアップまたはフェイルオーバーイベント中にクライアントアプリケーションを再設定する必要性を軽減します。これにより、複数のリージョンにまたがる Active/Passive クラスター設定を確立しやすくなり、回復力と可用性の向上を実現できます。また、クラスター間のデータ集約、MSK クラスター間の移行、複数の地域へのデータ分散などのユースケースも効率化されます。Kafka レコードヘッダーにメタデータがさらに追加された際にクライアントがデータを処理できない場合は、この設定を使用すべきではありません。

Q:[同一] のトピック名の設定で無限レプリケーションループのリスクはありますか?
いいえ。MSK Replicator は、レコードが発生元の Kafka トピックにレプリケートされるのを自動的に防止し、無限レプリケーションループを回避します。これを実現するために、レプリケーションの一環として、MSK Replicator はレコードのヘッダーにメタデータを追加します。

Q:既存の Replicator を更新して、[同一] のトピック名の設定を使用できますか?
いいえ。Replicator の作成後にトピック名の設定を変更することはできません。

Q: レプリケーションを使用して、複数のリージョンにまたがるストリーミングアプリケーションの回復力を高めるにはどうすればよいですか?
MSK Replicator を使用してアクティブ/アクティブまたはアクティブ/パッシブのクラスタートポロジーを設定し、リージョン間の Kafka アプリケーションの回復性を高めることができます。アクティブ/アクティブ設定では、両方の MSK クラスターが読み取りと書き込みをアクティブに処理しています。比較すると、Active/Passive 設定では、一度に 1 つの MSK クラスターのみがストリーミングデータをアクティブに提供し、もう 1 つのクラスターはスタンバイ状態になります。Active/Passive 設定には [同一] のトピック名の設定を使用し、Active/Active 設定には [プレフィックス] の設定を使用することをお勧めします。ただし、[プレフィックス] 設定を使用する場合、レプリケートされたトピックを読み取るためにコンシューマーを再設定する必要があります。クライアントの再設定を避けたい場合は、Active/Active 設定にも [同一] の設定を使用できます。ただし、各 Replicator は、通常の 2 倍のデータ量を処理する必要があるため (レプリケーション用に 1 回、無限ループを防止するために 1 回)、Replicator ごとに追加のデータ処理料金とデータ転送料金が発生します。

Q:どの Kafka バージョンが [同一] のトピック名の設定をサポートしていますか?
これは、Kafka バージョン 2.8.1 以降で実行されているすべての MSK クラスターでサポートされています。

Q: ソースクラスターの既存のデータをレプリケートできますか?
はい。デフォルトでは、新しい Replicator を作成すると、ソースクラスターのストリームの先端 (最新のオフセット) からデータのレプリケートが開始されます。あるいは、既存のデータをレプリケートする場合は、ソースクラスターのトピックパーティションの最も早いオフセットからデータのレプリケートを開始するように新しい Replicator を設定できます。

Q: レプリケーションによってソースクラスターのコンシューマーがスロットリングされる可能性はありますか?
MSK Replicator はソースクラスターのコンシューマーとして機能するため、レプリケーションによってソースクラスターの他のコンシューマーがスロットリングされる可能性があります。これは、ソースクラスターの読み取りキャパシティと、レプリケートするデータのスループットによって異なります。ソースクラスターとターゲットクラスターに同じキャパシティをプロビジョニングし、必要なキャパシティを計算する際にレプリケーションスループットを考慮することをお勧めします。また、ソースクラスターとターゲットクラスターの Replicator の Kafka クォータを設定して、Replicator が使用できるキャパシティを制御することもできます。

Q: ターゲットクラスターに書き込む前にデータを圧縮できますか?
はい。Replicator の作成時に、「None」、「GZIP」、「Snappy」、「LZ4」、「ZSTD」の中から圧縮コーデックを選択できます。

Amazon MSK の開始方法

コストの計算
コストの計算

Amazon MSK 料金表ページを参照してください。

Read the documentation
入門ガイドを確認する

Amazon MSK で Apache Kafka クラスターをセットアップする方法については、このステップバイステップガイドをご覧ください。

Apache Kafka クラスターの実行
Apache Kafka クラスターの実行

Amazon MSK で Apache Kafka クラスターを実行し始めます。Amazon MSK コンソールにログインします。