

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

# Perbarui konfigurasi komponen
<a name="update-component-configurations"></a>

Konfigurasi komponen adalah objek JSON yang menentukan parameter untuk setiap komponen. Resep setiap komponen menentukan konfigurasi default, yang Anda ubah ketika Anda men-deploy komponen ke perangkat inti.

Bila Anda membuat deployment, Anda dapat menentukan *pembaruan konfigurasi* yang akan diterapkan bagi setiap komponen. Pembaruan konfigurasi adalah operasi patch, yang berarti bahwa pembaruan mengubah konfigurasi komponen yang ada pada perangkat inti. Jika perangkat inti tidak memiliki komponen, maka pembaruan konfigurasi akan memodifikasi dan menerapkan konfigurasi default untuk deployment tersebut.

Pembaruan konfigurasi menentukan pembaruan *reset* dan pembaruan *merge*. Pembaruan reset menentukan nilai konfigurasi yang akan di-reset ke default-nya atau dihapus. Pembaruan merge menentukan nilai konfigurasi baru yang akan ditetapkan untuk komponen. Saat Anda menerapkan pembaruan konfigurasi, perangkat lunak AWS IoT Greengrass Core menjalankan pembaruan reset sebelum pembaruan gabungan.

Komponen dapat memvalidasi pembaruan konfigurasi yang Anda deploy. Komponen berlangganan untuk menerima pemberitahuan ketika deployment mengubah konfigurasi, dan dapat menolak konfigurasi yang tidak mendukung. Untuk informasi selengkapnya, lihat [Berinteraksilah dengan konfigurasi komponen](ipc-component-configuration.md).

