

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

# Templat penyediaan
<a name="provision-template"></a>

Template penyediaan adalah dokumen JSON yang menggunakan parameter untuk menjelaskan sumber daya yang harus digunakan perangkat Anda untuk berinteraksi. AWS IoT Template penyediaan berisi dua bagian: `Parameters` dan. `Resources` Ada dua jenis template penyediaan di. AWS IoT Satu digunakan untuk just-in-time penyediaan (JITP) dan registrasi massal, dan yang kedua digunakan untuk penyediaan armada.

**Topics**
+ [Bagian parameter](#parameters-section)
+ [Bagian sumber daya](#resources-section)
+ [Contoh template untuk pendaftaran massal](#bulk-template-example)
+ [Contoh template untuk just-in-time penyediaan (JITP)](#JITP-template-example)
+ [Penyediaan armada](#fleet-provision-template)

## Bagian parameter
<a name="parameters-section"></a>

`Parameters`Bagian ini menyatakan parameter yang digunakan di `Resources` bagian. Setiap parameter mendeklarasikan nama, tipe, dan nilai default opsional. Nilai default digunakan ketika kamus diteruskan dengan template tidak berisi nilai untuk parameter. `Parameters`Bagian dari dokumen template terlihat seperti berikut:

```
{
    "Parameters" : {
        "ThingName" : {
            "Type" : "String"
        },
        "SerialNumber" : {
            "Type" : "String"
        },
        "Location" : {
            "Type" : "String",
            "Default" : "WA"
        },
        "CSR" : {
            "Type" : "String"    
        }
    }
}
```

Cuplikan isi template ini mendeklarasikan empat parameter:`ThingName`,,`SerialNumber`, `Location` dan. `CSR` Semua parameter ini bertipe`String`. `Location`Parameter mendeklarasikan nilai default dari. `"WA"`

## Bagian sumber daya
<a name="resources-section"></a>

`Resources`Bagian badan templat menyatakan sumber daya yang diperlukan untuk berkomunikasi dengan perangkat Anda AWS IoT: sesuatu, sertifikat, dan satu atau beberapa kebijakan IoT. Setiap sumber daya menentukan nama logis, tipe, dan satu set properti.

Nama logis memungkinkan Anda untuk merujuk ke sumber daya di tempat lain dalam template.

Jenis menentukan jenis sumber daya yang Anda deklarasikan. Jenis yang valid adalah:
+ `AWS::IoT::Thing`
+ `AWS::IoT::Certificate`
+ `AWS::IoT::Policy`

Properti yang Anda tentukan bergantung pada jenis sumber daya yang Anda deklarasikan.

### Sumber daya benda
<a name="thing-resources"></a>

Sumber daya benda dideklarasikan menggunakan properti berikut:
+ `ThingName`: Tali.
+ `AttributePayload`: Opsional. Daftar pasangan nama-nilai.
+ `ThingTypeName`: Opsional. String untuk jenis hal terkait untuk benda tersebut.
+ `ThingGroups`: Opsional. Daftar kelompok tempat benda itu berada.
+ `BillingGroup`: Opsional. String untuk nama grup penagihan terkait.
+ `PackageVersions`: Opsional. String untuk paket terkait dan nama versi.

### Sumber daya sertifikat
<a name="certificate-resources"></a>

Anda dapat menentukan sertifikat dengan salah satu cara berikut:
+ Permintaan penandatanganan sertifikat (CSR).
+ ID sertifikat sertifikat perangkat yang ada. (Hanya sertifikat yang IDs dapat digunakan dengan templat penyediaan armada.)
+ Sertifikat perangkat yang dibuat dengan sertifikat CA terdaftar AWS IoT. Jika Anda memiliki lebih dari satu sertifikat CA yang terdaftar dengan bidang subjek yang sama, Anda juga harus lulus dalam sertifikat CA yang digunakan untuk menandatangani sertifikat perangkat.

**catatan**  
Saat Anda mendeklarasikan sertifikat dalam templat, gunakan hanya salah satu metode ini. Misalnya, jika Anda menggunakan CSR, Anda juga tidak dapat menentukan ID sertifikat atau sertifikat perangkat. Untuk informasi selengkapnya, lihat [Sertifikat klien X.509](x509-client-certs.md). 

Untuk informasi selengkapnya, lihat [Ikhtisar Sertifikat X.509](authentication.md#x509-certificate-overview). 

Sumber daya sertifikat dideklarasikan menggunakan properti berikut:
+ `CertificateSigningRequest`: Tali.
+ `CertificateId`: Tali.
+ `CertificatePem`: Tali.
+ `CACertificatePem`: Tali.
+ `Status`: Opsional. String yang bisa `ACTIVE` atau`INACTIVE`. Default ke ACTIVE.
+ `ThingPrincipalType`: Opsional. String yang menentukan jenis hubungan antara hal dan prinsipal (sertifikat).
  + `EXCLUSIVE_THING`: Membangun hubungan eksklusif. Kepala sekolah hanya dapat dilampirkan pada Hal khusus ini dan tidak ada yang lain.
  + `NON_EXCLUSIVE_THING`: Melampirkan prinsip yang ditentukan untuk hal-hal. Anda dapat melampirkan beberapa Hal ke kepala sekolah. Ini adalah nilai default jika tidak ditentukan.
**catatan**  
Anda juga dapat menyediakan perangkat tanpa sertifikat perangkat. Untuk informasi selengkapnya, lihat [Penyediaan perangkat yang tidak memiliki sertifikat perangkat menggunakan penyediaan armada](provision-wo-cert.md).

Contoh:
+ Sertifikat yang ditentukan dengan CSR:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "CertificateSigningRequest": {"Ref" : "CSR"},
              "Status" : "ACTIVE"      
          }
      }
  }
  ```
+ Sertifikat yang ditentukan dengan ID sertifikat yang ada:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "CertificateId": {"Ref" : "CertificateId"}
          }
      }
  }
  ```
+ Sertifikat yang ditentukan dengan sertifikat yang ada .pem dan sertifikat CA.pem:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "CACertificatePem": {"Ref" : "CACertificatePem"},
              "CertificatePem": {"Ref" : "CertificatePem"}
          }
      }
  }
  ```
+ Secara eksklusif melampirkan satu hal ke kepala sekolah:

  ```
  {
      "certificate" : {
          "Type" : "AWS::IoT::Certificate",
          "Properties" : {
              "ThingPrincipalType" : "EXCLUSIVE_THING"
          }
      }
  }
  ```

### Sumber daya kebijakan
<a name="policy-resources"></a>

Sumber daya kebijakan dideklarasikan menggunakan salah satu properti berikut:
+ `PolicyName`: Opsional. String. Default ke hash dokumen kebijakan. Hanya `PolicyName` dapat merujuk AWS IoT kebijakan tetapi tidak kebijakan IAM. Jika Anda menggunakan AWS IoT kebijakan yang ada, untuk `PolicyName` properti, masukkan nama kebijakan. Jangan sertakan `PolicyDocument` properti.
+ `PolicyDocument`: Opsional. Sebuah objek JSON ditentukan sebagai string lolos. Jika tidak `PolicyDocument` disediakan, kebijakan harus sudah dibuat.

**catatan**  
Jika ada `Policy` bagian, `PolicyName` atau`PolicyDocument`, tetapi tidak keduanya, harus ditentukan.

### Ganti pengaturan
<a name="override-settings"></a>

Jika template menentukan sumber daya yang sudah ada, `OverrideSettings` bagian ini memungkinkan Anda menentukan tindakan yang akan diambil:

`DO_NOTHING`  
Tinggalkan sumber daya apa adanya.

`REPLACE`  
Ganti sumber daya dengan sumber daya yang ditentukan dalam template.

`FAIL`  
Menyebabkan permintaan gagal dengan a`ResourceConflictsException`.

`MERGE`  
Hanya berlaku untuk `ThingGroups` dan `AttributePayload` properti a`thing`. Gabungkan atribut yang ada atau keanggotaan grup dari benda tersebut dengan yang ditentukan dalam template.

Ketika Anda mendeklarasikan sumber daya sesuatu, Anda dapat menentukan `OverrideSettings` untuk properti berikut:
+ `ATTRIBUTE_PAYLOAD`
+ `THING_TYPE_NAME`
+ `THING_GROUPS`

Ketika Anda mendeklarasikan sumber daya sertifikat, Anda dapat menentukan `OverrideSettings` untuk properti. `Status`

`OverrideSettings`tidak tersedia untuk sumber daya kebijakan.

### Contoh sumber daya
<a name="resource-example"></a>

Cuplikan template berikut mendeklarasikan sesuatu, sertifikat, dan kebijakan:

```
{ 
    "Resources" : {
        "thing" : {
            "Type" : "AWS::IoT::Thing",
            "Properties" : {
                "ThingName" : {"Ref" : "ThingName"},
                "AttributePayload" : { "version" : "v1", "serialNumber" :  {"Ref" : "SerialNumber"}}, 
                "ThingTypeName" :  "lightBulb-versionA",
                "ThingGroups" : ["v1-lightbulbs", {"Ref" : "Location"}]
            },
            "OverrideSettings" : {
                "AttributePayload" : "MERGE",
                "ThingTypeName" : "REPLACE",
                "ThingGroups" : "DO_NOTHING"
            }
        },  
        "certificate" : {
            "Type" : "AWS::IoT::Certificate",
            "Properties" : {
                "CertificateSigningRequest": {"Ref" : "CSR"},
                "Status" : "ACTIVE"      
            }
        },
        "policy" : {
            "Type" : "AWS::IoT::Policy",
            "Properties" : {
                "PolicyDocument" : "{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
            }
        }
    }
}
```

Hal itu dinyatakan dengan:
+ Nama logisnya`"thing"`.
+ Tipe`AWS::IoT::Thing`.
+  Satu set properti benda.

  Properti benda termasuk nama benda, satu set atribut, nama tipe benda opsional, dan daftar opsional grup benda yang menjadi milik benda itu.

Parameter direferensikan oleh`{"Ref":"parameter-name"}`. Ketika template dievaluasi, parameter diganti dengan nilai parameter dari kamus yang diteruskan dengan template.

Sertifikat dinyatakan dengan:
+ Nama logisnya`"certificate"`.
+ Tipe`AWS::IoT::Certificate`.
+ Satu set properti.

  Properti termasuk CSR untuk sertifikat, dan pengaturan status ke`ACTIVE`. Teks CSR diteruskan sebagai parameter dalam kamus yang diteruskan dengan template.

Kebijakan ini dinyatakan dengan:
+ Nama logisnya`"policy"`.
+ Tipe`AWS::IoT::Policy`.
+ Baik nama kebijakan yang ada atau dokumen kebijakan.

## Contoh template untuk pendaftaran massal
<a name="bulk-template-example"></a>

File JSON berikut adalah contoh template penyediaan lengkap yang menentukan sertifikat dengan CSR:

(Nilai `PolicyDocument` bidang harus berupa objek JSON yang ditentukan sebagai string yang lolos.)

```
{
    "Parameters" : {
        "ThingName" : {
            "Type" : "String"
        },
        "SerialNumber" : {
            "Type" : "String"
        },
        "Location" : {
            "Type" : "String",
            "Default" : "WA"
        },
        "CSR" : {
            "Type" : "String"    
        }
    },
    "Resources" : {
        "thing" : {
            "Type" : "AWS::IoT::Thing",
            "Properties" : {
                "ThingName" : {"Ref" : "ThingName"},
                "AttributePayload" : { "version" : "v1", "serialNumber" :  {"Ref" : "SerialNumber"}}, 
                "ThingTypeName" :  "lightBulb-versionA",
                "ThingGroups" : ["v1-lightbulbs", {"Ref" : "Location"}]
            }
        },
        "certificate" : {
            "Type" : "AWS::IoT::Certificate",
            "Properties" : {
                "CertificateSigningRequest": {"Ref" : "CSR"},
                "Status" : "ACTIVE",
                "ThingPrincipalType" : "EXCLUSIVE_THING"
            }
        },
        "policy" : {
            "Type" : "AWS::IoT::Policy",
            "Properties" : {
                "PolicyDocument" : "{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
            }
        }
    }
}
```

## Contoh template untuk just-in-time penyediaan (JITP)
<a name="JITP-template-example"></a>

File JSON berikut adalah contoh template penyediaan lengkap yang menentukan sertifikat yang ada dengan ID sertifikat:

```
{
   "Parameters":{
      "AWS::IoT::Certificate::CommonName":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::SerialNumber":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Country":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Id":{
         "Type":"String"
      }
   },
   "Resources":{
      "thing":{
         "Type":"AWS::IoT::Thing",
         "Properties":{
            "ThingName":{
               "Ref":"AWS::IoT::Certificate::CommonName"
            },
            "AttributePayload":{
               "version":"v1",
               "serialNumber":{
                  "Ref":"AWS::IoT::Certificate::SerialNumber"
               }
            },
            "ThingTypeName":"lightBulb-versionA",
            "ThingGroups":[
               "v1-lightbulbs",
               {
                  "Ref":"AWS::IoT::Certificate::Country"
               }
            ]
         },
         "OverrideSettings":{
            "AttributePayload":"MERGE",
            "ThingTypeName":"REPLACE",
            "ThingGroups":"DO_NOTHING"
         }
      },
      "certificate":{
         "Type":"AWS::IoT::Certificate",
         "Properties":{
            "CertificateId":{
               "Ref":"AWS::IoT::Certificate::Id"
            },
            "Status":"ACTIVE",
            "ThingPrincipalType" : "EXCLUSIVE_THING"
         }
      },
      "policy":{
         "Type":"AWS::IoT::Policy",
         "Properties":{
            "PolicyDocument":"{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
         }
      }
   }
}
```

**penting**  
Anda harus menggunakan `CertificateId` dalam template yang digunakan untuk penyediaan JIT.

Untuk informasi selengkapnya tentang jenis templat penyediaan, lihat [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html#iot-CreateProvisioningTemplate-request-type](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html#iot-CreateProvisioningTemplate-request-type)di referensi AWS API.

Untuk informasi selengkapnya tentang cara menggunakan templat ini untuk just-in-time penyediaan, lihat: Penyediaan [J ust-in-time](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html).

## Penyediaan armada
<a name="fleet-provision-template"></a>

Templat penyediaan armada digunakan oleh AWS IoT untuk mengatur konfigurasi cloud dan perangkat. Template ini menggunakan parameter dan sumber daya yang sama dengan JITP dan templat pendaftaran massal. Untuk informasi selengkapnya, lihat [Templat penyediaan](#provision-template). Templat penyediaan armada dapat berisi `Mapping` bagian dan bagian. `DeviceConfiguration` Anda dapat menggunakan fungsi intrinsik di dalam templat penyediaan armada untuk menghasilkan konfigurasi khusus perangkat. Templat penyediaan armada diberi nama sumber daya dan diidentifikasi oleh ARNs (misalnya,`arn:aws:iot:us-west-2:1234568788:provisioningtemplate/templateName`).

### Pemetaan
<a name="mappings"></a>

Bagian `Mappings` opsional cocok dengan kunci untuk satu set nilai yang sesuai. Misalnya, jika Anda ingin menetapkan nilai berdasarkan AWS Wilayah, Anda dapat membuat pemetaan yang menggunakan Wilayah AWS nama sebagai kunci dan berisi nilai yang ingin Anda tentukan untuk setiap Wilayah tertentu. Anda menggunakan fungsi intrinsik `Fn::FindInMap` untuk mengambil nilai-nilai dalam peta.

Anda tidak dapat menyertakan parameter, parameter semu, atau memanggil fungsi intrinsik di bagian tersebut. `Mappings`

### Konfigurasi perangkat
<a name="device-config"></a>

Bagian konfigurasi perangkat berisi data arbitrer yang ingin Anda kirim ke perangkat saat penyediaan. Contoh: 

```
{
    "DeviceConfiguration": {
        "Foo":"Bar"
    }
}
```

Jika Anda mengirim pesan ke perangkat menggunakan format payload JavaScript Object Notation (JSON), AWS IoT Core format data ini sebagai JSON. Jika Anda menggunakan format payload Concise Binary Object Representation (CBOR), AWS IoT Core format data ini sebagai CBOR. `DeviceConfiguration`Bagian ini tidak mendukung objek JSON bersarang.

### Fungsi intrinsik
<a name="intrinsic-functions"></a>

Fungsi intrinsik digunakan di bagian mana pun dari template penyediaan kecuali bagian. `Mappings`

`Fn::Join`  
Menambahkan satu set nilai ke dalam nilai tunggal, dipisahkan oleh pembatas yang ditentukan. Jika pembatas adalah string kosong, nilainya digabungkan tanpa pembatas.  
`Fn::Join`tidak didukung untuk[Sumber daya kebijakan](#policy-resources).

`Fn::Select`  
Mengembalikan objek tunggal dari daftar objek dengan indeks.  
`Fn::Select`tidak memeriksa `null` nilai atau jika indeks berada di luar batas array. Kedua kondisi menghasilkan kesalahan penyediaan, jadi pastikan Anda memilih nilai indeks yang valid dan daftar berisi nilai non-null.

`Fn::FindInMap`  
Mengembalikan nilai yang sesuai dengan kunci dalam peta dua tingkat yang dinyatakan di `Mappings` bagian.

`Fn::Split`  
Membagi string ke dalam daftar nilai string sehingga Anda dapat memilih elemen dari daftar string. Anda menentukan pembatas yang menentukan di mana string dibagi (misalnya, koma). Setelah Anda membagi string, gunakan `Fn::Select` untuk memilih elemen.  
Misalnya, jika string subnet yang dibatasi koma IDs diimpor ke template tumpukan Anda, Anda dapat membagi string pada setiap koma. Dari daftar subnet IDs, gunakan `Fn::Select` untuk menentukan ID subnet untuk sumber daya.

`Fn::Sub`  
Mengganti variabel dalam string input dengan nilai yang Anda tentukan. Anda dapat menggunakan fungsi ini untuk membuat perintah atau output yang menyertakan nilai yang tidak tersedia sampai Anda membuat atau memperbarui tumpukan.

### Contoh template untuk penyediaan armada
<a name="fleet-provisioning-example"></a>

```
{
    "Parameters" : {
        "ThingName" : {
            "Type" : "String"
        },
        "SerialNumber": {
            "Type": "String"
        },
        "DeviceLocation": {
            "Type": "String"
        }
    },
    "Mappings": {
        "LocationTable": {
            "Seattle": {
                "LocationUrl": "https://example.aws"
            }
        }
    },
    "Resources" : {
        "thing" : {
            "Type" : "AWS::IoT::Thing",
            "Properties" : {
                "AttributePayload" : { 
                    "version" : "v1",
                    "serialNumber" : "serialNumber"
                },
                "ThingName" : {"Ref" : "ThingName"},
                "ThingTypeName" : {"Fn::Join":["",["ThingPrefix_",{"Ref":"SerialNumber"}]]},
                "ThingGroups" : ["v1-lightbulbs", "WA"],
                "BillingGroup": "LightBulbBillingGroup"
            },
            "OverrideSettings" : {
                "AttributePayload" : "MERGE",
                "ThingTypeName" : "REPLACE",
                "ThingGroups" : "DO_NOTHING"
            }
        },
        "certificate" : {
            "Type" : "AWS::IoT::Certificate",
            "Properties" : {
                "CertificateId": {"Ref": "AWS::IoT::Certificate::Id"},
                "Status" : "Active",
                "ThingPrincipalType" : "EXCLUSIVE_THING"
            }
        },
        "policy" : {
            "Type" : "AWS::IoT::Policy",
            "Properties" : {
                "PolicyDocument" : {
                    "Version": "2012-10-17",		 	 	 
                    "Statement": [{
                        "Effect": "Allow",
                        "Action":["iot:Publish"],
                        "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/foo/bar"]
                    }]
                }
            }
        }
    },
    "DeviceConfiguration": {
        "FallbackUrl": "https://www.example.com/test-site",
        "LocationUrl": {
            "Fn::FindInMap": ["LocationTable",{"Ref": "DeviceLocation"}, "LocationUrl"]}
        }
}
```

**catatan**  
Template penyediaan yang ada dapat diperbarui untuk menambahkan kait [pra-penyediaan](pre-provisioning-hook.md).