Parameterdetails und Beispiele für die CloudFormation IaC-Komponentendatei - AWS Proton

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.

Parameterdetails und Beispiele für die CloudFormation IaC-Komponentendatei

Sie können Parameter in Ihrer Komponenteninfrastruktur als Codedateien (IaC) definieren und referenzieren. Eine ausführliche Beschreibung der AWS Proton Parameter, Parametertypen, des Parameter-Namespace und der Verwendung von Parametern in Ihren IaC-Dateien finden Sie unter. AWS Proton Parameter Weitere Informationen zu Komponenten finden Sie unter. AWS Proton Komponenten

Definieren Sie Ausgabeparameter für Komponenten

Sie können Ausgabeparameter in Ihren IaC-Komponentendateien definieren. Sie können dann in Service-IaC-Dateien auf diese Ausgaben verweisen.

Anmerkung

Sie können keine Eingaben für Komponenten-IaC-Dateien definieren. Angehängte Komponenten können Eingaben von der Dienstinstanz erhalten, an die sie angehängt sind. Getrennte Komponenten haben keine Eingaben.

Lesen Sie Parameterwerte in IaC-Dateien von Komponenten

Sie können Parameter lesen, die sich auf die Komponente und andere Ressourcen beziehen, in Komponenten-IaC-Dateien. Sie lesen einen Parameterwert, indem Sie im Parameter-Namespace auf den Namen des AWS Proton Parameters verweisen.

  • Eingabeparameter — Lesen Sie den Eingabewert einer angehängten Dienstinstanz, indem Sie darauf verweisen. service_instance.inputs.input-name

  • Ressourcenparameter — Lesen Sie AWS Proton Ressourcenparameter, indem Sie auf Namen wiecomponent.name, service.nameservice_instance.name, und verweisen. environment.name

  • Ausgabeparameter — Lesen Sie die Umgebungsausgaben durch environment.outputs.output-name Referenzierung.

IaC-Beispieldateien für Komponenten und Dienste mit Parametern

Das folgende Beispiel zeigt eine Komponente, die einen Amazon Simple Storage Service (Amazon S3) -Bucket und zugehörige Zugriffsrichtlinien bereitstellt und die Amazon-Ressourcennamen (ARNs) beider Ressourcen als Komponentenausgaben verfügbar macht. Eine Service-IaC-Vorlage fügt die Komponentenausgaben als Container-Umgebungsvariablen einer Amazon Elastic Container Service (Amazon ECS) -Aufgabe hinzu, um die Ausgaben für Code verfügbar zu machen, der im Container ausgeführt wird, und fügt der Rolle der Aufgabe die Bucket-Zugriffsrichtlinie hinzu. Der Bucket-Name basiert auf den Namen der Umgebung, des Dienstes, der Service-Instance und der Komponente, was bedeutet, dass der Bucket mit einer bestimmten Instance der Komponentenvorlage verknüpft ist, die eine bestimmte Service-Instance erweitert. Entwickler können auf der Grundlage dieser Komponentenvorlage mehrere benutzerdefinierte Komponenten erstellen, um Amazon S3 S3-Buckets für verschiedene Service-Instances und funktionale Anforderungen bereitzustellen.

Das Beispiel zeigt, wie Sie die {{ ... }} Jinja-Syntax verwenden, um auf Komponenten- und andere Ressourcenparameter in Ihrer Service-IaC-Datei zu verweisen. Sie können {% if ... %} Anweisungen nur dann verwenden, um Anweisungsblöcke hinzuzufügen, wenn eine Komponente an die Dienstinstanz angehängt ist. Bei den proton_cfn_* Schlüsselwörtern handelt es sich um Filter, mit denen Sie die Werte der Ausgabeparameter bereinigen und formatieren können. Weitere Informationen zu Filtern finden Sie unter Parameterfilter für CloudFormation IaC-Dateien.

Als Administrator erstellen Sie die IaC-Vorlagendatei für den Dienst.

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

Als Entwickler erstellen Sie die IaC-Vorlagendatei für Komponenten.

Beispiel CloudFormation Komponenten-IaC-Datei
# 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

Wenn eine AWS CloudFormation Vorlage für Ihre Dienstinstanz AWS Proton gerendert und alle Parameter durch tatsächliche Werte ersetzt werden, sieht die Vorlage möglicherweise wie die folgende Datei aus.

Beispiel Die Dienstinstanz hat eine CloudFormation IAC-Datei gerendert
Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: TaskRoleArn: !Ref TaskRole ContainerDefinitions: - Name: '{{service_instance.name}}' # ... Environment: - Name: BucketName Value: arn:aws:s3:us-east-1:123456789012:environment_name-service_name-service_instance_name-component_name - Name: BucketAccessPolicyArn Value: arn:aws:iam::123456789012:policy/cfn-generated-policy-name # ... TaskRole: Type: AWS::IAM::Role Properties: # ... ManagedPolicyArns: - !Ref BaseTaskRoleManagedPolicy - arn:aws:iam::123456789012:policy/cfn-generated-policy-name # Basic permissions for the task BaseTaskRoleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: # ...