

Hinweis zum Ende des Supports: Am 7. Oktober 2026 AWS endet der Support für AWS Proton. Nach dem 7. Oktober 2026 können Sie nicht mehr auf die AWS Proton Konsole oder AWS Proton die Ressourcen zugreifen. Ihre bereitgestellte Infrastruktur bleibt intakt. Weitere Informationen finden Sie im [AWS Proton Service Deprecation and Migration Guide](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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

Komponenten sind eine Art von Ressource. AWS Proton Sie verleihen Servicevorlagen mehr Flexibilität. Komponenten bieten Plattformteams einen Mechanismus zur Erweiterung der wichtigsten Infrastrukturmuster und zur Definition von Schutzmaßnahmen, die es Entwicklern ermöglichen, Aspekte ihrer Anwendungsinfrastruktur zu verwalten.

Darin definieren AWS Proton Administratoren eine Standardinfrastruktur, die von Entwicklungsteams und Anwendungen verwendet wird. Entwicklungsteams müssen jedoch möglicherweise zusätzliche Ressourcen für ihre spezifischen Anwendungsfälle hinzufügen, z. B. Amazon Simple Queue Service (Amazon SQS) -Warteschlangen oder Amazon DynamoDB-Tabellen. Diese anwendungsspezifischen Ressourcen können sich häufig ändern, insbesondere während der frühen Anwendungsentwicklung. Die Beibehaltung dieser häufigen Änderungen in vom Administrator erstellten Vorlagen könnte schwierig zu verwalten und zu skalieren sein — Administratoren müssten viel mehr Vorlagen verwalten, ohne dass der Administrator einen echten Mehrwert hätte. Die Alternative, Anwendungsentwickler Vorlagen für ihre Anwendungen erstellen zu lassen, ist ebenfalls nicht ideal, da sie Administratoren die Möglichkeit nimmt, die wichtigsten Architekturkomponenten wie Aufgaben zu standardisieren. AWS Fargate An dieser Stelle kommen Komponenten ins Spiel.

Mit einer Komponente kann ein Entwickler seiner Anwendung zusätzliche Ressourcen hinzufügen, die über das hinausgehen, was Administratoren in Umgebungs- und Dienstvorlagen definiert haben. Der Entwickler fügt die Komponente dann einer Dienstinstanz hinzu. AWS Proton stellt durch die Komponente definierte Infrastrukturressourcen genauso bereit, wie sie Ressourcen für Umgebungen und Dienstinstanzen bereitstellt.

Eine Komponente kann Eingaben von Serviceinstanzen lesen und Ausgaben für die Dienstinstanz bereitstellen, was für ein vollständig integriertes Erlebnis sorgt. Wenn die Komponente beispielsweise einen Amazon Simple Storage Service (Amazon S3) -Bucket zur Verwendung durch eine Service-Instance hinzufügt, kann die Komponentenvorlage die Umgebungs- und Service-Instance-Namen bei der Benennung des Buckets berücksichtigen. Wenn die Service-Vorlage zur Bereitstellung einer Service-Instance AWS Proton gerendert wird, kann die Service-Instance auf den Bucket verweisen und ihn verwenden.

Bei den Komponenten, die AWS Proton derzeit unterstützt werden, handelt es sich um *direkt definierte Komponenten*. Sie übergeben die Infrastructure as Code (IaC) -Datei, die die Infrastruktur der Komponente definiert, direkt an die AWS Proton API oder Konsole. Dies unterscheidet sich von einer Umgebung oder einem Dienst, in dem Sie IaC in einem Vorlagenpaket definieren und das Paket als Vorlagenressource registrieren und dann eine Vorlagenressource verwenden, um die Umgebung oder den Dienst zu erstellen.

**Anmerkung**  
Direkt definierte Komponenten ermöglichen es Entwicklern, zusätzliche Infrastruktur zu definieren und bereitzustellen. AWS Proton stellt alle direkt definierten Komponenten bereit, die in derselben Umgebung ausgeführt werden und dieselbe AWS Identity and Access Management (IAM-) Rolle verwenden.

Ein Administrator kann auf zwei Arten steuern, was Entwickler mit Komponenten tun können:
+ *Unterstützte Komponentenquellen* — Ein Administrator kann das Anhängen von Komponenten an Dienstinstanzen auf der Grundlage einer Eigenschaft von AWS Proton Dienstvorlagenversionen zulassen. Standardmäßig können Entwickler keine Komponenten an Serviceinstanzen anhängen.

  Weitere Informationen zu dieser Eigenschaft finden Sie unter dem [supportedComponentSources](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html#proton-CreateServiceTemplateVersion-request-supportedComponentSources)Parameter der [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)API-Aktion in der *AWS Proton API-Referenz*.
**Anmerkung**  
Wenn Sie die Vorlagensynchronisierung verwenden, werden Dienstvorlagenversionen implizit AWS Proton erstellt, wenn Sie Änderungen an einem Dienstvorlagenpaket in einem Repository festschreiben. In diesem Fall geben Sie diese Eigenschaft in einer Datei an, die jeder Hauptversion der Service-Vorlage zugeordnet ist, anstatt die unterstützten Komponentenquellen bei der Erstellung der Service-Vorlagenversion anzugeben. Weitere Informationen finden Sie unter [Synchronisieren von Dienstvorlagen](create-template-sync.md#create-template-sync-service-templates).
+ *Komponentenrollen* — Ein Administrator kann einer Umgebung eine Komponentenrolle zuweisen. AWS Proton übernimmt diese Rolle, wenn es eine Infrastruktur bereitstellt, die durch eine direkt definierte Komponente in der Umgebung definiert ist. Daher beschränkt sich die Komponentenrolle auf die Infrastruktur, die Entwickler mithilfe direkt definierter Komponenten in der Umgebung hinzufügen können. In Ermangelung der Komponentenrolle können Entwickler keine direkt definierten Komponenten in der Umgebung erstellen.

  Weitere Informationen zum Zuweisen einer Komponentenrolle finden Sie unter dem [componentRoleArn](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html#proton-CreateEnvironment-request-componentRoleArn)Parameter der [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html)API-Aktion in der *AWS Proton API-Referenz.*
**Anmerkung**  
Komponentenrollen werden in [Selbstverwaltete Bereitstellung](ag-works-prov-methods.md#ag-works-prov-methods-self) Umgebungen nicht verwendet.

**Topics**
+ [Wie schneiden Komponenten im Vergleich zu anderen AWS Proton Ressourcen ab?](#ag-components.compare)
+ [Komponenten in der Konsole AWS Proton](#ag-components.console)
+ [Komponenten in der AWS Proton API und AWS CLI](#ag-components.api)
+ [Häufig gestellte Fragen zu Komponenten](#ag-components.faq)
+ [Status der Komponenten](ag-components-states.md)
+ [Komponenteninfrastruktur als Codedateien](ag-components-iac.md)
+ [CloudFormation Beispiel für eine Komponente](ag-components-example-cfn.md)

## Wie schneiden Komponenten im Vergleich zu anderen AWS Proton Ressourcen ab?
<a name="ag-components.compare"></a>

In vielerlei Hinsicht ähneln Komponenten anderen AWS Proton Ressourcen. Ihre Infrastruktur ist in einer [IaC-Vorlagendatei](ag-components-iac.md) definiert, die entweder im CloudFormation YAML- oder Terraform HCL-Format verfasst wurde. AWS Proton [[kann die Komponenteninfrastruktur entweder mithilfe einer verwalteten Bereitstellung oder einer selbstverwalteten Bereitstellung bereitstellen.AWS](ag-works-prov-methods.md#ag-works-prov-methods-self)](ag-works-prov-methods.md#ag-works-prov-methods-direct)

Komponenten unterscheiden sich jedoch in einigen Punkten von anderen AWS Proton Ressourcen:
+ *Getrennter Zustand* — Komponenten sind so konzipiert, dass sie an Serviceinstanzen angehängt werden und ihre Infrastruktur erweitern. Sie können sich aber auch in einem *getrennten* Zustand befinden, in dem sie an keine Dienstinstanz angehängt sind. Weitere Informationen zu Komponentenstatus finden Sie unter[Status der Komponenten](ag-components-states.md).
+ *Kein Schema* — Komponenten haben kein zugeordnetes Schema, wie es bei [Vorlagenpaketen](ag-template-authoring.md#ag-template-bundles) der Fall ist. Komponenteneingaben werden durch einen Dienst definiert. Eine Komponente kann Eingaben verarbeiten, wenn sie an eine Dienstinstanz angehängt ist.
+ *Keine vom Kunden verwalteten Komponenten* — AWS Proton stellt immer die Komponenteninfrastruktur für Sie bereit. Es gibt keine Version der Komponenten, bei *denen Sie Ihre eigenen Ressourcen mitbringen* können. Weitere Informationen zu vom Kunden verwalteten Umgebungen finden Sie unter[Erstellen einer Umgebung](ag-create-env.md).
+ *Keine Vorlagenressource* — Direkt definierten Komponenten ist keine Vorlagenressource zugeordnet, ähnlich wie bei Umgebungs- und Dienstvorlagen. Sie stellen der Komponente direkt eine IaC-Vorlagendatei zur Verfügung. In ähnlicher Weise stellen Sie direkt ein Manifest bereit, das die Vorlagensprache und die Rendering-Engine für die Bereitstellung der Infrastruktur der Komponente definiert. Sie erstellen die Vorlagendatei und das Manifest auf ähnliche Weise wie beim Erstellen eines [Vorlagenpakets](ag-template-authoring.md#ag-template-bundles). Bei direkt definierten Komponenten ist es jedoch nicht erforderlich, IaC-Dateien als Bundles an bestimmten Speicherorten zu speichern, und Sie erstellen keine Vorlagenressource AWS Proton aus IaC-Dateien.
+ *Keine CodeBuild basierte Bereitstellung* *— Sie können direkt definierte Komponenten nicht mithilfe Ihres eigenen benutzerdefinierten Bereitstellungsskripts bereitstellen, das als basierte Bereitstellung bezeichnet wird. CodeBuild* Weitere Informationen finden Sie unter [Wie CodeBuild funktioniert die Bereitstellung](ag-works-prov-methods.md#ag-works-prov-methods-codebuild).

## Komponenten in der Konsole AWS Proton
<a name="ag-components.console"></a>

Verwenden Sie die AWS Proton Konsole, um AWS Proton Komponenten zu erstellen, zu aktualisieren, anzuzeigen und zu verwenden.

Die folgenden Konsolenseiten beziehen sich auf Komponenten. Wir enthalten direkte Links zu Konsolenseiten der obersten Ebene.
+ [Komponenten](https://console.aws.amazon.com//proton/#/components) — Sehen Sie sich die Liste der Komponenten in Ihrem AWS Konto an. Sie können neue Komponenten erstellen und vorhandene Komponenten aktualisieren oder löschen. Wählen Sie einen Komponentennamen in der Liste aus, um die zugehörige Detailseite aufzurufen.

  Ähnliche Listen gibt es auch auf den Seiten mit den **Umgebungsdetails** und **den Serviceinstanzen**. In diesen Listen werden nur die Komponenten angezeigt, die der aufgerufenen Ressource zugeordnet sind. Wenn Sie eine Komponente aus einer dieser Listen erstellen, AWS Proton wählt Sie die zugehörige Umgebung auf der Seite **Komponente erstellen** vorab aus.
+ **Komponentendetails** [— Um die Seite mit den Komponentendetails anzuzeigen, wählen Sie in der Komponentenliste einen Komponentennamen aus.](https://console.aws.amazon.com//proton/#/components)

  Sehen Sie sich auf der Detailseite die Komponentendetails und den Status an und aktualisieren oder löschen Sie die Komponente. Sie können Listen mit Ausgaben (z. B. bereitgestellte Ressourcen ARNs), bereitgestellten CloudFormation Stacks und zugewiesenen Tags anzeigen und verwalten.
+ [Komponente erstellen](https://console.aws.amazon.com//proton/#/components/create) — Erstellen Sie eine Komponente. Geben Sie den Namen und die Beschreibung der Komponente ein, wählen Sie die zugehörigen Ressourcen aus, geben Sie die IaC-Quelldatei der Komponente an und weisen Sie Tags zu.
+ **Komponente aktualisieren** — Um eine Komponente zu aktualisieren, wählen Sie die Komponente in der [Komponentenliste](https://console.aws.amazon.com//proton/#/components) aus, und klicken Sie dann im Menü **Aktionen** auf **Komponente aktualisieren**. Sie können auch auf den Seiten mit den **Komponentendetails** die Option **Aktualisieren** auswählen.

  Sie können die meisten Details der Komponente aktualisieren. Sie können den Komponentennamen nicht aktualisieren. Und Sie können wählen, ob Sie die Komponente nach einem erfolgreichen Update erneut bereitstellen möchten oder nicht.
+ **Umgebung konfigurieren** — Wenn Sie eine Umgebung erstellen oder aktualisieren, können Sie eine **Komponentenrolle** angeben. Diese Rolle steuert die Fähigkeit, direkt definierte Komponenten in der Umgebung auszuführen, und bietet Berechtigungen für deren Bereitstellung.
+ **Neue Dienstvorlagenversion erstellen** — Wenn Sie eine Dienstvorlagenversion erstellen, können Sie **Unterstützte Komponentenquellen** für die Vorlagenversion angeben. Dadurch wird die Fähigkeit gesteuert, Komponenten an Dienstinstanzen von Diensten anzuhängen, die auf dieser Vorlagenversion basieren.

## Komponenten in der AWS Proton API und AWS CLI
<a name="ag-components.api"></a>

Verwenden Sie die AWS Proton API oder, AWS CLI um AWS Proton Komponenten zu erstellen, zu aktualisieren, anzuzeigen und zu verwenden.

Mit den folgenden API-Aktionen werden AWS Proton Komponentenressourcen direkt verwaltet.
+ [CreateComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateComponent.html)— Erstellen Sie eine AWS Proton Komponente.
+ [DeleteComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_DeleteComponent.html)— Löscht eine AWS Proton Komponente.
+ [GetComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_GetComponent.html)— Ruft detaillierte Daten für eine Komponente ab.
+ [ListComponentOutputs](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponentOutputs.html)— Ruft eine Liste der Ausgaben der Komponente Infrastructure as Code (IaC) ab.
+ [ListComponentProvisionedResources](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponentProvisionedResources.html)— Listet die bereitgestellten Ressourcen für eine Komponente mit Details auf.
+ [ListComponents](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponents.html)— Listet Komponenten mit Übersichtsdaten auf. Sie können die Ergebnisliste nach Umgebung, Dienst oder einer einzelnen Dienstinstanz filtern.

Die folgenden API-Aktionen anderer AWS Proton Ressourcen haben einige Funktionen, die sich auf Komponenten beziehen.
+ [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html), [UpdateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateEnvironment.html)— Wird verwendet, `componentRoleArn` um den Amazon-Ressourcennamen (ARN) der IAM-Servicerolle anzugeben, die bei der Bereitstellung direkt definierter Komponenten in dieser Umgebung AWS Proton verwendet wird. Er bestimmt den Umfang der Infrastruktur, den eine direkt definierte Komponente bereitstellen kann.
+ [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)— Wird verwendet`supportedComponentSources`, um unterstützte Komponentenquellen anzugeben. Komponenten mit unterstützten Quellen können auf der Grundlage dieser Dienstvorlagenversion an Dienstinstanzen angehängt werden.

## Häufig gestellte Fragen zu Komponenten
<a name="ag-components.faq"></a>

**Was ist der Lebenszyklus einer Komponente?**

Komponenten können sich in einem *angehängten* oder *abgetrennten* Zustand befinden. Sie sind so konzipiert, dass sie an eine Dienstinstanz angehängt werden können und deren Infrastruktur in den meisten Fällen verbessern. Getrennte Komponenten befinden sich in einem Übergangszustand, der es Ihnen ermöglicht, eine Komponente kontrolliert und sicher zu löschen oder an eine andere Dienstinstanz anzuhängen. Weitere Informationen finden Sie unter [Status der Komponenten](ag-components-states.md).

**Warum kann ich meine angehängten Komponenten nicht löschen?**

*Lösung:* Um eine angehängte Komponente zu löschen, aktualisieren Sie die Komponente, um sie von der Dienstinstanz zu trennen, überprüfen Sie die Stabilität der Dienstinstanz und löschen Sie dann die Komponente.

*Warum ist das erforderlich?* Angeschlossene Komponenten bieten zusätzliche Infrastruktur, die Ihre Anwendung zur Ausführung ihrer Laufzeitfunktionen benötigt. Die Dienstinstanz verwendet möglicherweise Komponentenausgaben, um Ressourcen dieser Infrastruktur zu erkennen und zu nutzen. Das Löschen der Komponente und damit das Entfernen ihrer Infrastrukturressourcen könnte die angehängte Dienstinstanz stören.

Als zusätzliche Sicherheitsmaßnahme AWS Proton müssen Sie die Komponente aktualisieren und sie von ihrer Dienstinstanz trennen, bevor Sie sie löschen können. Anschließend können Sie Ihre Dienstinstanz validieren, um sicherzustellen, dass sie weiterhin bereitgestellt wird und ordnungsgemäß funktioniert. Wenn Sie ein Problem feststellen, können Sie die Komponente schnell wieder an die Dienstinstanz anhängen und dann daran arbeiten, das Problem zu beheben. Wenn Sie sicher sind, dass Ihre Serviceinstanz frei von jeglicher Abhängigkeit von der Komponente ist, können Sie die Komponente problemlos löschen.

**Warum kann ich die angehängte Serviceinstanz einer Komponente nicht direkt ändern?**

*Lösung:* Um den Anhang zu ändern, aktualisieren Sie die Komponente, um sie von der Serviceinstanz zu trennen, überprüfen Sie die Stabilität der Komponente und der Dienstinstanz und hängen Sie die Komponente dann an die neue Dienstinstanz an.

*Warum ist das erforderlich?* Eine Komponente ist so konzipiert, dass sie an eine Dienstinstanz angehängt werden kann. Ihre Komponente verwendet möglicherweise Eingaben von Dienstinstanzen für die Benennung und Konfiguration von Infrastrukturressourcen. Das Ändern der angehängten Dienstinstanz könnte die Komponente stören (zusätzlich zu einer möglichen Unterbrechung der Dienstinstanz), wie in den vorherigen häufig gestellten Fragen, [Warum kann ich meine angehängten Komponenten nicht löschen?](#ag-components.faq.delete) beschrieben. ). Dies kann beispielsweise dazu führen, dass Ressourcen, die in der IaC-Vorlage der Komponente definiert sind, umbenannt und möglicherweise sogar ersetzt werden.

Als zusätzliche Sicherheitsmaßnahme AWS Proton müssen Sie die Komponente aktualisieren und sie von ihrer Dienstinstanz trennen, bevor Sie sie an eine andere Dienstinstanz anhängen können. Anschließend können Sie die Stabilität sowohl der Komponente als auch der Dienstinstanz überprüfen, bevor Sie die Komponente an die neue Dienstinstanz anhängen.

# Status der Komponenten
<a name="ag-components-states"></a>

AWS Proton Komponenten können sich in zwei grundlegend unterschiedlichen Zuständen befinden:
+ *Angefügt* — Die Komponente ist an eine Dienstinstanz angehängt. Sie definiert eine Infrastruktur, die die Laufzeitfunktionalität der Dienstinstanz unterstützt. Die Komponente erweitert die in Umgebungs- und Dienstvorlagen definierte Infrastruktur um eine vom Entwickler definierte Infrastruktur.

  Eine typische Komponente befindet sich während des größten Teils ihres Lebenszyklus im angehängten Zustand.
+ *Getrennt* — Die Komponente ist einer AWS Proton Umgebung zugeordnet und keiner Dienstinstanz in der Umgebung angehängt.

  Dies ist ein Übergangszustand für die Verlängerung der Lebensdauer einer Komponente über eine einzelne Dienstinstanz hinaus.

Die folgende Tabelle bietet einen Vergleich der verschiedenen Komponentenstatus auf oberster Ebene.


|  | Attached (Angefügt) | Detached (Getrennt) | 
| --- | --- | --- | 
|  **Hauptzweck des Staates**  |  Um die Infrastruktur einer Dienstinstanz zu erweitern.  |  Um die Infrastruktur der Komponente zwischen Anhängen der Serviceinstanz aufrechtzuerhalten.  | 
|  **Verbunden mit**  |  Eine Dienstinstanz und eine Umgebung  |  Eine -Umgebung  | 
|  **Wichtige spezifische Eigenschaften**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/ag-components-states.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/ag-components-states.html)  | 
|  **Kann gelöscht werden**  |   ![\[No\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/images/icon-no.png) Nein  |   ![\[Yes\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/images/icon-yes.png) Ja  | 
|  **Kann auf eine andere Dienstinstanz aktualisiert werden**  |   ![\[No\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/images/icon-no.png) Nein  |   ![\[Yes\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/images/icon-yes.png) Ja  | 
|  **Kann Eingaben lesen**  |   ![\[Yes\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/images/icon-yes.png) Ja  |   ![\[No\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/images/icon-no.png) Nein  | 

Der Hauptzweck einer Komponente besteht darin, an eine Dienstinstanz angehängt zu werden und deren Infrastruktur um zusätzliche Ressourcen zu erweitern. Eine angehängte Komponente kann gemäß der Spezifikation Eingaben von der Dienstinstanz lesen. Sie können die Komponente nicht direkt löschen oder an eine andere Dienstinstanz anhängen. Sie können auch nicht die zugehörige Dienstinstanz oder den zugehörigen Dienst und die zugehörige Umgebung löschen. Um eines dieser Dinge zu tun, aktualisieren Sie zuerst die Komponente, um sie von ihrer Dienstinstanz zu trennen.

Um die Infrastruktur der Komponente über die Lebensdauer einer einzelnen Dienstinstanz hinaus aufrechtzuerhalten, aktualisieren Sie die Komponente und trennen sie von ihrer Dienstinstanz, indem Sie die Namen des Dienstes und der Dienstinstanz entfernen. Bei diesem getrennten Zustand handelt es sich um einen Übergangszustand. Die Komponente hat keine Eingänge. Die Infrastruktur bleibt bereitgestellt und Sie können sie aktualisieren. Sie können Ressourcen löschen, denen die Komponente zugeordnet war, als sie angehängt wurde (Dienstinstanz, Dienst). Sie können die Komponente löschen oder sie so aktualisieren, dass sie erneut an eine Dienstinstanz angehängt wird.

# Komponenteninfrastruktur als Codedateien
<a name="ag-components-iac"></a>

Component Infrastructure as Code (IaC) -Dateien ähneln denen für andere AWS Proton Ressourcen. Erfahren Sie hier mehr über einige Details, die für Komponenten spezifisch sind. Vollständige Informationen zum Erstellen von IaC-Dateien für finden Sie AWS Proton unter. [Vorlagen erstellen und Bundles erstellen für AWS Proton](ag-template-authoring.md)

## Verwenden von Parametern mit Komponenten
<a name="ag-components-iac.namespace"></a>

Der AWS Proton Parameter-Namespace enthält einige Parameter, auf die eine Service-IaC-Datei verweisen kann, um den Namen und die Ausgaben einer zugehörigen Komponente abzurufen. Der Namespace enthält auch Parameter, auf die eine IaC-Komponenten-Datei verweisen kann, um Eingaben, Ausgaben und Ressourcenwerte aus der Umgebung, dem Dienst und der Dienstinstanz abzurufen, der die Komponente zugeordnet ist.

Eine Komponente hat keine eigenen Eingaben — sie bezieht ihre Eingaben von der Dienstinstanz, an die sie angehängt ist. Eine Komponente kann auch Umgebungsausgaben lesen.

Weitere Hinweise zur Verwendung von Parametern in IaC-Dateien für Komponenten und zugehörige Dienste finden Sie unter[Parameterdetails und Beispiele für die CloudFormation IaC-Komponentendatei](comp-parameters.md). Allgemeine Informationen zu AWS Proton Parametern und eine vollständige Referenz zum Parameter-Namespace finden Sie unter. [AWS Proton Parameter](parameters.md)

## Robuste IaC-Dateien erstellen
<a name="ag-components-iac.robust"></a>

Als Administrator können Sie beim Erstellen einer Service-Vorlagenversion entscheiden, ob Sie zulassen möchten, dass Dienstinstanzen, die anhand der Vorlagenversion erstellt wurden, Komponenten angehängt haben. Den [supportedComponentSources](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html#proton-CreateServiceTemplateVersion-request-supportedComponentSources)Parameter der [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)API-Aktion finden Sie in der *AWS Proton API-Referenz*. Für jede future Dienstinstanz entscheidet jedoch die Person, die die Instanz erstellt, ob eine Komponente an sie angehängt wird oder nicht, und (im Fall von direkt definierten Komponenten) die Komponente IaC verfasst, ist in der Regel eine andere Person — ein Entwickler, der Ihre Dienstvorlage verwendet. Daher können Sie nicht garantieren, dass eine Komponente an eine Dienstinstanz angehängt wird. Sie können auch nicht garantieren, dass bestimmte Komponentenausgabenamen existieren oder dass die Werte dieser Ausgaben gültig und sicher sind.

AWS Proton und die Jinja-Syntax helfen Ihnen dabei, diese Probleme zu umgehen und robuste Dienstvorlagen zu erstellen, die auf folgende Weise fehlerfrei gerendert werden:
+ *AWS Proton Parameterfilter* — Wenn Sie sich auf die Ausgabeeigenschaften von Komponenten beziehen, können Sie *Parameterfilter* verwenden. Dabei handelt es sich um Modifikatoren, die Parameterwerte validieren, filtern und formatieren. Weitere Informationen und Beispiele finden Sie unter [Parameterfilter für CloudFormation IaC-Dateien](parameter-filters.md).
+ *Standard mit einer einzigen Eigenschaft* — Wenn Sie auf eine einzelne Ressource oder Ausgabeeigenschaft einer Komponente verweisen, können Sie sicherstellen, dass das Rendern Ihrer Service-Vorlage nicht fehlschlägt, indem Sie den `default` Filter mit oder ohne Standardwert verwenden. Wenn die Komponente oder ein bestimmter Ausgabeparameter, auf den Sie sich beziehen, nicht existiert, wird stattdessen der Standardwert (oder eine leere Zeichenfolge, falls Sie keinen Standardwert angegeben haben) gerendert, und das Rendern ist erfolgreich. Weitere Informationen finden Sie unter [Geben Sie Standardwerte für nicht existierende Verweise an](parameter-filters.md#parameter-filters.proton.default).

  Beispiele:
  + `{{ service_instance.components.default.name | default("") }}`
  + `{{ service_instance.components.default.outputs.my-output | default("17") }}`
**Anmerkung**  
Verwechseln Sie den `.default` Teil des Namespaces, der direkt definierte Komponenten bezeichnet, nicht mit dem `default` Filter, der einen Standardwert bereitstellt, wenn die referenzierte Eigenschaft nicht existiert.
+ *Gesamter Objektverweis* — Wenn Sie auf die gesamte Komponente oder auf die Auflistung der Ausgaben einer Komponente verweisen, wird ein leeres Objekt AWS Proton zurückgegeben und somit garantiert`{}`, dass das Rendern Ihrer Dienstvorlage nicht fehlschlägt. Sie müssen keinen Filter verwenden. Stellen Sie sicher, dass Sie die Referenz in einem Kontext erstellen, der ein leeres Objekt annehmen kann, oder verwenden Sie eine `{{ if .. }}` Bedingung, um zu testen, ob ein leeres Objekt vorhanden ist.

  Beispiele:
  + `{{ service_instance.components.default }}`
  + `{{ service_instance.components.default.outputs }}`

# CloudFormation Beispiel für eine Komponente
<a name="ag-components-example-cfn"></a>

Hier ist ein vollständiges Beispiel für eine AWS Proton direkt definierte Komponente und wie Sie sie in einem AWS Proton Dienst verwenden können. Die Komponente stellt einen Amazon Simple Storage Service (Amazon S3) -Bucket und die zugehörige Zugriffsrichtlinie bereit. Die Service-Instance kann auf diesen Bucket verweisen und ihn verwenden. Der Bucket-Name basiert auf den Namen der Umgebung, des Dienstes, der Dienstinstanz und der Komponente, was bedeutet, dass der Bucket mit einer bestimmten Instanz der Komponentenvorlage verknüpft ist, die eine bestimmte Dienstinstanz erweitert. Entwickler können auf der Grundlage dieser Komponentenvorlage mehrere Komponenten erstellen, um Amazon S3 S3-Buckets für unterschiedliche Service-Instances und funktionale Anforderungen bereitzustellen.

Das Beispiel behandelt das Verfassen der verschiedenen erforderlichen IaC-Dateien ( CloudFormation Infrastructure as Code) und das Erstellen einer erforderlichen Rolle AWS Identity and Access Management (IAM). Das Beispiel gruppiert die Schritte nach den Rollen, denen sie gehören.

## Schritte des Administrators
<a name="ag-components-example-cfn.admin"></a>

**Um Entwicklern die Verwendung von Komponenten mit einem Dienst zu ermöglichen**

1. Erstellen Sie eine AWS Identity and Access Management (IAM-) Rolle, die den Umfang der Ressourcen abgrenzt, die direkt definierte Komponenten, die in Ihrer Umgebung ausgeführt werden, bereitstellen können. AWS Proton übernimmt diese Rolle später, um direkt definierte Komponenten in der Umgebung bereitzustellen.

   Verwenden Sie für dieses Beispiel die folgende Richtlinie:  
**Example direkt definierte Komponentenrolle**  

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "cloudformation:CancelUpdateStack",
           "cloudformation:CreateChangeSet",
           "cloudformation:DeleteChangeSet",
           "cloudformation:DescribeStacks",
           "cloudformation:ContinueUpdateRollback",
           "cloudformation:DetectStackResourceDrift",
           "cloudformation:DescribeStackResourceDrifts",
           "cloudformation:DescribeStackEvents",
           "cloudformation:CreateStack",
           "cloudformation:DeleteStack",
           "cloudformation:UpdateStack",
           "cloudformation:DescribeChangeSet",
           "cloudformation:ExecuteChangeSet",
           "cloudformation:ListChangeSets",
           "cloudformation:ListStackResources"
         ],
         "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:CreateBucket",
           "s3:DeleteBucket",
           "s3:GetBucket*",
           "iam:CreatePolicy",
           "iam:DeletePolicy",
           "iam:GetPolicy",
           "iam:ListPolicyVersions",
           "iam:DeletePolicyVersion"
         ],
         "Resource": "*",
         "Condition": {
           "ForAnyValue:StringEquals": {
             "aws:CalledVia": "cloudformation.amazonaws.com"
           }
         }
       }
     ]
   }
   ```

------

1. Geben Sie die Rolle an, die Sie im vorherigen Schritt erstellt haben, wenn Sie die Umgebung erstellen oder aktualisieren. Geben Sie in der AWS Proton Konsole auf der Seite „**Umgebung konfigurieren**“ eine **Komponentenrolle** an. Wenn Sie die AWS Proton API oder verwenden AWS CLI, geben Sie die `componentRoleArn` der [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html)oder [UpdateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateEnvironment.html)API-Aktionen an.

1. Erstellen Sie eine Dienstvorlage, die sich auf eine direkt definierte Komponente bezieht, die an die Dienstinstanz angehängt ist.

   Das Beispiel zeigt, wie eine robuste Dienstvorlage geschrieben wird, die nicht kaputt geht, wenn keine Komponente an die Dienstinstanz angehängt ist.  
**Example CloudFormation Service-IaC-Datei mithilfe einer Komponente**  

   ```
   # service/instance_infrastructure/cloudformation.yaml
   
   Resources: 
     TaskDefinition:
       Type: AWS::ECS::TaskDefinition
       Properties:
         TaskRoleArn: !Ref TaskRole
         ContainerDefinitions:
           - Name: '{{service_instance.name}}'
             # ...
             {% if service_instance.components.default.outputs | length > 0 %}
             Environment:
               {{ service_instance.components.default.outputs |
                   proton_cfn_ecs_task_definition_formatted_env_vars }}
             {% endif %}
   
     # ...
   
     TaskRole:
       Type: AWS::IAM::Role
       Properties:
         # ...
         ManagedPolicyArns:
           - !Ref BaseTaskRoleManagedPolicy
           {{ service_instance.components.default.outputs
               | proton_cfn_iam_policy_arns }}
   
     # Basic permissions for the task
     BaseTaskRoleManagedPolicy:
       Type: AWS::IAM::ManagedPolicy
       Properties:
         # ...
   ```

1. Erstellen Sie eine neue Nebenversion der Dienstvorlage, in der direkt definierte Komponenten als unterstützt deklariert werden.
   + **Vorlagenpaket in Amazon S3** — Wenn Sie in der AWS Proton Konsole eine Service-Vorlagenversion erstellen, wählen Sie für **Unterstützte Komponentenquellen** die Option **Direkt definiert** aus. Wenn Sie die AWS Proton API oder verwenden AWS CLI, geben Sie `DIRECTLY_DEFINED` im `supportedComponentSources` Parameter [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)oder [UpdateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateServiceTemplateVersion.html)API-Aktionen an.
   + **Vorlagensynchronisierung** — Übernehmen Sie eine Änderung an Ihrem Service-Template-Bundle-Repository, das Sie `DIRECTLY_DEFINED` als Element `supported_component_sources:` in der `.template-registration.yaml` Datei im Hauptversionsverzeichnis angeben. Weitere Informationen über diese Datei finden Sie unter [Synchronisieren von Dienstvorlagen](create-template-sync.md#create-template-sync-service-templates).

1. Veröffentlichen Sie die neue Nebenversion der Service-Vorlage. Weitere Informationen finden Sie unter [Vorlagen registrieren und veröffentlichen](template-create.md).

1. Stellen Sie sicher, dass Sie Entwicklern, die diese Dienstvorlage verwenden, die Rolle `proton:CreateComponent` in der IAM-Rolle zuweisen.

## Schritte für Entwickler
<a name="ag-components-example-cfn.dev"></a>

**Um eine direkt definierte Komponente mit einer Dienstinstanz zu verwenden**

1. Erstellen Sie einen Dienst, der die Version der Dienstvorlage verwendet, die der Administrator mit Komponentenunterstützung erstellt hat. Sie können auch eine Ihrer vorhandenen Dienstinstanzen aktualisieren, um die neueste Vorlagenversion zu verwenden.

1. Schreiben Sie eine IaC-Vorlagendatei für Komponenten, die einen Amazon S3 S3-Bucket und eine zugehörige Zugriffsrichtlinie bereitstellt und diese Ressourcen als Ausgaben bereitstellt.  
**Example Komponenten-IaC-Datei CloudFormation**  

   ```
   # cloudformation.yaml
   
   # A component that defines an S3 bucket and a policy for accessing the bucket.
   Resources:
     S3Bucket:
       Type: AWS::S3::Bucket
       Properties:
         BucketName: '{{environment.name}}-{{service.name}}-{{service_instance.name}}-{{component.name}}'
     S3BucketAccessPolicy:
       Type: AWS::IAM::ManagedPolicy
       Properties:
         PolicyDocument:
           Version: "2012-10-17"		 	 	 
           Statement:
             - Effect: Allow
               Action:
                 - 's3:Get*'
                 - 's3:List*'
                 - 's3:PutObject'
               Resource: !GetAtt S3Bucket.Arn
   Outputs:
     BucketName:
       Description: "Bucket to access"
       Value: !GetAtt S3Bucket.Arn
     BucketAccessPolicyArn:
       Value: !Ref S3BucketAccessPolicy
   ```

1. Wenn Sie die AWS Proton API oder verwenden AWS CLI, schreiben Sie eine Manifestdatei für die Komponente.  
**Example direkt definiertes Komponentenmanifest**  

   ```
   infrastructure:
     templates:
       - file: "cloudformation.yaml"
         rendering_engine: jinja
         template_language: cloudformation
   ```

1. Erstellen Sie eine direkt definierte Komponente. AWS Proton nimmt die Komponentenrolle an, die der Administrator für die Bereitstellung der Komponente definiert hat.

   Wählen Sie in der AWS Proton Konsole auf der Seite [Komponenten](https://console.aws.amazon.com//proton/#/components) die Option **Komponente erstellen** aus. Geben Sie **unter Komponenteneinstellungen** einen **Komponentennamen** und optional eine **Komponentenbeschreibung** ein. Wählen Sie für **Komponentenanhang** **die Option Komponente an eine Dienstinstanz anhängen aus.** Wählen Sie Ihre Umgebung, Ihren Service und Ihre Dienstinstanz aus. Wählen Sie **CloudFormation**als **Komponentenquelle** die Option und anschließend die Komponenten-IaC-Datei aus.
**Anmerkung**  
Sie müssen kein Manifest angeben — die Konsole erstellt eines für Sie.

   Wenn Sie die AWS Proton API oder verwenden AWS CLI, verwenden Sie die [CreateComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateComponent.html)API-Aktion. Legen Sie eine Komponente fest `name` und sind optional`description`. Stellen Sie `environmentName``serviceName`, und ein`serviceInstanceName`. Legen Sie `templateSource` `manifest` die Pfade der von Ihnen erstellten Dateien fest.
**Anmerkung**  
Die Angabe eines Umgebungsnamens ist optional, wenn Sie Dienst- und Dienstinstanznamen angeben. Die Kombination dieser beiden ist in Ihrem AWS Konto einzigartig und AWS Proton kann die Umgebung anhand der Dienstinstanz bestimmen.

1. Aktualisieren Sie Ihre Dienstinstanz, um sie erneut bereitzustellen. AWS Proton verwendet Ausgaben Ihrer Komponente in der gerenderten Service-Instance-Vorlage, damit Ihre Anwendung den Amazon S3 S3-Bucket verwenden kann, den die Komponente bereitgestellt hat.