テンプレートファイルをまとめるAWS Proton - AWS Proton

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

テンプレートファイルをまとめるAWS Proton

環境とサービスの Infrastructure as Code (IaC) ファイルとそれぞれのスキーマファイルを準備したら、それらをディレクトリに編成する必要があります。マニフェスト YAML ファイルも作成する必要があります。マニフェストファイルは、ディレクトリ内の IaC ファイル、レンダリングエンジン、およびこのテンプレート内の IaC の開発に使用されるテンプレート言語をリストします。

注記

マニフェストファイルは、直接定義したコンポーネントへの直接入力として、テンプレートバンドルとは独立して使用することもできます。この場合、 CloudFormation とTerraformの両方について、常に1つの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ベースプロビジョニングでは、プロビジョニングとプロビジョニング解除のシェルコマンドを指定します。

注記

マニフェストに加えて、バンドルにはコマンドが依存するすべてのファイルが含まれている必要があります。

次のマニフェストの例では、 CodeBuildベースプロビジョニングを使用して、() を使用してリソースのプロビジョニング (デプロイ) とプロビジョニング解除AWS Cloud Development Kit (AWS CDK) (破棄AWS CDK) を行っています。テンプレートバンドルには CDK コードも含める必要があります。

プロビジョニング中に、AWS Protonテンプレートのスキーマで定義した入力パラメータの値を含む入力ファイルを作成します。input_typeテンプレートのマニフェストファイルのプロパティを使用して、生成される入力ファイルの形式を設定できます。このプロパティは次のいずれかの値です。

  • JSON(デフォルト) — という名前の JSONAWS Protonproton-input.json 入力ファイルを生成します。

  • HCL— 拡張子の付いた HCLAWS Proton.tfvars 入力ファイルを生成します。このファイルは、プロビジョニングコードで Terraform を使用してインフラストラクチャをプロビジョニングする場合に便利です。

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 }}"

環境またはサービステンプレートバンドルのディレクトリとマニフェストファイルを設定した後で、ディレクトリを gzip で圧縮して tar ball にし、ディレクトリを gzip で圧縮して tar ball にし、AWS Proton取得できるように Amazon Simple Storage Service (Amazon S3) バケットにアップロードします。

登録した環境やサービステンプレートのマイナーバージョンを作成する際にAWS Proton、S3 バケット内にある環境またはサービステンプレートのバンドル tar ball のパスを指定します。 AWS Protonそれを新しいテンプレートマイナーバージョンで保存します。新しいテンプレートのマイナーバージョンを選択して、環境またはサービスを作成または更新できますAWS Proton。

環境テンプレートバンドルのまとめ

作成する環境テンプレートバンドルには 2 種類がありますAWS Proton。

  • 標準環境テンプレートの環境テンプレートバンドルを作成するには、以下の環境テンプレートバンドルのディレクトリ構造のように、スキーマ、Infrastructure as Code (IaC) ファイル、マニフェストファイルをディレクトリに編成します。

  • カスタマーマネージド環境テンプレートの環境テンプレートバンドルを作成するには。スキーマファイルとディレクトリのみを指定します。インフラストラクチャディレクトリとファイルを含めないでください。 AWS Protonインフラストラクチャのディレクトリとファイルが含まれている場合、エラーが発生します。

詳細については、「テンプレートを登録して公開する」を参照してください。

CloudFormation 環境テンプレートバンドルディレクトリ構造:

/schema schema.yaml /infrastructure manifest.yaml cloudformation.yaml

Terraform 環境テンプレートバンドルディレクトリ構造:

/schema schema.yaml /infrastructure manifest.yaml environment.tf

サービステンプレートバンドルをまとめる

サービステンプレートバンドルを作成するには、サービステンプレートバンドルのディレクトリ構造例に示すように、スキーマ、Infrastructure as Code (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