

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.

# 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.