

# 对所处理的模板进行故障排除
<a name="template-macros-troubleshoot-processed-template"></a>

使用宏时，可以在 CloudFormation 控制台中找到所处理的模板。

模板的阶段指示其处理状态：
+ `Original`：用户最初提交的用于创建或更新堆栈或堆栈集的模板。
+ `Processed`：CloudFormation 在处理任何引用的宏之后，用于创建或更新堆栈或堆栈集的模板。即使原始模板格式化为 YAML，已处理模板也会格式化为 JSON。

要排除故障，可使用所处理的模板。如果模板不引用宏，则原始模板和已处理模板是相同的。

有关更多信息，请参阅 [从 CloudFormation 控制台查看堆栈信息](cfn-console-view-stack-data-resources.md)。

要使用 AWS CLI 获取所处理的模板，应使用 [get-template](service_code_examples.md#get-template-sdk) 命令。

## 大小限制
<a name="template-macros-size-limitation"></a>

当处理的堆栈模板直接传递到 `CreateStack`、`UpdateStack` 或 `ValidateTemplate` 请求时，其最大大小为 51200 字节；或者当使用 Amazon S3 模板 URL 作为 S3 对象传递时，为 1MB。但是，在处理期间，CloudFormation 会更新模板的临时状态，因为它连续处理模板中包含的宏。因此，在处理期间，模板的大小可能会临时超出完全处理的模板所允许的大小。CloudFormation 允许为这些处理中的模板留出一些缓冲。但是，在设计模板和宏时，要始终考虑处理的堆栈模板所允许的最大大小。

如果在处理模板期间 CloudFormation 返回一个 `Transformation data limit exceeded` 错误，则说明您的模板超出了 CloudFormation 所允许的处理期间模板的最大大小。

要解决这一问题，可执行下列操作：
+ 将您的模板分成多个模板，以避免超出为处理中的模板规定的最大大小。例如：
  + 使用嵌套堆栈模板来封装模板的不同部分。有关更多信息，请参阅 [使用嵌套堆栈将模板拆分为可重复使用的部分](using-cfn-nested-stacks.md)。
  + 创建多个堆栈，并使用跨堆栈引用来相互交换信息。有关更多信息，请参阅 [引用其他 CloudFormation 堆栈中的资源输出](walkthrough-crossstackref.md)。
+ 减小给定宏返回的模板片段大小。CloudFormation 不会篡改宏返回的片段内容。