

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de fonctions de remplacement de paramètres avec des pipelines CodePipeline
<a name="continuous-delivery-codepipeline-parameter-override-functions"></a>

Au cours d'une CodePipeline étape, vous pouvez définir des [remplacements de paramètres](continuous-delivery-codepipeline-action-reference.md) pour les CloudFormation actions. Les remplacements de paramètres vous permettent de spécifier des valeurs de paramètres de modèle qui remplacent les valeurs d'un fichier de configuration de modèle. CloudFormation fournit des fonctions qui vous aident à spécifier des valeurs dynamiques (valeurs inconnues tant que le pipeline ne fonctionne pas).

**Topics**
+ [`Fn::GetArtifactAtt`](#w2aac21c17b7)
+ [`Fn::GetParam`](#w2aac21c17b9)
+ [Consultez aussi](#w2aac21c17c11)

## `Fn::GetArtifactAtt`
<a name="w2aac21c17b7"></a>

La fonction `Fn::GetArtifactAtt` récupère la valeur d'un attribut à partir d'un artefact d'entrée, comme le nom du compartiment S3 dans lequel l'artefact est stocké. Utilisez cette fonction pour spécifier les attributs d'un artefact, tels que son nom de fichier ou son nom de Amazon S3 compartiment.

Lorsque vous exécutez un pipeline, il CodePipeline copie et écrit des fichiers dans le magasin d'artefacts du pipeline (un compartiment S3). CodePipeline génère les noms de fichiers dans le magasin d'artefacts. Ces noms de fichiers sont inconnus avant l'exécution du pipeline.

Par exemple, dans votre pipeline, vous pouvez avoir un stage source qui CodePipeline copie le code source de votre AWS Lambda fonction dans le magasin d'artefacts. À l'étape suivante, vous disposez d'un CloudFormation modèle qui crée la fonction Lambda, mais CloudFormation nécessite le nom du fichier pour créer la fonction. Vous devez utiliser la fonction `Fn::GetArtifactAtt` pour transmettre les noms exacts des fichiers et du compartiment S3.

### Syntaxe
<a name="w2aac21c17b7b9"></a>

Utilisez la syntaxe suivante pour récupérer la valeur d'attribut d'un artefact.

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

`artifactName`  
Nom de l'artefact d'entrée. Vous devez déclarer cet artefact comme entrée pour l'action associée.

`attributeName`  
Nom de l'attribut d'artefact dont vous voulez récupérer la valeur. Pour plus d'informations sur chaque attribut d'artefact, consultez la section Attributs qui suit.

### Exemple
<a name="w2aac21c17b7c11"></a>

Les remplacements de paramètres suivants spécifient les paramètres `BucketName` et `ObjectKey` en récupérant le nom du compartiment S3 et le nom de l'artefact `LambdaFunctionSource`. Cet exemple suppose que le code source de la fonction Lambda a été CodePipeline copié et enregistré en tant qu'artefact, par exemple dans le cadre d'une étape source.

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

### Attributes
<a name="w2aac21c17b7c13"></a>

Vous pouvez récupérer les attributs suivants pour un artefact.

`BucketName`  
Nom du compartiment S3 dans lequel l'artefact est stocké.

`ObjectKey`  
Nom du `.zip` fichier contenant l'artefact généré par CodePipeline, par exemple`1ABCyZZ.zip`.

`URL`  
URL Amazon Simple Storage Service (Amazon S3) de l'artefact, comme `https://s3.us-west-2.amazonaws.com/artifactstorebucket-yivczw8jma0c/test/TemplateSo/1ABCyZZ.zip`.

## `Fn::GetParam`
<a name="w2aac21c17b9"></a>

La fonction `Fn::GetParam` renvoie une valeur à partir d'une paire clé-valeur dans un fichier au format JSON. Le fichier JSON doit être inclus dans un artefact.

Utilisez cette fonction pour récupérer les valeurs de sortie d'une CloudFormation pile et les utiliser comme entrée pour une autre action. Par exemple, si vous spécifiez le nom du fichier de sortie pour une CloudFormation action, CodePipeline enregistrez le résultat dans un fichier JSON, puis l'ajoutez au `.zip` fichier de l'artefact de sortie. Utilisez la fonction `Fn::GetParam` pour récupérer la valeur de sortie et l'utiliser comme entrée pour une autre action.

### Syntaxe
<a name="w2aac21c17b9b7"></a>

Utilisez la syntaxe suivante pour récupérer une valeur à partir d'une paire clé-valeur.

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

`artifactName`  
Nom de l'artefact qui doit être inclus comme artefact d'entrée pour l'action associée.

`JSONFileName`  
Nom d'un fichier JSON contenu dans l'artefact.

`keyName`  
Nom de la clé dont vous voulez récupérer la valeur.

### Exemples
<a name="w2aac21c17b9b9"></a>

Les exemples suivants montrent comment utiliser la fonction `Fn::GetParam` dans un remplacement de paramètre.

#### Syntaxe
<a name="w2aac21c17b9b9b5"></a>

Le remplacement de paramètre suivant spécifie le paramètre `WebSiteURL` en récupérant la valeur de la clé `URL` à partir du fichier `stack-output.json` situé dans l'artefact `WebStackOutput`.

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

#### CloudFormation extraits de modèles
<a name="w2aac21c17b9b9b7"></a>

Les extraits de CloudFormation modèle suivants, issus d'un CodePipeline pipeline, montrent comment transmettre des sorties de pile. Ces extraits présentent deux étapes de la définition du pipeline. La première étape crée une pile et enregistre ses sorties dans le fichier `TestOutput.json` dans l’artefact `StackAOutput`. Ces valeurs sont spécifiées par les propriétés `OutputFileName` et `OutputArtifacts`.

Le nom de l’artefact d’entrée source pour les étapes est `TemplateSource`. Le nom de fichier pour le modèle de pile est `teststackA.yaml`, et le nom du fichier de configuration est `test-configuration.json`. Dans les deux étapes, ces valeurs sont spécifiées pour les propriétés `TemplateConfiguration` et `TemplatePath` comme indiqué :

```
TemplateConfiguration: TemplateSource::test-configuration.json
TemplatePath: TemplateSource::teststackA.yaml
```

**Example Étape Créer pile 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'
```

Dans une étape ultérieure, la pile B utilise les sorties de la pile A. Dans la propriété `ParameterOverrides`, l’exemple utilise la fonction `Fn::GetParam` pour spécifier le paramètre `StackBInputParam`. La valeur obtenue est la valeur associée à la clé `StackAOutputName`.

**Example Étape Créer pile 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'
```

## Consultez aussi
<a name="w2aac21c17c11"></a>

Les ressources connexes suivantes peuvent s'avérer utiles lors de l'utilisation de ces paramètres.
+ Pour plus d'informations sur les paramètres CloudFormation d'action dans CodePipeline, consultez la [référence de configuration des actions de CloudFormation déploiement](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html) dans le *Guide de AWS CodePipeline l'utilisateur*.
+ Pour des valeurs d'exemple de modèle par fournisseur d'action (par exemple pour les champs `Owner` ou `configuration`), veuillez consulter la rubrique [Référence sur la structure des actions](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference.html) dans le *Guide de l'utilisateur AWS CodePipeline *.
+ Pour télécharger des modèles de piles de pipeline en YAML ou JSON, consultez [Tutoriel : Créer un pipeline avec CloudFormation](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-cloudformation.html) dans le *Guide de l’utilisateur AWS CodePipeline *.