**Topics**
+ [Pembaruan reset](#reset-configuration-update)
+ [Pembaruan merge](#merge-configuration-update)
+ [Contoh](#configuration-update-example)

## Pembaruan reset
<a name="reset-configuration-update"></a>

Pembaruan reset menentukan nilai konfigurasi yang akan di-reset ke default-nya pada perangkat inti. Jika nilai konfigurasi tidak memiliki nilai default, maka pembaruan reset akan menghapus nilai dari konfigurasi komponen. Hal ini dapat membantu Anda memperbaiki komponen yang rusak sebagai hasil dari konfigurasi yang tidak valid.

Gunakan daftar pointer JSON untuk menentukan nilai konfigurasi yang akan di-reset. Pointer JSON dimulai dengan garis miring `/`. Untuk menentukan nilai dalam konfigurasi komponen bersusun, gunakan garis miring ke depan (`/`) untuk memisahkan kunci-kunci pada setiap tingkat dalam konfigurasi. Untuk informasi selengkapnya, lihat [spesifikasi pointer JSON](https://tools.ietf.org/html/rfc6901).

**catatan**  
Anda hanya dapat mengatur ulang seluruh daftar ke nilai default. Anda tidak dapat menggunakan pembaruan reset untuk mengatur ulang elemen individual dalam daftar. 

Untuk me-reset seluruh konfigurasi komponen untuk nilai default, tentukan string kosong tunggal sebagai pembaruan reset.

```
"reset": [""]
```

## Pembaruan merge
<a name="merge-configuration-update"></a>

Pembaruan merge menentukan nilai konfigurasi yang akan dimasukkan ke konfigurasi komponen pada inti. Pembaruan gabungan adalah objek JSON yang digabungkan oleh perangkat lunak AWS IoT Greengrass Core setelah menyetel ulang nilai di jalur yang Anda tentukan dalam pembaruan reset. Bila Anda menggunakan AWS CLI or AWS SDKs, Anda harus membuat serial objek JSON ini sebagai string.

Anda dapat menggabungkan pasangan kunci-nilai yang tidak ada dalam konfigurasi default komponen. Anda juga dapat menggabungkan pasangan kunci-nilai yang memiliki jenis yang berbeda dari nilai dengan kunci yang sama. Nilai baru akan menggantikan nilai lama. Ini berarti bahwa Anda dapat mengubah struktur objek konfigurasi.

Anda dapat menggabungkan nilai-nilai null dan string, daftar, dan objek kosong.

**catatan**  
Anda tidak dapat menggunakan pembaruan merge untuk tujuan memasukkan atau menambahkan elemen ke daftar. Anda dapat mengganti seluruh daftar, atau Anda dapat menentukan objek di mana setiap elemen memiliki kunci yang unik.  
<a name="configuration-value-type-note"></a>AWS IoT Greengrass menggunakan JSON untuk nilai konfigurasi. JSON menentukan jenis nomor tetapi tidak membedakan antara bilangan bulat dan float. Akibatnya, nilai konfigurasi mungkin berubah menjadi float di AWS IoT Greengrass. Untuk memastikan bahwa komponen Anda menggunakan jenis data yang benar, kami sarankan Anda menentukan nilai konfigurasi numerik sebagai string. Kemudian, buat komponen Anda mengurainya sebagai bilangan bulat atau float. Hal ini akan memastikan bahwa nilai konfigurasi Anda memiliki jenis yang sama dalam konfigurasi dan pada perangkat inti Anda.

### Gunakan variabel resep dalam menggabungkan pembaruan
<a name="merge-configuration-update-recipe-variables"></a>

[Fitur ini tersedia untuk v2.6.0 dan yang lebih baru dari komponen inti Greengrass.](greengrass-nucleus-component.md)

Jika Anda menyetel opsi konfigurasi [interpolateComponentConfiguration](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-interpolate-component-configuration)inti Greengrass `true` ke, Anda dapat menggunakan variabel resep, selain `component_dependency_name:configuration:json_pointer` variabel resep, dalam pembaruan gabungan. Misalnya, Anda dapat menggunakan variabel `{iot:thingName}` resep dalam pembaruan gabungan untuk menyertakan nama AWS IoT benda perangkat inti dalam nilai konfigurasi komponen, seperti kebijakan otorisasi [komunikasi antarproses (IPC)](interprocess-communication.md#ipc-authorization-policies).

## Contoh
<a name="configuration-update-example"></a>

Contoh berikut menunjukkan pembaruan konfigurasi untuk komponen dasbor yang memiliki konfigurasi default berikut. Contoh komponen ini menampilkan informasi tentang peralatan industri.

```
{
  "name": null,
  "mode": "REQUEST",
  "network": {
    "useHttps": true,
    "port": {
      "http": 80,
      "https": 443
    },
  },
  "tags": []
}
```

### Resep komponen dasbor industri
<a name="w2ab1c24c25c22c16c17b7b1"></a>

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

```
{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.IndustrialDashboard",
  "ComponentVersion": "1.0.0",
  "ComponentDescription": "Displays information about industrial equipment.",
  "ComponentPublisher": "Amazon",
  "ComponentConfiguration": {
    "DefaultConfiguration": {
      "name": null,
      "mode": "REQUEST",
      "network": {
        "useHttps": true,
        "port": {
          "http": 80,
          "https": 443
        },
      },
      "tags": []
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux"
      },
      "Lifecycle": {
        "Run": "python3 -u {artifacts:path}/industrial_dashboard.py"
      }
    },
    {
      "Platform": {
        "os": "windows"
      },
      "Lifecycle": {
        "Run": "py -3 -u {artifacts:path}/industrial_dashboard.py"
      }
    }
  ]
}
```

------
#### [ YAML ]

```
---
RecipeFormatVersion: '2020-01-25'
ComponentName: com.example.IndustrialDashboard
ComponentVersion: '1.0.0'
ComponentDescription: Displays information about industrial equipment.
ComponentPublisher: Amazon
ComponentConfiguration:
  DefaultConfiguration:
    name: null
    mode: REQUEST
    network:
      useHttps: true
      port:
        http: 80
        https: 443
    tags: []
Manifests:
  - Platform:
      os: linux
    Lifecycle:
      Run: |
        python3 -u {artifacts:path}/industrial_dashboard.py
  - Platform:
      os: windows
    Lifecycle:
      Run: |
        py -3 -u {artifacts:path}/industrial_dashboard.py
```

------

**Example Contoh 1: Gabungkan pembaruan**  
Anda membuat penerapan yang menerapkan pemutakhiran konfigurasi berikut, yang menentukan pembaruan gabungan tetapi bukan pembaruan reset. Pembaruan konfigurasi ini memberi tahu komponen untuk menampilkan dasbor pada port HTTP 8080 dengan data dari dua boiler.    
**Konfigurasi untuk digabungkan**  

```
{
  "name": "Factory 2A",
  "network": {
    "useHttps": false,
    "port": {
      "http": 8080
    }
  },
  "tags": [
    "/boiler/1/temperature",
    "/boiler/1/pressure",
    "/boiler/2/temperature",
    "/boiler/2/pressure"
  ]
}
```
Perintah berikut membuat penyebaran ke perangkat inti.  

```
aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment.json
```
`dashboard-deployment.json`File tersebut berisi dokumen JSON berikut.  

```
{
  "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
  "deploymentName": "Deployment for MyGreengrassCore",
  "components": {
    "com.example.IndustrialDashboard": {
      "componentVersion": "1.0.0",
      "configurationUpdate": {
        "merge": "{\"name\":\"Factory 2A\",\"network\":{\"useHttps\":false,\"port\":{\"http\":8080}},\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
      }
    }
  }
}
```
Perintah [Greengrass CLI](greengrass-cli-component.md) berikut membuat penerapan lokal pada perangkat inti.  

```
sudo greengrass-cli deployment create \
  --recipeDir recipes \
  --artifactDir artifacts \
  --merge "com.example.IndustrialDashboard=1.0.0" \
  --update-config dashboard-configuration.json
```
`dashboard-configuration.json`File tersebut berisi dokumen JSON berikut.  

```
{
  "com.example.IndustrialDashboard": {
    "MERGE": {
      "name": "Factory 2A",
      "network": {
        "useHttps": false,
        "port": {
          "http": 8080
        }
      },
      "tags": [
        "/boiler/1/temperature",
        "/boiler/1/pressure",
        "/boiler/2/temperature",
        "/boiler/2/pressure"
      ]
    }
  }
}
```
Setelah pembaruan ini, komponen dasbor akan memiliki konfigurasi berikut.  

```
{
  "name": "Factory 2A",
  "mode": "REQUEST",
  "network": {
    "useHttps": false,
    "port": {
      "http": 8080,
      "https": 443
    }
  },
  "tags": [
    "/boiler/1/temperature",
    "/boiler/1/pressure",
    "/boiler/2/temperature",
    "/boiler/2/pressure"
  ]
}
```

**Example Contoh 2: Setel ulang dan gabungkan pembaruan**  
Kemudian, Anda membuat penerapan yang menerapkan pemutakhiran konfigurasi berikut, yang menentukan pembaruan reset dan pembaruan gabungan. Pembaruan ini menentukan untuk menampilkan dasbor pada port HTTPS default dengan data dari boiler yang berbeda. Pembaruan ini mengubah konfigurasi yang dihasilkan dari pembaruan konfigurasi pada contoh sebelumnya.    
**Setel ulang jalur**  

```
[
  "/network/useHttps",
  "/tags"
]
```  
**Konfigurasi untuk digabungkan**  

```
{
  "tags": [
    "/boiler/3/temperature",
    "/boiler/3/pressure",
    "/boiler/4/temperature",
    "/boiler/4/pressure"
  ]
}
```
Perintah berikut membuat penyebaran ke perangkat inti.  

```
aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment2.json
```
`dashboard-deployment2.json`File tersebut berisi dokumen JSON berikut.  

```
{
  "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
  "deploymentName": "Deployment for MyGreengrassCore",
  "components": {
    "com.example.IndustrialDashboard": {
      "componentVersion": "1.0.0",
      "configurationUpdate": {
        "reset": [
          "/network/useHttps",
          "/tags"
        ],
        "merge": "{\"tags\":[\"/boiler/3/temperature\",\"/boiler/3/pressure\",\"/boiler/4/temperature\",\"/boiler/4/pressure\"]}"
      }
    }
  }
}
```
Perintah [Greengrass CLI](greengrass-cli-component.md) berikut membuat penerapan lokal pada perangkat inti.  

```
sudo greengrass-cli deployment create \
  --recipeDir recipes \
  --artifactDir artifacts \
  --merge "com.example.IndustrialDashboard=1.0.0" \
  --update-config dashboard-configuration2.json
```
`dashboard-configuration2.json`File tersebut berisi dokumen JSON berikut.  

```
{
  "com.example.IndustrialDashboard": {
    "RESET": [
      "/network/useHttps",
      "/tags"
    ],
    "MERGE": {
      "tags": [
        "/boiler/3/temperature",
        "/boiler/3/pressure",
        "/boiler/4/temperature",
        "/boiler/4/pressure"
      ]
    }
  }
}
```
Setelah pembaruan ini, komponen dasbor akan memiliki konfigurasi berikut.  

```
{
  "name": "Factory 2A",
  "mode": "REQUEST",
  "network": {
    "useHttps": true,
    "port": {
      "http": 8080,
      "https": 443
    }
  },
  "tags": [
    "/boiler/3/temperature",
    "/boiler/3/pressure",
    "/boiler/4/temperature",
    "/boiler/4/pressure",
  ]
}
```