AWS CloudFormation で、次のエラーを解決したいです。 "Resource of type 'AWS::MSK::Cluster' with identifier did not stabilize." (識別子を持つ 'AWS:: MSK:: Cluster' タイプのリソースの安定化に失敗しました。)
簡単な説明
このエラーは、プロビジョニングリソースがタイムアウト期間内にテンプレートプロパティで指定された状態に到達できないことを示しています。タイムアウトは、アクセス許可の欠如、リソース制限の例外、無効なリソースプロパティ仕様、または基盤となる MSK サービスの中断が原因である可能性があります。
CloudFormation イベントでは、エラーのトラブルシューティングを行うための理由が正確にわからない場合があります。エラーの正確な理由を調べるには、Amazon Managed Streaming for Apache Kafka (Amazon MSK) コンソールを使用してください。
注: スタックのロールバックを防ぐには、CloudFormation コンソールの [スタック障害] オプションで [正常にプロビジョニングされたリソースを保持する] を選択します。
解決策
発生する可能性のある一般的なエラーと、その解決方法を次に示します。
CloudWatch ログにブローカーログを配信していて、エラーが発生した
Amazon CloudWatch Logs にブローカーログを送信するクラスターを作成すると、次のいずれかのエラーレスポンスが返されることがあります。これらのエラーレスポンスは、CloudWatch ログの AWS CloudTrail ログで確認できます。障害が発生したクラスターがまだ存在する場合は、Amazon MSK コンソールでエラーレスポンスを確認することもできます。
エラー: "InvalidInput.LengthOfCloudWatchResourcePolicyLimitExceeded"
上記のエラーは、Amazon MSK ブローカーログに関連付けられている CloudWatch リソースポリシーの長さが、CloudWatch で許可されている 5120 文字のクォータを超えた場合に発生します。CloudWatch のログ記録がクラスターで有効になっており、ロググループがそのクラスターに関連付けられている場合があります。
Amazon MSK は、ログのストリーミングが許可されているリソースのリストにロググループの ARN を追加しようとします。このサービスは、ロググループの ARN を AWSLogDeliveryWrite20150319 リソースポリシーに追加します。詳細については、「AWS サービスからのログ記録を有効にする」を参照してください。リソースポリシーが文字数制限を超えると、CloudWatch Logs はそのサービスのリソースポリシーで /aws/vendedlogs/* を自動的に有効にします。
CloudWatch リソースポリシーを確認するには、AWS コマンドラインインターフェイス (AWS CLI) コマンド describe-resource-policies を実行します。
注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
このエラーを解決するには、ロググループのプレフィックスに /aws/vendedlogs/ を追加します。次に、リソースを再作成します。詳細については、[追加のアクセス許可が必要なログ記録 [V1](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions)] で「ロググループのリソースポリシー」を参照してください。
エラー: "InvalidInput.NumberOfCloudWatchResourcePoliciesLimitExceeded"
上記のエラーは、AWS リージョンごとの CloudWatch リソースポリシーの最大数に達した場合に発生します。最大数は 10 で、このクォータは変更できません。このエラーを解決するには、アカウント内の既存の CloudWatch Logs ポリシーを選択し、次の JSON スクリプトをアタッチします。
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": ["logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": ["*"]
}
エラーが解決されない場合は、スクリプトを別の CloudWatch Logs ポリシーにアタッチします。次に、クラスターを再作成して CloudWatch Logs へのブローカーログ配信を設定します。
エラー: "InvalidInput.InsufficientPermissions"
上記のエラーは、ユーザーまたはロールに MSK クラスターを作成するのに必要なアクセス許可がない場合に発生します。CloudTrail ログで、Access Denied for MSK API operations (MSK API 操作でアクセスが拒否されました) というエラーメッセージを探します。または、CreateLogGroup など、CloudWatch ログ API に関連するエラーを探します。
このエラーを解決するために、ユーザーまたはロールに必要なアクセス許可を持っていることを確認します。AWS マネージドポリシーに必要なアクセス許可を設定する方法の詳細については、「AWS マネージドポリシー: AWSMSKFull アクセス」を参照してください。
プロパティの指定が無効なため、エラーが発生しました
クラスターの作成中にAWS::MSK::Cluster リソースプロパティに無効または存在しない値を割り当てると、安定化に失敗というエラーが発生します。クラスタープロパティに割り当てるすべての値が、許容される形式であることを確認してください。
関連情報
Amazon CloudWatch ログにブローカーログを配信していて、エラーが発生した
CloudWatch Logs に送信されたログ