

終止支援通知：2026 年 10 月 7 日 AWS 將終止 的支援 AWS Proton。2026 年 10 月 7 日之後，您將無法再存取 AWS Proton 主控台或 AWS Proton 資源。您部署的基礎設施將保持不變。如需詳細資訊，請參閱[AWS Proton 服務棄用和遷移指南](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 元件基礎設施做為程式碼檔案
<a name="ag-components-iac"></a>

元件基礎設施即程式碼 (IaC) 檔案類似於其他 AWS Proton 資源的元件基礎設施。在此處了解元件特有的一些詳細資訊。如需為 撰寫 IaC 檔案的完整資訊 AWS Proton，請參閱 [為 編寫範本和建立套件 AWS Proton](ag-template-authoring.md)。

## 搭配元件使用參數
<a name="ag-components-iac.namespace"></a>

 AWS Proton 參數命名空間包含一些參數，服務 IaC 檔案可以參考這些參數，以取得相關聯的元件名稱和輸出。命名空間也包含元件 IaC 檔案可以參考的參數，以便從與元件相關聯的環境、服務和服務執行個體取得輸入、輸出和資源值。

元件沒有自己的輸入，它會從其連接的服務執行個體取得其輸入。元件也可以讀取環境輸出。

如需在元件和相關聯的服務 IaC 檔案中使用參數的詳細資訊，請參閱 [元件 CloudFormation IaC 檔案參數詳細資訊和範例](comp-parameters.md)。如需 AWS Proton 參數的一般資訊和參數命名空間的完整參考，請參閱 [AWS Proton 參數](parameters.md)。

## 編寫強大的 IaC 檔案
<a name="ag-components-iac.robust"></a>

身為管理員，當您建立服務範本版本時，您可以決定是否要允許從範本版本建立的服務執行個體具有連接的元件。請參閱 API *AWS Proton 參考*中 [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html) API 動作的 [supportedComponentSources](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html#proton-CreateServiceTemplateVersion-request-supportedComponentSources) 參數。不過，對於任何未來的服務執行個體，建立執行個體的人員會決定是否將元件連接至執行個體，以及 （如果是直接定義的元件） 撰寫元件 IaC 通常是不同的人員，也就是使用您的服務範本的開發人員。因此，您無法保證元件會連接到服務執行個體。您也無法保證特定元件輸出名稱的存在，或這些輸出值的有效性和安全性。

AWS Proton 和 Jinja 語法可協助您解決這些問題，並撰寫強大的服務範本，以下列方式進行轉譯而不會失敗：
+ *AWS Proton 參數篩選條件* – 當您參考元件輸出屬性時，您可以使用*參數篩選條件*，也就是驗證、篩選和格式化參數值的修飾詞。如需詳細資訊和範例，請參閱 [CloudFormation IaC 檔案的參數篩選條件](parameter-filters.md)。
+ *單一屬性預設值* – 當您參考元件的單一資源或輸出屬性時，您可以保證使用 `default` 篩選條件來轉譯您的服務範本不會失敗，無論是否有預設值。如果參考的元件或特定輸出參數不存在，則會改為轉譯預設值 （或空白字串，如果您尚未指定預設值），且轉譯成功。如需詳細資訊，請參閱[為不存在的參考提供預設值](parameter-filters.md#parameter-filters.proton.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 }}`