Verwenden von Funktionen zum Überschreiben von Parametern mit CodePipeline Pipelines - AWS CloudFormation

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.

Verwenden von Funktionen zum Überschreiben von Parametern mit CodePipeline Pipelines

In einer CodePipeline Phase können Sie Parameterüberschreibungen für AWS CloudFormation Aktionen angeben. Mit Parameterüberschreibungen können Sie Vorlagenparameterwerte angeben, die Werte in einer Vorlagenkonfigurationsdatei überschreiben. AWS CloudFormation stellt Funktionen bereit, mit denen Sie dynamische Werte angeben können (Werte, die erst bekannt sind, wenn die Pipeline ausgeführt wird).

Fn::GetArtifactAtt

Die Fn::GetArtifactAtt-Funktion ruft den Wert eines Attributs aus einem Eingabeartefakt ab, z. B. den Namen des S3-Buckets, in dem das Artefakt gespeichert ist. Verwenden Sie diese Funktion, um Attribute eines Artefakts anzugeben, z. B. seinen Datei- oder Amazon S3 Bucket-Namen.

Wenn Sie eine Pipeline ausführen, werden Dateien CodePipeline kopiert und in den Artefaktspeicher der Pipeline (ein S3-Bucket) geschrieben. CodePipeline generiert die Dateinamen im Artefaktspeicher. Diese Dateinamen sind nicht bekannt, bevor Sie die Pipeline ausführen.

In Ihrer Pipeline könnten Sie beispielsweise eine Quellstufe haben, in der der Quellcode Ihrer AWS Lambda Funktion in den Artefaktspeicher CodePipeline kopiert wird. In der nächsten Phase haben Sie eine AWS CloudFormation Vorlage, die die Lambda-Funktion erstellt, aber den Dateinamen AWS CloudFormation benötigt, um die Funktion zu erstellen. Sie müssen die Fn::GetArtifactAtt-Funktion verwenden, um den genauen S3-Bucket- und Dateinamen zu übergeben.

Syntax

Verwenden Sie die folgende Syntax zum Abrufen eines Attributwerts eines Artefakts.

{ "Fn::GetArtifactAtt" : [ "artifactName", "attributeName" ] }
artifactName

Der Name des Eingabeartefakts. Sie müssen dieses Artefakt als Eingabe für die zugehörige Aktion deklarieren.

attributeName

Der Name des Artefaktattributs, dessen Wert Sie abrufen möchten. Details zu den einzelnen Artefakten finden Sie im folgenden Abschnitt "Attribute".

Beispiel

Die folgenden Parameter-Überschreibungen geben die Parameter BucketName und ObjectKey durch Abrufen des S3-Bucket-Namens und Dateinamens des LambdaFunctionSource-Artefakts an. In diesem Beispiel wird davon ausgegangen, dass der Quellcode der Lambda-Funktion CodePipeline kopiert und als Artefakt gespeichert wurde, beispielsweise als Teil einer Quellstufe.

{ "BucketName" : { "Fn::GetArtifactAtt" : ["LambdaFunctionSource", "BucketName"]}, "ObjectKey" : { "Fn::GetArtifactAtt" : ["LambdaFunctionSource", "ObjectKey"]} }

Attribute

Sie können die folgenden Attribute für ein Artefakt abrufen.

BucketName

Der Name des S3-Buckets, in dem das Artefakt gespeichert ist.

ObjectKey

Der Name der .zip Datei, die das Artefakt enthält, das von generiert wurde CodePipeline, z. B. 1ABCyZZ.zip

URL

Der Amazon Simple Storage Service (Amazon S3) URL des Artefakts, wie https://s3.us-west-2.amazonaws.com/artifactstorebucket-yivczw8jma0c/test/TemplateSo/1ABCyZZ.zip z.

Fn::GetParam

Die Fn::GetParam Funktion gibt einen Wert aus einem Schlüssel-Wert-Paar in einer JSON -formatierten Datei zurück. Die JSON Datei muss in einem Artefakt enthalten sein.

Verwenden Sie diese Funktion, um Ausgabewerte aus einem AWS CloudFormation Stapel abzurufen und sie als Eingabe für eine andere Aktion zu verwenden. Wenn Sie beispielsweise einen Ausgabedateinamen für eine AWS CloudFormation Aktion angeben, wird die Ausgabe in einer JSON Datei CodePipeline gespeichert und dann zur .zip Datei des Ausgabeartefakts hinzugefügt. Verwenden Sie die Fn::GetParam-Funktion, um den Ausgabewert abzurufen, und verwenden Sie ihn als Eingabe für eine andere Aktion.

Syntax

