Details und Beispiele für Komponenten- CloudFormation IaC-Dateiparameter - 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.

Details und Beispiele für Komponenten- CloudFormation IaC-Dateiparameter

Sie können Parameter in Ihrer Komponenteninfrastruktur als Codedateien (IaC) definieren und referenzieren. Eine detaillierte 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 von Komponentenausgabeparametern

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. Angefügte Komponenten können Eingaben von der Service-Instance abrufen, an die sie angehängt sind. Trennte Komponenten haben keine Eingaben.

Lesen von Parameterwerten in Komponenten-IaC-Dateien

Sie können Parameter im Zusammenhang mit der Komponente und anderen Ressourcen in Komponenten-IaC-Dateien lesen. Sie lesen einen Parameterwert, indem Sie im AWS Proton Parameter-Namespace auf den Namen des Parameters verweisen.

  • Eingabeparameter – Lesen Sie einen angehängten Service-Instance-Eingabewert, indem Sie auf verweisenservice_instance.inputs.input-name.

  • Ressourcenparameter – Lesen Sie AWS Proton Ressourcenparameter, indem Sie auf Namen wie component.name, service.nameservice_instance.name, und verweisenenvironment.name.

  • Ausgabeparameter – Lesen Sie Umgebungsausgaben, indem Sie auf verweisenenvironment.outputs.output-name.

Beispiel für Komponenten- und ServiceIaC-Dateien mit Parametern

Das folgende Beispiel zeigt eine Komponente, die einen Amazon Simple Storage Service (Amazon S3)-Bucket und eine zugehörige Zugriffsrichtlinie bereitstellt und die Amazon-Ressourcennamen (ARNs) beider Ressourcen als Komponentenausgaben bereitstellt. Eine ServiceIaC-Vorlage fügt die Komponentenausgaben als Containerumgebungsvariablen 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 die Bucket-Zugriffsrichtlinie zur Rolle der Aufgabe hinzu. Der Bucket-Name basiert auf den Namen der Umgebung, des Services, der Service-Instance und der Komponente, was bedeutet, dass der Bucket mit einer bestimmten Instance der Komponentenvorlage gekoppelt ist, die eine bestimmte Service-Instance erweitert. Entwickler können mehrere benutzerdefinierte Komponenten basierend auf dieser Komponentenvorlage erstellen, um Amazon 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 IaC-Datei zu verweisen. Sie können -{% if ... %}Anweisungen verwenden, um Blöcke von Anweisungen nur hinzuzufügen, wenn eine Komponente an die Service-Instance angefügt ist. Die proton_cfn_* Schlüsselwörter sind Filter, mit denen Sie Ausgabeparameterwerte 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.

Beispiel -Service CloudFormation IaC-Datei mit 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 der Komponente.

Beispiel CloudFormation IaC-Komponentendatei
# 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 Service-Instance AWS Proton wiedergibt und alle Parameter durch tatsächliche Werte ersetzt, könnte die Vorlage wie die folgende Datei aussehen.

Beispiel -Service-Instance CloudFormation gerenderte IaC-Datei
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: # ...