我想解决 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 控制台中为 Stack failure options(堆栈故障选项)选择 Preserve successfully provisioned resources(保留成功预调配的资源)。
解决方法
以下是您可能收到的一些常见错误及其解决方案。
向 CloudWatch Logs 传送代理日志时出错
在创建向 Amazon CloudWatch Logs 发送代理日志的集群时,您可能会收到以下错误响应之一。您可以在 CloudWatch Logs 的 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] 的日志记录中的日志组资源策略。
错误: “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 日志中查找错误消息,显示 MSK API 操作的 Access Denied(访问被拒绝)。或者,查找与 CloudWatch Logs API 相关的错误,例如 CreateLogGroup。
要解决此错误,请确保用户或角色拥有所需的权限。有关如何配置 AWS 托管式策略所需权限的详细信息,请参阅 AWS 托管式策略: AWSMSKFull Access。
由于属性规范无效而导致错误
在创建集群期间为 AWS::MSK::Cluster 资源属性分配无效或不存在的值时,将出现“did not stabilize error(无法稳定错误)”。确保分配给集群属性的所有值均采用允许的格式。
相关信息
向 Amazon CloudWatch Logs 传送代理日志时出错
发送到 CloudWatch Logs 的日志