Verwenden Sie die folgende Syntax, um einen Wert aus einem Schlüssel-Wert-Paar abzurufen.

{ "Fn::GetParam" : [ "artifactName", "JSONFileName", "keyName" ] }
artifactName

Der Name des Artefakts, das als Eingabeartefakt für die zugehörige Aktion eingeschlossen werden muss.

JSONFileName

Der Name einer JSON Datei, die im Artefakt enthalten ist.

keyName

Der Name des Schlüssels, dessen Wert Sie abrufen möchten.

Beispiele

Die folgenden Beispiele zeigen, wie die Fn::GetParam-Funktion in einer Parameterüberschreibung verwendet wird.

Syntax

Die folgende Parameterüberschreibung gibt den WebSiteURL-Parameter an, indem der Wert des Schlüssels URL aus der Datei stack-output.json abgerufen wird, die im Artefakt WebStackOutput enthalten ist.

{ "WebSiteURL" : { "Fn::GetParam" : ["WebStackOutput", "stack-output.json", "URL"]} }

AWS CloudFormation Schnipsel aus Vorlagen

Die folgenden AWS CloudFormation Vorlagenausschnitte aus einer CodePipeline Pipeline zeigen, wie Stack-Ausgaben übergeben werden. Diese Codeausschnitte zeigen zwei Phasen der Pipeline-Definition. In der ersten Phase wird ein Stack erstellt und dessen Ausgaben werden in der Datei TestOutput.json im Artefakt StackAOutput gespeichert. Diese Werte werden mit den Eigenschaften OutputFileName und OutputArtifacts angegeben.

Der Name des Quelleingangsartefakts für die Phasen lautet TemplateSource. Der Dateiname für die Stack-Vorlage lautet teststackA.yaml und der Dateiname für die Konfigurationsdatei test-configuration.json. In beiden Phasen werden diese Werte wie dargestellt für die Eigenschaften TemplateConfiguration und TemplatePath angegeben.

TemplateConfiguration: TemplateSource::test-configuration.json TemplatePath: TemplateSource::teststackA.yaml
Beispiel Erstellen der Stack A-Phase
- Name: CreateTestStackA Actions: - Name: CloudFormationCreate ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' Configuration: ActionMode: CREATE_UPDATE Capabilities: CAPABILITY_IAM OutputFileName: TestOutput.json RoleArn: !GetAtt [CFNRole, Arn] StackName: StackA TemplateConfiguration: TemplateSource::test-configuration.json TemplatePath: TemplateSource::teststackA.yaml InputArtifacts: - Name: TemplateSource OutputArtifacts: - Name: StackAOutput RunOrder: '1'

In einer nachfolgenden Phase verwendet Stack B die Ausgaben von Stack A. In der ParameterOverrides-Eigenschaft wird im Beispiel die Fn::GetParam-Funktion zur Angabe des StackBInputParam-Parameters verwendet. Die resultierende Wert ist der Wert, der dem Schlüssel StackAOutputName zugeordnet ist.

Beispiel Erstellen der Stack B-Phase
- Name: CreateTestStackB Actions: - Name: CloudFormationCreate ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' Configuration: ActionMode: CREATE_UPDATE Capabilities: CAPABILITY_IAM RoleArn: !GetAtt [CFNRole, Arn] StackName: StackB TemplateConfiguration: TemplateSource::test-configuration.json TemplatePath: TemplateSource::teststackB.yaml ParameterOverrides: | { "StackBInputParam" : { "Fn::GetParam" : ["StackAOutput", "TestOutput.json", "StackAOutputName"]} } InputArtifacts: - Name: TemplateSource - Name: StackAOutput RunOrder: '1'

Weitere Informationen finden Sie auch unter

Die folgenden verwandten Ressourcen unterstützen Sie bei der Arbeit mit diesen Parametern.

  • Weitere Informationen zu den AWS CloudFormation Aktionsparametern in CodePipeline finden Sie in der Referenz AWS CloudFormationzur Aktionskonfiguration im AWS CodePipeline Benutzerhandbuch.

  • Beispiels-Vorlagenwerte nach Aktionsanbietern, wie etwa für das Owner-Feld oder die configuration-Felder, finden Sie in der Referenz zur Aktionsstruktur im Benutzerhandbuch für AWS CodePipeline .

  • Beispiele für Pipeline-Stack-Vorlagen im YAML JSON Oder-Format finden Sie in den Tutorials unter Erstellen einer Pipeline mit AWS CloudFormation im AWS CodePipeline Benutzerhandbuch.

  • Eine Beispiel-Vorlagenkonfigurationsdatei finden Sie unter AWS CloudFormation Artifacts.