Utilizzo delle funzioni di sovrascrittura dei parametri con le pipeline CodePipeline - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo delle funzioni di sovrascrittura dei parametri con le pipeline CodePipeline

In una CodePipeline fase, potete specificare le sostituzioni dei parametri per le azioni. AWS CloudFormation Le sostituzioni dei parametri consentono di specificare valori dei parametri del modello che sostituiscono i valori in un file di configurazione del modello. AWS CloudFormation fornisce funzioni che consentono di specificare valori dinamici (valori sconosciuti fino all'esecuzione della pipeline).

Fn::GetArtifactAtt

La funzione Fn::GetArtifactAtt recupera il valore di un attributo da un artefatto di input, come il nome del bucket S3 in cui l'artefatto viene archiviato. Utilizzate questa funzione per specificare gli attributi di un artefatto, come il nome del file o Amazon S3 il nome del bucket.

Quando esegui una pipeline, CodePipeline copia e scrive i file nell'archivio degli artefatti della pipeline (un bucket S3). CodePipeline genera i nomi dei file nell'archivio degli artefatti. Tali nomi file sono sconosciuti prima dell'esecuzione della pipeline.

Ad esempio, nella vostra pipeline, potreste avere una fase di origine in cui CodePipeline copia il codice sorgente AWS Lambda della funzione nell'archivio degli artefatti. Nella fase successiva, si dispone di un AWS CloudFormation modello che crea la funzione Lambda, ma AWS CloudFormation richiede il nome del file per creare la funzione. È necessario utilizzare la funzione Fn::GetArtifactAtt per passare il nome esatto del bucket S3 e del file.

Sintassi

Usa la sintassi seguente per recuperare il valore di un attributo di un artefatto.

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

Il nome dell'artefatto di input. È necessario dichiarare questo artefatto come input per l'operazione associata.

attributeName

Il nome dell'attributo dell'artefatto di cui vuoi recuperare il valore. Per ulteriori informazioni sull'attributo di ogni artefatto, consulta la sezione Attributi di seguito.

Esempio

Le seguenti sostituzioni di parametro specificano i parametri BucketName e ObjectKey recuperando il nome del bucket S3 e il nome file dell'artefatto LambdaFunctionSource. Questo esempio presuppone che il codice sorgente della funzione CodePipeline Lambda sia stato copiato e salvato come artefatto, ad esempio come parte di uno stadio sorgente.

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

Attributes

Puoi recuperare i seguenti attributi per un artefatto.

BucketName

Il nome del bucket S3 in cui l'artefatto viene archiviato.

ObjectKey

Il nome del .zip file che contiene l'elemento generato da, ad esempio. CodePipeline 1ABCyZZ.zip

URL

Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon URL S3) dell'artefatto, ad esempio. https://s3.us-west-2.amazonaws.com/artifactstorebucket-yivczw8jma0c/test/TemplateSo/1ABCyZZ.zip

Fn::GetParam

La Fn::GetParam funzione restituisce un valore da una coppia chiave-valore in un file in formato. JSON Il JSON file deve essere incluso in un artefatto.

Utilizzate questa funzione per recuperare i valori di output da uno AWS CloudFormation stack e usarli come input per un'altra azione. Ad esempio, se specificate un nome di file di output per un' AWS CloudFormation azione, CodePipeline salva l'output in un JSON file e quindi lo aggiunge al file dell'elemento di output. .zip Utilizza la funzione Fn::GetParam per recuperare il valore di output e utilizzarlo come input per un'altra operazione.

Sintassi

Utilizza la sintassi seguente per recuperare un valore da una coppia chiave-valore.

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

Il nome dell'artefatto che deve essere incluso come artefatto di input per l'azione associata.

JSONFileName

Il nome di un JSON file contenuto nell'elemento.

keyName

Il nome della chiave di cui vuoi recuperare il valore.

Esempi

Gli esempi seguenti illustrano come utilizzare la funzione Fn::GetParam in una sostituzione di parametro.

Sintassi

La seguente sostituzione di parametro specifica il parametro WebSiteURL recuperando il valore della chiave URL dal file stack-output.json che si trova nell'artefatto WebStackOutput.

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

AWS CloudFormation frammenti di modello

I seguenti frammenti AWS CloudFormation di modello, tratti da una CodePipeline pipeline, mostrano come passare gli output dello stack. Questi frammenti mostrano due fasi di definizione della pipeline. La prima fase crea uno stack e ne salva gli output nel file TestOutput.json nell'artefatto StackAOutput. Questi valori sono specificate dalle proprietà OutputFileName e OutputArtifacts.

Il nome dell'artefatto di input di origine per le fasi è TemplateSource. Il nome file del modello di stack è teststackA.yaml e il nome del file di configurazione è test-configuration.json. In entrambe le fasi, questi valori sono specificati per le proprietà TemplateConfiguration e TemplatePath come mostrato di seguito:

TemplateConfiguration: TemplateSource::test-configuration.json TemplatePath: TemplateSource::teststackA.yaml
Esempio Fase di creazione dello stack A
- 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 una fase seguente, lo stack B utilizza gli output dello stack A. Nella proprietà ParameterOverrides, l'esempio utilizza la funzione Fn::GetParam per specificare il parametro StackBInputParam. Il valore risultante è il valore associato alla chiave StackAOutputName.

Esempio Fase di creazione dello stack B
- 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'

Consulta anche

Le risorse correlate seguenti possono rivelarsi utili durante l'utilizzo di questi parametri.

  • Per ulteriori informazioni sui parametri di AWS CloudFormation azione in CodePipeline, consultate il riferimento alla configurazione delle AWS CloudFormationazioni nella Guida per l'utente.AWS CodePipeline

  • Per i valori del modello di esempio per provider di operazioni, ad esempio per il campo Owner o i campi configuration, consulta il Riferimento per la struttura delle operazioni nella Guida per l'utente di AWS CodePipeline .

  • Per scaricare esempi di modelli di stack di pipeline nel nostro YAML JSON formato, consulta i tutorial nella sezione Create a pipeline with AWS CloudFormation nella Guida per l'utente.AWS CodePipeline

  • Per un esempio di file di configurazione del modello, consulta Artefatti di AWS CloudFormation.