本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
总结模板文件 AWS Proton
在准备环境和服务基础设施即代码 (IaC) 文件及其相应的架构文件后,您必须将它们放置到不同的目录中。您还必须创建一个清单 YAML 文件。清单文件列出了目录中的 IaC 文件、渲染引擎以及用于开发该模板中的 IaC 的模板语言。
注意
也可以独立于模板捆绑包使用清单文件,以作为直接定义的组件 的直接输入。在这种情况下,它总是为两者 CloudFormation 和 Terraform 指定一个 IaC 模板文件。有关组件的更多信息,请参阅AWS Proton 组件。
清单文件需要符合以下示例中所示的格式和内容。
CloudFormation 清单文件格式:
使用 CloudFormation,您可以列出单个文件。
infrastructure: templates: - file: "cloudformation.yaml" rendering_engine: jinja template_language: cloudformation
Terraform 清单文件格式:
通过使用 Terraform,您可以明确列出单个文件,或使用 *
通配符列出目录中的每个文件。
注意
通配符仅包含名称以 .tf
结尾的文件。将忽略其他文件。
infrastructure: templates: - file: "*" rendering_engine: hcl template_language: terraform
CodeBuild基于配置的清单文件格式:
使用 CodeBuild基于基础的配置,您可以指定配置和取消置备 shell 命令。
注意
除了清单以外,您的捆绑包还应包含您的命令依赖的任何文件。
以下示例清单使用 CodeBuild基于配置的资源调配,使用 () 来配置(部署)和取消配置 AWS Cloud Development Kit (AWS CDK) (销毁AWS CDK)资源。模板捆绑包还应包含 CDK 代码。
在预置期间,AWS Proton 创建一个输入文件,其中包含您在名为 proton-input.json
的模板架构中定义的输入参数的值。
infrastructure: templates: - rendering_engine: codebuild settings: image: aws/codebuild/amazonlinux2-x86_64-standard:4.0 runtimes: nodejs: 16 provision: - npm install - npm run build - npm run cdk bootstrap - npm run cdk deploy -- --require-approval never --outputs-file proton-outputs.json - jq 'to_entries | map_values(.value) | add | to_entries | map({key:.key, valueString:.value})' < proton-outputs.json > outputs.json - aws proton notify-resource-deployment-status-change --resource-arn $RESOURCE_ARN --status IN_PROGRESS --outputs file://./outputs.json deprovision: - npm install - npm run build - npm run cdk destroy project_properties: VpcConfig: VpcId: "{{ environment.inputs.codebuild_vpc_id }}" Subnets: "{{ environment.inputs.codebuild_subnets }}" SecurityGroupIds: "{{ environment.inputs.codebuild_security_groups }}"
为环境或服务模板包设置目录和清单文件后,您可以将这些目录压缩成焦油球,然后将其上传到可以检索它们的亚马逊简单存储服务 (Amazon S3) 存储桶 AWS Proton ,或者上传到模板同步 Git 存储库。
当您创建注册的环境或服务模板的次要版本时 AWS Proton,您需要提供指向位于 S3 存储桶中的环境或服务模板包 tar ball 的路径。 AWS Proton 将其与新的模板次要版本一起保存。您可以选择新的模板次要版本来创建或更新环境或服务 AWS Proton。
打包环境模板捆绑包
您创建的环境模板包有两种类型。 AWS Proton
-
要为标准 环境模板创建环境模板捆绑包,请在目录中放置架构、基础设施即代码 (IaC) 文件和清单文件,如以下环境模板捆绑包目录结构中所示。
-
要为客户托管 环境模板创建环境模板捆绑包,请仅提供架构文件和目录。不要包含基础架构目录和文件。 AWS Proton 如果包含基础架构目录和文件,则会引发错误。
有关更多信息,请参阅注册并发布模板。
CloudFormation 环境模板包目录结构:
/schema schema.yaml /infrastructure manifest.yaml cloudformation.yaml
Terraform 环境模板捆绑包目录结构:
/schema schema.yaml /infrastructure manifest.yaml environment.tf
打包服务模板捆绑包
要创建服务模板捆绑包,您必须将架构、基础设施即代码 (IaC) 文件和清单文件放置在目录中,如服务模板捆绑包目录结构示例中所示。
如果在您的模板捆绑包中不 包含服务管道,则不要 包含管道目录和文件,并在创建与该模板捆绑包关联的服务模板时设置 "pipelineProvisioning": "CUSTOMER_MANAGED"
。
注意
在创建服务模板后,您无法修改 pipelineProvisioning
。
有关更多信息,请参阅注册并发布模板。
CloudFormation 服务模板包目录结构:
/schema schema.yaml /instance_infrastructure manifest.yaml cloudformation.yaml /pipeline_infrastructure manifest.yaml cloudformation.yaml
Terraform 服务模板捆绑包目录结构:
/schema schema.yaml /instance_infrastructure manifest.yaml instance.tf /pipeline_infrastructure manifest.yaml pipeline.tf