

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan fungsi penggantian parameter dengan saluran pipa CodePipeline
<a name="continuous-delivery-codepipeline-parameter-override-functions"></a>

Dalam satu CodePipeline tahap, Anda dapat menentukan [penggantian parameter untuk CloudFormation tindakan](continuous-delivery-codepipeline-action-reference.md). Penggantian parameter memungkinkan Anda menentukan nilai parameter template yang mengesampingkan nilai dalam file konfigurasi templat. CloudFormation menyediakan fungsi untuk membantu Anda menentukan nilai dinamis (nilai yang tidak diketahui hingga pipeline berjalan).

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

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

Fungsi `Fn::GetArtifactAtt` mengambil nilai atribut dari artefak input, seperti nama bucket S3 tempat artefak disimpan. Gunakan fungsi ini untuk menentukan atribut artefak, seperti nama file atau nama Amazon S3 bucket.

Saat Anda menjalankan pipeline, CodePipeline menyalin dan menulis file ke penyimpanan artefak pipeline (bucket S3). CodePipeline menghasilkan nama file di toko artefak. Nama file ini tidak diketahui sebelum Anda menjalankan pipeline.

Misalnya, dalam pipeline Anda, Anda mungkin memiliki tahap sumber di mana CodePipeline menyalin kode sumber AWS Lambda fungsi Anda ke penyimpanan artefak. Pada tahap berikutnya, Anda memiliki CloudFormation template yang membuat fungsi Lambda, tetapi CloudFormation membutuhkan nama file untuk membuat fungsi. Anda harus menggunakan fungsi `Fn::GetArtifactAtt` untuk meneruskan bucket S3 dan nama file yang tepat.

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

Gunakan sintaks berikut untuk mengambil nilai atribut artefak.

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

`artifactName`  
Nama artefak input. Anda harus menyatakan artefak ini sebagai input untuk tindakan terkait.

`attributeName`  
Nama dari atribut artefak yang ingin Anda ambil nilainya. Untuk detail tentang setiap atribut artefak, lihat bagian Atribut berikut.

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

Penimpaan parameter berikut menentukan `ObjectKey` parameter `BucketName` dan dengan mengambil nama bucket S3 dan nama file artefak. `LambdaFunctionSource` Contoh ini mengasumsikan bahwa CodePipeline menyalin kode sumber fungsi Lambda dan menyimpannya sebagai artefak, misalnya, sebagai bagian dari tahap sumber.

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

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

Anda dapat mengambil atribut berikut untuk artefak.

`BucketName`  
Nama bucket S3 tempat data artefak disimpan.

`ObjectKey`  
Nama `.zip` file yang berisi artefak yang dihasilkan oleh CodePipeline, seperti`1ABCyZZ.zip`.

`URL`  
URL Amazon Simple Storage Service (Amazon S3) dari artefak, seperti. `https://s3.us-west-2.amazonaws.com/artifactstorebucket-yivczw8jma0c/test/TemplateSo/1ABCyZZ.zip`

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

Fungsi `Fn::GetParam` mengembalikan nilai dari pasangan nilai kunci dalam file berformat JSON. File JSON harus disertakan dalam artefak.

Gunakan fungsi ini untuk mengambil nilai output dari CloudFormation tumpukan dan menggunakannya sebagai masukan untuk tindakan lain. Misalnya, jika Anda menentukan nama file keluaran untuk suatu CloudFormation tindakan, CodePipeline menyimpan output dalam file JSON dan kemudian menambahkannya ke file artefak `.zip` keluaran. Gunakan fungsi `Fn::GetParam` untuk mengambil nilai output dan menggunakannya sebagai input untuk tindakan lain.

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

Gunakan sintaks berikut untuk mengambil nilai dari pasangan nilai kunci.

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

`artifactName`  
Nama artefak, yang harus disertakan sebagai artefak input untuk tindakan terkait.

`JSONFileName`  
Nama file JSON yang ada di dalam artefak.

`keyName`  
Nama dari kunci yang ingin Anda ambil nilainya.

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

Contoh-contoh berikut ini menunjukkan cara menggunakan fungsi `Fn::GetParam` dalam penimpaan parameter.

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

Penimpaan parameter berikut menentukan parameter `WebSiteURL` dengan mengambil nilai kunci `URL` dari file `stack-output.json` yang ada di artefak `WebStackOutput`.

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

#### CloudFormation cuplikan template
<a name="w2aac21c17b9b9b7"></a>

Cuplikan CloudFormation template berikut, dari CodePipeline pipeline, menunjukkan cara meneruskan output stack. Snippet ini menunjukkan dua tahap definisi alur. Tahap pertama membuat tumpukan dan menyimpan outputnya dalam file `TestOutput.json` di artefak `StackAOutput`. Nilai-nilai ini ditentukan oleh properti `OutputFileName` dan `OutputArtifacts`.

Nama artefak input sumber untuk tahapan adalah `TemplateSource`. Nama file untuk templat tumpukan adalah `teststackA.yaml`, dan nama file untuk file konfigurasi adalah `test-configuration.json`. Dalam kedua tahap, nilai-nilai ini ditentukan untuk properti `TemplateConfiguration` dan `TemplatePath` seperti yang ditunjukkan:

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

**Example Membuat tahapan tumpukan 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'
```

Pada tahap berikutnya, stack B menggunakan output dari tumpukan A. Dalam properti `ParameterOverrides`, contoh menggunakan fungsi `Fn::GetParam` untuk menentukan parameter `StackBInputParam`. Nilai yang dihasilkan adalah nilai yang terkait dengan kunci `StackAOutputName`.

**Example Membuat tahapan tumpukan 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'
```

## Lihat juga
<a name="w2aac21c17c11"></a>

Sumber daya terkait berikut dapat membantu Anda saat menggunakan parameter ini.
+ Untuk informasi selengkapnya tentang parameter CloudFormation tindakan CodePipeline, lihat [referensi konfigurasi tindakan CloudFormation penerapan](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html) di *Panduan AWS CodePipeline Pengguna*.
+ Misalnya nilai templat menurut penyedia tindakan, seperti untuk `Owner` bidang atau `configuration` bidang, lihat [referensi struktur tindakan](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference.html) di *Panduan AWS CodePipeline Pengguna*.
+ Untuk mengunduh contoh templat tumpukan pipeline dalam format YAMAL atau JSON, lihat [Tutorial: Membuat pipeline dengan CloudFormationAWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-cloudformation.html) *Panduan Pengguna*.