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 wie
component.name
,service.name
service_instance.name
, und verweisen.environment.name
-
Ausgabeparameter — Lesen Sie die Umgebungsausgaben durch
environment.outputs.
Referenzierung.output-name
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:
# ...