Component Infrastructure as Code ファイル - AWS Proton

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

Component Infrastructure as Code ファイル

Component infrastructure as code (IaC) ファイルは他の AWS Proton リソースのファイルに似ています。コンポーネント固有の詳細についてはこちらをご覧ください。AWS Proton の IaC ファイルのオーサリングの詳細については、のテンプレートの作成とバンドルの作成 AWS Proton を参照してください。

コンポーネントでのパラメータの使用

AWS Proton パラメータ名前空間には、サービス IaC ファイルが参照して関連するコンポーネントの名前と出力を取得できるパラメータがいくつかあります。名前空間には、コンポーネントが関連付けられている環境、サービス、およびサービスインスタンスから入力、出力、およびリソース値を取得するためにコンポーネント IaC ファイルが参照できるパラメーターもあります。

コンポーネントに専用の入力はありません。アタッチ先のサービスインスタンスから入力を取得します。コンポーネントは環境出力も読み取ることができます。

コンポーネントと関連サービスの IaC ファイルにおけるパラメータの使用方法については、コンポーネント CloudFormation IaC ファイルパラメータの詳細と例 を参照してください。パラメータに関する一般的な情報と、AWS Proton パラメータ名前空間の詳細なリファレンスについては、AWS Proton パラメータ を参照してください。

堅牢な IaC ファイルのオーサリング

あなたは、サービステンプレートバージョンの作成時に、そのテンプレートバージョンから作成したサービスインスタンスへのコンポーネントのアタッチを許可するかどうかを決定できます。AWS Proton API リファレンスCreateServiceTemplateVersion API アクションの SupportedComponentSources パラメータを参照してください。ただし、将来のサービスインスタンスでは、インスタンスを作成し、コンポーネントをそのインスタンスにアタッチするかどうかを決定し、(直接定義のコンポーネントの場合) コンポーネント IaC をオーサリングするユーザーは、通常、別の人、すなわち、あなたのサービステンプレートを使用する開発者です。したがって、コンポーネントがサービスインスタンスにアタッチされることを開発者は保証できません。また、特定のコンポーネント出力名の存在や、これらの出力の値の有効性と安全性を保証することもできません。

AWS Proton と Jinja 構文は、これらの問題を回避し、以下の方法で障害なくレンダリングできる堅牢なサービステンプレートをオーサリングするのに役立ちます。

  • AWS Proton パラメータフィルタ — コンポーネントの出力プロパティを参照するとき、パラメータ値を検証、フィルタリング、フォーマットする修飾子であるパラメータフィルタを使用できます。詳細な説明と例については、 CloudFormation IaC ファイルのパラメータフィルター を参照してください。

  • 単一プロパティデフォルト — コンポーネントの 1 つのリソースや出力プロパティを参照する場合、デフォルト値の有無にかかわらず、default フィルターを使用すればあなたのサービステンプレートによるレンダリングが失敗することはありません。コンポーネント、または参照している特定の出力パラメーターが存在しない場合、代わりにデフォルト値 (デフォルト値を指定していない場合は空の文字列) がレンダリングされ、レンダリングは成功します。詳細については、「存在しない参照にはデフォルト値を指定します。」を参照してください。

    例:

    • {{ service_instance.components.default.name | default("") }}

    • {{ service_instance.components.default.outputs.my-output | default("17") }}

    注記

    直接定義のコンポーネントを指定する名前空間の .default 部分を、参照するプロパティが存在しない場合にデフォルト値を提供する default フィルターと混同しないでください。

  • オブジェクト参照全体 — コンポーネント全体、またはコンポーネントの出力のコレクションを参照すると、AWS Proton で空のオブジェクト {} が戻るので、あなたのサービステンプレートのレンダリングが失敗することはありません。追加のアクションを実行する必要はありません。参照先は必ず空のオブジェクトを取得できるコンテキストで行うか、または {{ if .. }} 条件で、空のオブジェクトをテストしてください。

    例:

    • {{ service_instance.components.default }}

    • {{ service_instance.components.default.outputs }}