

終止支援通知：將於 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)。

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

# AWS Proton 元件
<a name="ag-components"></a>

元件是一種 AWS Proton 資源。它們可為服務範本增加靈活性。元件為平台團隊提供擴展核心基礎設施模式的機制，並定義保護機制，讓開發人員能夠管理其應用程式基礎設施的各個層面。

在 AWS Proton 管理員中，定義用於開發團隊和應用程式的標準基礎設施。不過，開發團隊可能需要針對其特定使用案例包含其他資源，例如 Amazon Simple Queue Service (Amazon SQS) 佇列或 Amazon DynamoDB 資料表。這些應用程式特定的資源可能會經常變更，特別是在應用程式的早期開發期間。在管理員撰寫的範本中維護這些頻繁變更可能很難管理和擴展 - 管理員需要維護更多範本，而不會增加真正的管理員值。讓應用程式開發人員為其應用程式編寫範本的替代方案也不理想，因為它會消除管理員標準化主要架構元件的能力，例如 AWS Fargate 任務。這是元件進來的位置。

透過 元件，開發人員可以將補充資源新增至其應用程式，超越環境和服務範本中定義的管理員。然後，開發人員將元件連接到服務執行個體。 AWS Proton 佈建元件定義的基礎設施資源，就像為環境和服務執行個體佈建資源一樣。

元件可以讀取服務執行個體輸入，並將輸出提供給服務執行個體，以獲得完全整合的體驗。例如，如果元件新增供服務執行個體使用的 Amazon Simple Storage Service (Amazon S3) 儲存貯體，則元件範本可以將環境和服務執行個體名稱納入命名儲存貯體的考量。當 AWS Proton 轉譯服務範本以佈建服務執行個體時，服務執行個體可以參考儲存貯體並使用它。

 AWS Proton 目前支援的元件是*直接定義的元件*。您可以將定義元件基礎設施的基礎設施即程式碼 (IaC) 檔案直接傳遞至 AWS Proton API 或主控台。這與您在範本套件中定義 IaC 並將套件註冊為範本資源的環境或服務不同，然後使用範本資源來建立環境或服務。

**注意**  
直接定義的元件可讓開發人員定義額外的基礎設施並進行佈建。使用相同的 AWS Identity and Access Management (IAM) 角色 AWS Proton 佈建在相同環境中執行的所有直接定義的元件。

管理員可以透過兩種方式控制開發人員可以使用元件執行的操作：
+ *支援的元件來源* – 管理員可以允許根據服務範本版本的屬性，將元件連接至 AWS Proton 服務執行個體。根據預設，開發人員無法將元件連接至服務執行個體。

  如需此屬性的詳細資訊，請參閱《 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) 參數。
