

# Amazon CloudFormation 构件
<a name="continuous-delivery-codepipeline-cfn-artifacts"></a>

在 CodePipeline 运行管道时，CodePipeline 对构件执行一些任务。对于 Amazon CloudFormation，构件可以包含堆栈模板文件和/或模板配置文件。CodePipeline 使用这些构件处理 Amazon CloudFormation 堆栈和更改集。

如果将 Amazon Simple Storage Service（Amazon S3）用作源存储库，您必须将模板和模板配置文件压缩为一个文件，然后再将它们上传到 S3 桶中。对于其他存储库 (如 GitHub 和 Amazon CodeCommit)，可上传构件而无需进行压缩。有关更多信息，请参阅在*《Amazon CodePipeline 用户指南》*中的[创建管道、阶段和操作](https://docs.amazonaws.cn/codepipeline/latest/userguide/pipelines-create.html)。

您可以将所需数目的文件添加到您的存储库。例如，您可能希望包含同一模板的两个不同配置：一个用于测试配置，另一个用于生产配置。

本主题描述每个构件类型。

**Topics**
+ [堆栈模板文件](#w2aac21c15c13)
+ [模板配置文件](#w2aac21c15c15)
+ [另请参阅](#w2aac21c15c17)

## 堆栈模板文件
<a name="w2aac21c15c13"></a>

堆栈模板文件定义 Amazon CloudFormation 预置和配置的资源。这些文件与您在使用 Amazon CloudFormation 创建或更新堆栈时使用的模板文件相同。您可以使用 YAML 或 JSON 格式的模板。有关模板的更多信息，请参阅[CloudFormation 模板部分](template-anatomy.md)。

## 模板配置文件
<a name="w2aac21c15c15"></a>

模板配置文件是 JSON 格式的文本文件，可指定模板参数值、[堆栈策略](protect-stack-resources.md)和标签。使用这些配置文件可指定参数值或堆栈的堆栈策略。您指定的所有参数值都必须在关联的模板中进行声明。

如果在该文件中包括敏感信息（如密码），请限制对该文件的访问。例如，如果您将构件上传到 S3 存储桶，可使用 [S3 存储桶策略或用户策略](https://docs.amazonaws.cn/AmazonS3/latest/userguide/access-management.html)来限制访问。

要创建配置文件，可使用以下格式：

```
{
  "Parameters" : {
    "NameOfTemplateParameter" : "ValueOfParameter",
    ...
  },
  "Tags" : {
    "TagKey" : "TagValue",
    ...
  }, 
  "StackPolicy" : {
    "Statement" : [
      StackPolicyStatement
    ]
  }
}
```

以下示例为 `TestEC2Key` 参数指定 `KeyName`，并添加一个值为 `Department` 的 `Marketing` 标签，以及一个允许所有更新操作（会删除资源的更新操作除外）的堆栈策略。

```
{
  "Parameters" : {
    "KeyName" : "TestEC2Key"
  },
  "Tags" : {
    "Department" : "Marketing"
  },
  "StackPolicy" : {
    "Statement" : [
      {
        "Effect" : "Allow",
        "NotAction" : "Update:Delete",
        "Principal": "*",
        "Resource" : "*"
      }
    ]
  }
}
```

## 另请参阅
<a name="w2aac21c15c17"></a>

下列相关资源可帮助您处理这些参数。
+ 有关 CodePipeline 中 CloudFormation 操作参数的更多信息， 请参阅*《Amazon CodePipeline 用户指南》*中的 [Amazon CloudFormation 部署操作配置引用](https://docs.amazonaws.cn/codepipeline/latest/userguide/action-reference-CloudFormation.html)。
+ 有关操作提供方的示例模板值，例如 `Owner` 字段或 `configuration` 字段的值，请参阅*《Amazon CodePipeline 用户指南》*中的[操作结构参考](https://docs.amazonaws.cn/codepipeline/latest/userguide/action-reference.html)。
+ 要下载 YAML 或 JSON 格式的示例管道堆栈模板，请参阅*《Amazon CodePipeline 用户指南》*中[教程：使用 Amazon CloudFormation 创建管道](https://docs.amazonaws.cn/codepipeline/latest/userguide/tutorials-cloudformation.html)。