

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

# Walkthrough: Membuat ekstensi khusus AWS AppConfig
<a name="working-with-appconfig-extensions-creating-custom"></a>

Untuk membuat AWS AppConfig ekstensi khusus, selesaikan tugas-tugas berikut. Setiap tugas dijelaskan secara lebih rinci dalam topik selanjutnya.

**catatan**  
Anda dapat melihat contoh AWS AppConfig ekstensi kustom pada GitHub:  
[Contoh ekstensi yang mencegah penerapan dengan kalender `blocked day` moratorium menggunakan Systems Manager Change Calendar](https://github.com/aws-samples/aws-appconfig-change-calendar-extn)
[Ekstensi sampel yang mencegah rahasia bocor ke data konfigurasi menggunakan git-secret](https://github.com/aws-samples/aws-appconfig-git-secrets-extn)
[Ekstensi sampel yang mencegah informasi identitas pribadi (PII) bocor ke data konfigurasi menggunakan Amazon Comprehend](https://github.com/aws-samples/aws-appconfig-pii-extn)

**1. [Buat AWS Lambda fungsi](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-creating-custom-lambda.html)**  
Untuk sebagian besar kasus penggunaan, untuk membuat ekstensi khusus, Anda harus membuat AWS Lambda fungsi untuk melakukan perhitungan dan pemrosesan apa pun yang ditentukan dalam ekstensi. Pengecualian untuk aturan ini adalah jika Anda membuat versi *kustom* dari [ekstensi notifikasi yang AWS ditulis](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-about-predefined.html) untuk menambah atau menghapus titik tindakan. Untuk detail selengkapnya tentang pengecualian ini, lihat[Langkah 3: Buat AWS AppConfig ekstensi khusus](working-with-appconfig-extensions-creating-custom-extensions.md).

**2. [Konfigurasikan izin untuk ekstensi kustom Anda](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-creating-custom-permissions.html)**  
Untuk mengonfigurasi izin untuk ekstensi kustom Anda, Anda dapat melakukan salah satu hal berikut:  
+ Buat peran layanan AWS Identity and Access Management (IAM) yang menyertakan `InvokeFunction` izin. 
+ Buat kebijakan sumber daya dengan menggunakan tindakan [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API Lambda.
Panduan ini menjelaskan cara membuat peran layanan IAM.

**3. [Buat ekstensi](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-creating-custom-extensions.html)**  
Anda dapat membuat ekstensi menggunakan AWS AppConfig konsol atau dengan memanggil tindakan [CreateExtension](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateExtension.html)API dari AWS CLI, Alat AWS untuk PowerShell, atau SDK. Walkthrough menggunakan konsol.

**4. [Buat asosiasi ekstensi](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-creating-custom-association.html)**  
Anda dapat membuat asosiasi ekstensi menggunakan AWS AppConfig konsol atau dengan memanggil tindakan [CreateExtensionAssociation](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateExtensionAssociation.html)API dari AWS CLI, Alat AWS untuk PowerShell, atau SDK. Walkthrough menggunakan konsol.

**5. Lakukan tindakan yang memanggil ekstensi**  
Setelah Anda membuat asosiasi, AWS AppConfig memanggil ekstensi ketika titik tindakan yang ditentukan oleh ekstensi terjadi untuk sumber daya tersebut. Misalnya, jika Anda mengaitkan ekstensi yang berisi `PRE_CREATE_HOSTED_CONFIGURATION_VERSION` tindakan, ekstensi akan dipanggil setiap kali Anda membuat versi konfigurasi baru yang dihosting.

Topik di bagian ini menjelaskan setiap tugas yang terlibat dalam membuat AWS AppConfig ekstensi khusus. Setiap tugas dijelaskan dalam konteks kasus penggunaan di mana pelanggan ingin membuat ekstensi yang secara otomatis mencadangkan konfigurasi ke bucket Amazon Simple Storage Service (Amazon S3). Ekstensi berjalan setiap kali konfigurasi yang dihosting dibuat (`PRE_CREATE_HOSTED_CONFIGURATION_VERSION`) atau disebarkan (`PRE_START_DEPLOYMENT`).

**Topics**
+ [

# Langkah 1: Buat fungsi Lambda untuk ekstensi khusus AWS AppConfig
](working-with-appconfig-extensions-creating-custom-lambda.md)
+ [

# Langkah 2: Konfigurasikan izin untuk ekstensi khusus AWS AppConfig
](working-with-appconfig-extensions-creating-custom-permissions.md)
+ [

# Langkah 3: Buat AWS AppConfig ekstensi khusus
](working-with-appconfig-extensions-creating-custom-extensions.md)
+ [

# Langkah 4: Buat asosiasi ekstensi untuk AWS AppConfig ekstensi khusus
](working-with-appconfig-extensions-creating-custom-association.md)

# Langkah 1: Buat fungsi Lambda untuk ekstensi khusus AWS AppConfig
<a name="working-with-appconfig-extensions-creating-custom-lambda"></a>

Untuk sebagian besar kasus penggunaan, untuk membuat ekstensi khusus, Anda harus membuat AWS Lambda fungsi untuk melakukan perhitungan dan pemrosesan apa pun yang ditentukan dalam ekstensi. Bagian ini mencakup kode contoh fungsi Lambda untuk ekstensi khusus AWS AppConfig . Bagian ini juga mencakup permintaan muatan dan detail referensi respons. *Untuk informasi tentang membuat fungsi Lambda, lihat [Memulai Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) di Panduan Pengembang.AWS Lambda *

## Kode sampel
<a name="working-with-appconfig-extensions-creating-custom-lambda-code-sample"></a>

Contoh kode berikut untuk fungsi Lambda, saat dipanggil, secara otomatis mencadangkan AWS AppConfig konfigurasi ke bucket Amazon S3. Konfigurasi dicadangkan setiap kali konfigurasi baru dibuat atau diterapkan. Sampel menggunakan parameter ekstensi sehingga nama bucket tidak harus di-hardcode dalam fungsi Lambda. Dengan menggunakan parameter ekstensi, pengguna dapat melampirkan ekstensi ke beberapa aplikasi dan mencadangkan konfigurasi ke bucket yang berbeda. Contoh kode mencakup komentar untuk menjelaskan fungsi lebih lanjut.

**Contoh fungsi Lambda untuk ekstensi AWS AppConfig **

```
from datetime import datetime
import base64
import json

import boto3


def lambda_handler(event, context):
    print(event)
    
    # Extensions that use the PRE_CREATE_HOSTED_CONFIGURATION_VERSION and PRE_START_DEPLOYMENT 
    # action points receive the contents of AWS AppConfig configurations in Lambda event parameters.
    # Configuration contents are received as a base64-encoded string, which the lambda needs to decode 
    # in order to get the configuration data as bytes. For other action points, the content 
    # of the configuration isn't present, so the code below will fail.
    config_data_bytes = base64.b64decode(event["Content"])
    
    # You can specify parameters for extensions. The CreateExtension API action lets you define  
    # which parameters an extension supports. You supply the values for those parameters when you 
    # create an extension association by calling the CreateExtensionAssociation API action.
    # The following code uses a parameter called S3_BUCKET to obtain the value specified in the 
    # extension association. You can specify this parameter when you create the extension 
    # later in this walkthrough.
    extension_association_params = event.get('Parameters', {})
    bucket_name = extension_association_params['S3_BUCKET']
    write_backup_to_s3(bucket_name, config_data_bytes)
    
    # The PRE_CREATE_HOSTED_CONFIGURATION_VERSION and PRE_START_DEPLOYMENT action points can 
    # modify the contents of a configuration. The following code makes a minor change 
    # for the purposes of a demonstration.
    old_config_data_string = config_data_bytes.decode('utf-8')
    new_config_data_string = old_config_data_string.replace('hello', 'hello!')
    new_config_data_bytes = new_config_data_string.encode('utf-8')
    
    # The lambda initially received the configuration data as a base64-encoded string 
    # and must return it in the same format.
    new_config_data_base64string = base64.b64encode(new_config_data_bytes).decode('ascii')
    
    return {
        'statusCode': 200,
        # If you want to modify the contents of the configuration, you must include the new contents in the 
        # Lambda response. If you don't want to modify the contents, you can omit the 'Content' field shown here.
        'Content': new_config_data_base64string
    }


def write_backup_to_s3(bucket_name, config_data_bytes):
    s3 = boto3.resource('s3')
    new_object = s3.Object(bucket_name, f"config_backup_{datetime.now().isoformat()}.txt")
    new_object.put(Body=config_data_bytes)
```

Jika Anda ingin menggunakan sampel ini selama penelusuran ini, simpan dengan nama **MyS3ConfigurationBackUpExtension** dan salin Nama Sumber Daya Amazon (ARN) untuk fungsi tersebut. Anda menentukan ARN saat Anda membuat peran AWS Identity and Access Management (IAM) di bagian berikutnya. Anda menentukan ARN dan nama saat Anda membuat ekstensi.

## Referensi muatan
<a name="working-with-appconfig-extensions-creating-custom-lambda-payload"></a>

Bagian ini mencakup permintaan payload dan rincian referensi respons untuk bekerja dengan AWS AppConfig ekstensi kustom.

**Struktur permintaan**  
*AtDeploymentTick*

```
{
    'InvocationId': 'o2xbtm7',
    'Parameters': {
        'ParameterOne': 'ValueOne',
        'ParameterTwo': 'ValueTwo'
    },
    'Type': 'OnDeploymentStart',
    'Application': {
        'Id': 'abcd123'
    },
    'Environment': {
        'Id': 'efgh456'
    },
    'ConfigurationProfile': {
        'Id': 'ijkl789',
        'Name': 'ConfigurationName'
    },
    'DeploymentNumber': 2,
    'Description': 'Deployment description',
    'ConfigurationVersion': '2',
    'DeploymentState': 'DEPLOYING',
    'PercentageComplete': '0.0'
}
```

**Struktur permintaan**  
*PreCreateHostedConfigurationVersion*

```
{
    'InvocationId': 'vlns753', // id for specific invocation
    'Parameters': {
        'ParameterOne': 'ValueOne',
        'ParameterTwo': 'ValueTwo'
    },
    'ContentType': 'text/plain',
    'ContentVersion': '2',
    'Content': 'SGVsbG8gZWFydGgh', // Base64 encoded content
    'Application': {
        'Id': 'abcd123',
        'Name': 'ApplicationName'
    },
    'ConfigurationProfile': {
        'Id': 'ijkl789',
        'Name': 'ConfigurationName'
    },
    'Description': '',
    'Type': 'PreCreateHostedConfigurationVersion',
    'PreviousContent': {
        'ContentType': 'text/plain',
        'ContentVersion': '1',
        'Content': 'SGVsbG8gd29ybGQh'
    }
}
```

*PreStartDeployment*

```
{
    'InvocationId': '765ahdm',
    'Parameters': {
        'ParameterOne': 'ValueOne',
        'ParameterTwo': 'ValueTwo'
    },
    'ContentType': 'text/plain',
    'ContentVersion': '2',
    'Content': 'SGVsbG8gZWFydGgh',
    'Application': {
        'Id': 'abcd123',
        'Name': 'ApplicationName'
    },
    'Environment': {
        'Id': 'ibpnqlq',
        'Name': 'EnvironmentName'
    },
    'ConfigurationProfile': {
        'Id': 'ijkl789',
        'Name': 'ConfigurationName'
    },
    'DeploymentNumber': 2,
    'Description': 'Deployment description',
    'Type': 'PreStartDeployment'
}
```

**Peristiwa asinkron**  


*OnStartDeployment, OnDeploymentStep, OnDeployment*

```
{
    'InvocationId': 'o2xbtm7',
    'Parameters': {
        'ParameterOne': 'ValueOne',
        'ParameterTwo': 'ValueTwo'
    },
    'Type': 'OnDeploymentStart',
    'Application': {
        'Id': 'abcd123'
    },
    'Environment': {
        'Id': 'efgh456'
    },
    'ConfigurationProfile': {
        'Id': 'ijkl789',
        'Name': 'ConfigurationName'
    },
    'DeploymentNumber': 2,
    'Description': 'Deployment description',
    'ConfigurationVersion': '2'
}
```

**Struktur respons**  
Contoh berikut menunjukkan apa yang ditampilkan oleh fungsi Lambda Anda sebagai respons terhadap permintaan dari ekstensi kustom AWS AppConfig .

*PRE\$1\$1 Peristiwa sinkron - respons yang berhasil*

Jika Anda ingin mengubah konten, gunakan yang berikut ini:

```
"Content": "SomeBase64EncodedByteArray"
```

*AT\$1\$1 Acara sinkron - respons yang berhasil*

Jika Anda ingin mengontrol langkah penerapan berikutnya (lanjutkan penerapan atau putar kembali) set `Directive` dan `Description` atribut dalam respons. 

```
"Directive": "ROLL_BACK"
"Description" "Deployment event log description"
```

`Directive`mendukung dua nilai: `CONTINUE` atau`ROLL_BACK`. Gunakan enum ini dalam respons payload Anda untuk mengontrol langkah penerapan selanjutnya.

*Peristiwa sinkron - respons yang berhasil*

Jika Anda ingin mengubah konten, gunakan yang berikut ini:

```
"Content": "SomeBase64EncodedByteArray"
```

Jika Anda tidak ingin mengubah konten, jangan kembalikan apa pun.

*Peristiwa asinkron - respons yang berhasil*

Tidak mengembalikan apa-apa.

*Semua peristiwa kesalahan*

```
{
        "Error": "BadRequestError",
        "Message": "There was malformed stuff in here",
        "Details": [{
            "Type": "Malformed",
            "Name": "S3 pointer",
            "Reason": "S3 bucket did not exist"
        }]
    }
```

# Langkah 2: Konfigurasikan izin untuk ekstensi khusus AWS AppConfig
<a name="working-with-appconfig-extensions-creating-custom-permissions"></a>

Gunakan prosedur berikut untuk membuat dan mengonfigurasi peran layanan AWS Identity and Access Management (IAM) (atau *mengambil peran*). AWS AppConfig menggunakan peran ini untuk memanggil fungsi Lambda.

**Untuk membuat peran layanan IAM dan memungkinkan AWS AppConfig untuk mengasumsikannya**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Peran**, lalu pilih **Buat peran**.

1. Di bawah **Pilih jenis entitas tepercaya**, pilih **Kebijakan kepercayaan khusus**.

1. Tempelkan kebijakan JSON berikut ke bidang **Kebijakan kepercayaan khusus**.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "appconfig.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

   Pilih **Berikutnya**.

1. Pada halaman **Tambahkan izin**, pilih **Buat kebijakan**. Halaman **Buat kebijakan** terbuka di tab baru.

1. Pilih tab **JSON**, lalu tempelkan kebijakan izin berikut ke editor. `lambda:InvokeFunction`Tindakan ini digunakan untuk titik `PRE_*` tindakan. `lambda:InvokeAsync`Tindakan ini digunakan untuk titik `ON_*` tindakan. Ganti *Your Lambda ARN* dengan Nama Sumber Daya Amazon (ARN) Lambda Anda.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
           "lambda:InvokeFunction",
           "lambda:InvokeAsync"
         ],
         "Resource": "arn:aws:lambda:us-east-1:111122223333:function:function-name"
       }
     ]
   }
   ```

------

1. Pilih **Berikutnya: Tanda**.

1. Pada halaman **Tambahkan tag (Opsional)**, tambahkan satu atau beberapa pasangan nilai kunci dan kemudian pilih **Berikutnya:** Tinjau.

1. Pada halaman **Kebijakan ulasan**, masukkan nama dan deskripsi, lalu pilih **Buat kebijakan**.

1. Pada tab browser untuk kebijakan kepercayaan kustom Anda, pilih ikon Refresh dan kemudian cari kebijakan izin yang baru saja Anda buat.

1. Pilih kotak centang untuk kebijakan izin Anda, lalu pilih **Berikutnya**.

1. Pada halaman **Nama, tinjau, dan buat**, masukkan nama di kotak **Nama peran**, lalu masukkan deskripsi.

1. Pilih **Buat peran**. Sistem mengembalikan Anda ke halaman **Peran**. Pilih **Lihat peran** di spanduk.

1. Salin ARN. Anda menentukan ARN ini saat Anda membuat ekstensi.

# Langkah 3: Buat AWS AppConfig ekstensi khusus
<a name="working-with-appconfig-extensions-creating-custom-extensions"></a>



Ekstensi mendefinisikan satu atau beberapa tindakan yang dilakukannya selama AWS AppConfig alur kerja. Misalnya, `AWS AppConfig deployment events to Amazon SNS` ekstensi yang AWS ditulis menyertakan tindakan untuk mengirim pemberitahuan ke topik Amazon SNS. Setiap tindakan dipanggil baik ketika Anda berinteraksi dengan AWS AppConfig atau ketika AWS AppConfig melakukan proses atas nama Anda. Ini disebut *titik tindakan*. AWS AppConfig ekstensi mendukung poin tindakan berikut:

**Titik tindakan PRE\$1\$1**: Tindakan ekstensi yang dikonfigurasi pada titik `PRE_*` tindakan diterapkan setelah validasi permintaan, tetapi sebelum AWS AppConfig melakukan aktivitas yang sesuai dengan nama titik tindakan. Pemanggilan tindakan ini diproses pada saat yang sama sebagai permintaan. Jika lebih dari satu permintaan dibuat, pemanggilan tindakan berjalan secara berurutan. Perhatikan juga bahwa titik `PRE_*` tindakan menerima dan dapat mengubah konten konfigurasi. `PRE_*`titik tindakan juga dapat merespons kesalahan dan mencegah tindakan terjadi. 
+ `PRE_CREATE_HOSTED_CONFIGURATION_VERSION`
+ `PRE_START_DEPLOYMENT`

**ON\$1\$1 action points**: Ekstensi juga dapat berjalan secara paralel dengan AWS AppConfig alur kerja dengan menggunakan titik tindakan`ON_*`. `ON_*`titik tindakan dipanggil secara asinkron. `ON_*`titik tindakan tidak menerima isi konfigurasi. Jika ekstensi mengalami kesalahan selama titik `ON_*` tindakan, layanan mengabaikan kesalahan dan melanjutkan alur kerja.
+ `ON_DEPLOYMENT_START`
+ `ON_DEPLOYMENT_STEP`
+ `ON_DEPLOYMENT_BAKING`
+ `ON_DEPLOYMENT_COMPLETE`
+ `ON_DEPLOYMENT_ROLLED_BACK`

**Titik aksi AT\$1\$1: Tindakan** ekstensi yang dikonfigurasi pada titik `AT_*` tindakan dipanggil secara sinkron dan paralel dengan alur kerja. AWS AppConfig Jika ekstensi mengalami kesalahan selama titik `AT_*` tindakan, layanan menghentikan alur kerja dan memutar kembali penerapan.
+ `AT_DEPLOYMENT_TICK`

Titik `AT_DEPLOYMENT_TICK` tindakan mendukung integrasi pemantauan pihak ketiga. `AT_DEPLOYMENT_TICK`dipanggil selama orkestrasi pemrosesan penerapan konfigurasi. Jika Anda menggunakan solusi pemantauan pihak ketiga (misalnya, Datadog atau New Relic), Anda dapat membuat AWS AppConfig ekstensi yang memeriksa alarm di titik `AT_DEPLOYMENT_TICK` tindakan dan, sebagai pagar pembatas keselamatan, memutar kembali penerapan jika memicu alarm. 

Jika Anda menggunakan solusi pemantauan pihak ketiga seperti Datadog atau New Relic, Anda dapat membuat AWS AppConfig ekstensi yang memeriksa alarm di titik `AT_DEPLOYMENT_TICK` tindakan dan, sebagai pagar pembatas keselamatan, memutar kembali penerapan jika memicu alarm. Untuk informasi selengkapnya, lihat contoh integrasi Datadog dan New Relic berikut tentang: GitHub 
+ [Datadog](https://github.com/aws-samples/aws-appconfig-tick-extn-for-datadog)
+ [New Relic](https://github.com/aws-samples/sample-aws-appconfig-tick-extn-for-newrelic)

Untuk informasi selengkapnya tentang AWS AppConfig ekstensi, lihat topik berikut:
+ [Memperluas AWS AppConfig alur kerja menggunakan ekstensi](working-with-appconfig-extensions.md)
+ [Walkthrough: Membuat ekstensi khusus AWS AppConfig](working-with-appconfig-extensions-creating-custom.md)

**Ekstensi sampel**  
Ekstensi contoh berikut mendefinisikan satu tindakan yang memanggil titik `PRE_CREATE_HOSTED_CONFIGURATION_VERSION` tindakan. Di `Uri` bidang, tindakan menentukan Nama Sumber Daya Amazon (ARN) dari fungsi `MyS3ConfigurationBackUpExtension` Lambda yang dibuat sebelumnya dalam panduan ini. Tindakan ini juga menentukan peran asumsi AWS Identity and Access Management (IAM) ARN yang dibuat sebelumnya dalam panduan ini.

** AWS AppConfig Ekstensi sampel**

```
{
    "Name": "MySampleExtension",
    "Description": "A sample extension that backs up configurations to an S3 bucket.",
    "Actions": {
        "PRE_CREATE_HOSTED_CONFIGURATION_VERSION": [
            {
                "Name": "PreCreateHostedConfigVersionActionForS3Backup",
                "Uri": "arn:aws:lambda:aws-region:111122223333:function:MyS3ConfigurationBackUpExtension",
                "RoleArn": "arn:aws:iam::111122223333:role/ExtensionsTestRole"
            }
        ]
    },
    "Parameters" : {
        "S3_BUCKET": {
            "Required": false
        }
    }
}
```

**catatan**  
Untuk melihat sintaks permintaan dan deskripsi bidang saat membuat ekstensi, lihat [CreateExtension](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateExtension.html)topik di Referensi *AWS AppConfig API*.

**Untuk membuat ekstensi (konsol)**

1. Buka AWS Systems Manager konsol di [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. Di panel navigasi, pilih **AWS AppConfig**.

1. Pada tab **Ekstensi**, pilih **Buat ekstensi**.

1. Untuk **nama Ekstensi**, masukkan nama unik. Untuk keperluan panduan ini, masukkan. **MyS3ConfigurationBackUpExtension** Secara opsional, masukkan deskripsi.

1. Di bagian **Tindakan**, pilih **Tambahkan tindakan baru**.

1. Untuk **nama Action**, masukkan nama unik. Untuk keperluan panduan ini, masukkan. **PreCreateHostedConfigVersionActionForS3Backup** Nama ini menjelaskan titik tindakan yang digunakan oleh tindakan dan tujuan ekstensi.

1. Dalam daftar **Action point**, pilih **PRE\$1CREATE\$1HOSTED\$1CONFIGURATION\$1VERSION**.

1. Untuk **Uri**, pilih **fungsi Lambda** dan kemudian pilih fungsi dalam daftar fungsi **Lambda**. Jika Anda tidak melihat fungsi Anda, verifikasi bahwa Anda berada di tempat yang sama Wilayah AWS di mana Anda membuat fungsi.

1. Untuk **Peran IAM**, pilih peran yang Anda buat sebelumnya dalam panduan ini.

1. Di bagian **Parameter ekstensi (opsional)**, pilih **Tambahkan parameter baru**. 

1. Untuk **nama Parameter**, masukkan nama. Untuk keperluan panduan ini, masukkan. **S3\$1BUCKET**

1. Ulangi langkah 5—11 untuk membuat tindakan kedua untuk titik `PRE_START_DEPLOYMENT` tindakan.

1. Pilih **Buat ekstensi**.

# Menyesuaikan ekstensi AWS notifikasi yang ditulis
<a name="working-with-appconfig-extensions-creating-custom-notification"></a>

Anda tidak perlu membuat Lambda atau ekstensi untuk menggunakan ekstensi notifikasi yang [AWS ditulis](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-about-predefined.html). Anda cukup membuat asosiasi ekstensi dan kemudian melakukan operasi yang memanggil salah satu titik tindakan yang didukung. Secara default, ekstensi notifikasi yang AWS ditulis mendukung poin tindakan berikut: 
+ `ON_DEPLOYMENT_START`
+ `ON_DEPLOYMENT_COMPLETE`
+ `ON_DEPLOYMENT_ROLLED_BACK`

Jika Anda membuat versi khusus dari `AWS AppConfig deployment events to Amazon SNS` ekstensi dan `AWS AppConfig deployment events to Amazon SQS` ekstensi, Anda dapat menentukan titik tindakan yang ingin Anda terima notifikasi. 

**catatan**  
`AWS AppConfig deployment events to EventBridge`Ekstensi tidak mendukung titik `PRE_*` tindakan. Anda dapat membuat versi kustom jika Anda ingin menghapus beberapa titik tindakan default yang ditetapkan ke versi yang AWS ditulis.

Anda tidak perlu membuat fungsi Lambda jika Anda membuat versi kustom dari ekstensi notifikasi yang AWS ditulis. Anda hanya perlu menentukan Nama Sumber Daya Amazon (ARN) di `Uri` bidang untuk versi ekstensi baru.
+ Untuk ekstensi EventBridge notifikasi kustom, masukkan ARN dari peristiwa EventBridge default di bidang. `Uri`
+ Untuk ekstensi notifikasi Amazon SNS khusus, masukkan ARN topik Amazon SNS di bidang tersebut. `Uri`
+ Untuk ekstensi notifikasi Amazon SQS kustom, masukkan ARN antrean pesan Amazon SQS di bidang. `Uri`

# Langkah 4: Buat asosiasi ekstensi untuk AWS AppConfig ekstensi khusus
<a name="working-with-appconfig-extensions-creating-custom-association"></a>

Untuk membuat ekstensi, atau mengonfigurasi ekstensi yang AWS ditulis, Anda menentukan titik tindakan yang memanggil ekstensi saat AWS AppConfig sumber daya tertentu digunakan. Misalnya, Anda dapat memilih untuk menjalankan `AWS AppConfig deployment events to Amazon SNS` ekstensi dan menerima pemberitahuan tentang topik Amazon SNS kapan saja penerapan konfigurasi dimulai untuk aplikasi tertentu. Mendefinisikan titik tindakan mana yang memanggil ekstensi untuk AWS AppConfig sumber daya tertentu disebut asosiasi *ekstensi*. Asosiasi ekstensi adalah hubungan tertentu antara ekstensi dan AWS AppConfig sumber daya, seperti aplikasi atau profil konfigurasi.

Satu AWS AppConfig aplikasi dapat mencakup beberapa lingkungan dan profil konfigurasi. Jika Anda mengaitkan ekstensi ke aplikasi atau lingkungan, AWS AppConfig memanggil ekstensi untuk alur kerja apa pun yang terkait dengan sumber daya aplikasi atau lingkungan, jika berlaku.

Misalnya, Anda memiliki AWS AppConfig aplikasi bernama MobileApps yang menyertakan profil konfigurasi yang disebut AccessList. Dan katakanlah MobileApps aplikasi tersebut mencakup lingkungan Beta, Integrasi, dan Produksi. Anda membuat asosiasi ekstensi untuk ekstensi notifikasi Amazon SNS yang AWS ditulis dan mengaitkan ekstensi ke aplikasi. MobileApps Ekstensi notifikasi Amazon SNS dipanggil kapan saja konfigurasi diterapkan untuk aplikasi ke salah satu dari tiga lingkungan. 

Gunakan prosedur berikut untuk membuat asosiasi AWS AppConfig ekstensi dengan menggunakan AWS AppConfig konsol.

**Untuk membuat asosiasi ekstensi (konsol)**

1. Buka AWS Systems Manager konsol di [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. Di panel navigasi, pilih **AWS AppConfig**.

1. Pada tab **Ekstensi**, pilih tombol opsi untuk ekstensi dan kemudian pilih **Tambahkan ke sumber daya**. **Untuk keperluan panduan ini, pilih myS3. ConfigurationBackUpExtension**

1. Di bagian **Detail sumber daya ekstensi**, untuk **jenis sumber daya**, pilih jenis AWS AppConfig sumber daya. Bergantung pada sumber daya yang Anda pilih, AWS AppConfig meminta Anda untuk memilih sumber daya lain. **Untuk keperluan panduan ini, pilih Aplikasi.**

1. Pilih aplikasi dalam daftar.

1. **Di bagian **Parameter**, verifikasi bahwa **S3\$1BUCKET** terdaftar di bidang Kunci.** Di bidang **Nilai**, tempel ARN dari ekstensi Lambda. Sebagai contoh: `arn:aws:lambda:aws-region:111122223333:function:MyS3ConfigurationBackUpExtension`.

1. Pilih **Buat asosiasi ke sumber daya**.

Setelah Anda membuat asosiasi, Anda dapat memanggil `MyS3ConfigurationBackUpExtension` ekstensi dengan membuat profil konfigurasi baru yang menentukan `hosted` untuk itu. `SourceUri` Sebagai bagian dari alur kerja untuk membuat konfigurasi baru, AWS AppConfig temui titik `PRE_CREATE_HOSTED_CONFIGURATION_VERSION` tindakan. Menghadapi titik tindakan ini akan memanggil `MyS3ConfigurationBackUpExtension` ekstensi, yang secara otomatis mencadangkan konfigurasi yang baru dibuat ke bucket S3 yang ditentukan di `Parameter` bagian asosiasi ekstensi.