**注意**  
當您使用範本同步時，當您在儲存庫中遞交服務範本套件的變更時， 會隱含地 AWS Proton 建立服務範本版本。在此情況下，您可以在與每個服務範本主要版本相關聯的檔案中指定此屬性，而不是在建立服務範本版本期間指定支援的元件來源。如需詳細資訊，請參閱[同步服務範本](create-template-sync.md#create-template-sync-service-templates)。
+ *元件角色* – 管理員可以將元件角色指派給環境。當 佈建由環境中直接定義的元件所定義的基礎設施時， 會 AWS Proton 擔任此角色。因此，元件角色會縮小 基礎設施的範圍，開發人員可以使用環境中直接定義的元件來新增這些基礎設施。如果沒有元件角色，開發人員無法在環境中建立直接定義的元件。

  如需指派元件角色的詳細資訊，請參閱《 API *AWS Proton 參考*》中 [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html) API 動作的 [componentRoleArn](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html#proton-CreateEnvironment-request-componentRoleArn) 參數。
**注意**  
[自我管理佈建](ag-works-prov-methods.md#ag-works-prov-methods-self) 環境不會使用元件角色。

**Topics**
+ [元件與其他 AWS Proton 資源相比如何？](#ag-components.compare)
+ [AWS Proton 主控台中的元件](#ag-components.console)
+ [AWS Proton API 和 中的元件 AWS CLI](#ag-components.api)
+ [元件常見問答集](#ag-components.faq)
+ [元件狀態](ag-components-states.md)
+ [元件基礎設施做為程式碼檔案](ag-components-iac.md)
+ [元件 CloudFormation 範例](ag-components-example-cfn.md)

## 元件與其他 AWS Proton 資源相比如何？
<a name="ag-components.compare"></a>

在許多方面，元件與其他 AWS Proton 資源類似。其基礎設施在 [IaC 範本檔案中](ag-components-iac.md)定義，以 CloudFormation YAML 或 Terraform HCL 格式撰寫。 AWS Proton 可以使用 [AWS受管佈建](ag-works-prov-methods.md#ag-works-prov-methods-direct)或[自我管理佈建來佈建](ag-works-prov-methods.md#ag-works-prov-methods-self)元件基礎設施。

不過，元件與其他 AWS Proton 資源有幾種不同：
+ *分離狀態* – 元件的設計是要連接到服務執行個體並擴展其基礎設施，但也可以處於*分離*狀態，其中它們不會連接到任何服務執行個體。如需元件狀態的詳細資訊，請參閱 [元件狀態](ag-components-states.md)。
+ *無結構描述* – 元件沒有與[範本套件](ag-template-authoring.md#ag-template-bundles)類似的關聯結構描述。元件輸入由服務定義。當元件連接到服務執行個體時，可能會耗用輸入。
+ *沒有客戶受管元件* – AWS Proton 一律為您佈建元件基礎設施。沒有*自己的資源*版本的元件。如需客戶受管環境的詳細資訊，請參閱 [建立環境](ag-create-env.md)。
+ *無範本資源* – 直接定義的元件沒有與環境和服務範本類似的關聯範本資源。您可以將 IaC 範本檔案直接提供給元件。同樣地，您直接提供資訊清單來定義範本語言和轉譯引擎，以佈建元件的基礎設施。您編寫範本檔案和資訊清單的方式類似於編寫[範本套件](ag-template-authoring.md#ag-template-bundles)。不過，透過直接定義的元件，您不需要在特定位置將 IaC 檔案儲存為套件，而且您不需要在 IaC 檔案 AWS Proton 外的 中建立範本資源。
+ *無 CodeBuild 型佈建* – 您無法使用自己的自訂佈建指令碼佈建直接定義的元件，稱為 *CodeBuild 型佈建*。如需詳細資訊，請參閱[CodeBuild 佈建的運作方式](ag-works-prov-methods.md#ag-works-prov-methods-codebuild)。

## AWS Proton 主控台中的元件
<a name="ag-components.console"></a>

使用 AWS Proton 主控台來建立、更新、檢視和使用 AWS Proton 元件。

下列主控台頁面與元件相關。我們包含頂層主控台頁面的直接連結。
+ [元件](https://console.aws.amazon.com//proton/#/components) – 檢視您 AWS 帳戶中的元件清單。您可以建立新的元件，並更新或刪除現有的元件。在清單上選擇元件名稱以檢視其詳細資訊頁面。

  **環境詳細資訊****和服務執行個體詳細資訊**頁面上也存在類似的清單。這些清單只會顯示與正在檢視的資源相關聯的元件。當您從其中一個清單建立元件時，請在**建立元件**頁面上 AWS Proton 預先選取相關聯的環境。
+ **元件詳細資訊** – 若要檢視元件詳細資訊頁面，請在元件清單上選擇[元件](https://console.aws.amazon.com//proton/#/components)名稱。

  在詳細資訊頁面上，檢視元件詳細資訊和狀態，並更新或刪除元件。檢視和管理輸出清單 （例如，佈建的資源 ARNs)、佈建的 CloudFormation 堆疊和指派的標籤。
+ [建立元件](https://console.aws.amazon.com//proton/#/components/create) – 建立元件。輸入元件名稱和描述、選擇相關聯的資源、指定元件來源 IaC 檔案，以及指派標籤。
+ **更新元件** – 若要更新元件，請在元件清單中選取[元件](https://console.aws.amazon.com//proton/#/components)，然後在**動作**功能表中選擇**更新元件**。或者，在**元件詳細資訊**頁面上，選擇**更新**。

  您可以更新大部分元件的詳細資訊。您無法更新元件名稱。您也可以選擇是否在成功更新後重新部署元件。
+ **設定環境** – 當您建立或更新環境時，您可以指定**元件角色**。此角色控制在環境中執行直接定義元件的能力，並提供佈建元件的許可。
+ **建立新的服務範本版本** – 當您建立服務範本版本時，您可以為範本版本指定**支援的元件來源**。這可控制根據此範本版本將元件連接至 服務執行個體的功能。

## AWS Proton API 和 中的元件 AWS CLI
<a name="ag-components.api"></a>

使用 AWS Proton API 或 AWS CLI 來建立、更新、檢視和使用 AWS Proton 元件。

下列 API 動作會直接管理 AWS Proton 元件資源。
+ [CreateComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateComponent.html) – 建立 AWS Proton 元件。
+ [DeleteComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_DeleteComponent.html) – 刪除元件 AWS Proton 。
+ [GetComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_GetComponent.html) – 取得元件的詳細資訊。
+ [ListComponentOutputs](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponentOutputs.html) – 取得元件基礎設施做為程式碼 (IaC) 輸出的清單。
+ [ListComponentProvisionedResources](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponentProvisionedResources.html) – 列出具有詳細資訊之元件的佈建資源。
+ [ListComponents](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponents.html) – 列出包含摘要資料的元件。您可以依環境、服務或單一服務執行個體篩選結果清單。

下列其他 AWS Proton 資源的 API 動作有一些與元件相關的功能。
+ [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html)、[UpdateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateEnvironment.html) – `componentRoleArn`用於指定在此環境中佈建直接定義元件 AWS Proton 時使用的 IAM 服務角色的 Amazon Resource Name (ARN)。它決定直接定義的元件可以佈建的基礎設施範圍。
+ [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html) – `supportedComponentSources`用來指定支援的元件來源。具有支援來源的元件可以根據此服務範本版本連接到服務執行個體。

## 元件常見問答集
<a name="ag-components.faq"></a>

**元件的生命週期為何？**

元件可以處於*連接*或*分離*狀態。它們旨在連接到服務執行個體，並在大部分時間增強其基礎設施。分離的元件處於轉換狀態，可讓您刪除元件或以受控制且安全的方式將其連接至另一個服務執行個體。如需詳細資訊，請參閱[元件狀態](ag-components-states.md)。

**為什麼我無法刪除連接的元件？**

*解決方案：*若要刪除連接的元件，請更新元件以將其從服務執行個體分離、驗證服務執行個體穩定性，然後刪除元件。

*為什麼需要此項目？* 連接的元件提供應用程式執行其執行時間函數所需的額外基礎設施。服務執行個體可能正在使用元件輸出來偵測和使用此基礎設施的資源。刪除元件，進而移除其基礎設施資源，可能會對連接的服務執行個體造成干擾。

作為額外的安全措施， AWS Proton 會要求您更新元件並將其從服務執行個體中分離，然後才能將其刪除。然後，您可以驗證您的服務執行個體，以確保其繼續部署並正常運作。如果您偵測到問題，可以快速將元件重新連接到服務執行個體，然後努力修正問題。當您確信您的服務執行個體沒有對元件的任何相依性時，您可以安全地刪除元件。

**為什麼我無法直接變更元件連接的服務執行個體？**

*解決方案：*若要變更附件，請更新元件以將其從服務執行個體分離、驗證元件和服務執行個體穩定性，然後將元件連接至新的服務執行個體。

*為什麼需要此項目？* 元件旨在連接至服務執行個體。您的元件可能會使用服務執行個體輸入來進行基礎設施資源命名和組態。變更連接的服務執行個體可能會對元件造成干擾 （除了可能中斷服務執行個體之外，如先前常見問答集所述，[為什麼我無法刪除連接的元件？](#ag-components.faq.delete))。例如，這可能會導致重新命名，甚至取代元件 IaC 範本中定義的資源。

作為額外的安全措施， AWS Proton 會要求您更新元件並將其從服務執行個體中分離，然後才能將其連接到另一個服務執行個體。然後，您可以在將元件連接到新的服務執行個體之前，驗證元件和服務執行個體的穩定性。