

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

# Penyediaan perangkat yang tidak memiliki sertifikat perangkat menggunakan penyediaan armada
<a name="provision-wo-cert"></a>

Dengan menggunakan penyediaan AWS IoT armada, AWS IoT dapat menghasilkan dan mengirimkan sertifikat perangkat dan kunci pribadi dengan aman ke perangkat Anda saat mereka terhubung AWS IoT untuk pertama kalinya. AWS IoT menyediakan sertifikat klien yang ditandatangani oleh otoritas sertifikat Amazon Root (CA).

Ada dua cara untuk menggunakan penyediaan armada:
+ [Penyediaan dengan klaim](#claim-based)
+ [Penyediaan oleh pengguna tepercaya](#trusted-user)

## Penyediaan dengan klaim
<a name="claim-based"></a>

Perangkat dapat diproduksi dengan sertifikat klaim penyediaan dan kunci pribadi (yang merupakan kredenal tujuan khusus) yang tertanam di dalamnya. Jika sertifikat ini terdaftar AWS IoT, layanan dapat menukarnya dengan sertifikat perangkat unik yang dapat digunakan perangkat untuk operasi reguler. Proses ini mencakup langkah-langkah berikut:

**Sebelum Anda mengirimkan perangkat**

1. Panggilan [https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html)untuk membuat template penyediaan. API ini mengembalikan template ARN. Untuk informasi selengkapnya, lihat [Penyediaan perangkat MQTT API](fleet-provision-api.md).

   Anda juga dapat membuat template penyediaan armada di konsol. AWS IoT 

   1. Dari panel navigasi, pilih menu tarik-turun **Connect many devices**. Kemudian, pilih **Connect Many Devices**.

   1. Pilih **Buat templat penyediaan.**

   1. Pilih **skenario Provisioning** yang paling sesuai dengan proses instalasi Anda. Lalu, pilih **Selanjutnya**.

   1. Lengkapi alur kerja template.

1. Buat sertifikat dan kunci pribadi terkait untuk digunakan sebagai penyediaan sertifikat klaim.

1. Daftarkan sertifikat ini AWS IoT dan kaitkan kebijakan IoT yang membatasi penggunaan sertifikat. Contoh kebijakan IoT berikut membatasi penggunaan sertifikat yang terkait dengan kebijakan ini untuk menyediakan perangkat.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Connect"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Publish",
                   "iot:Receive"
               ],
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:topic/$aws/certificates/create/*",
       "arn:aws:iot:us-east-1:123456789012:topic/$aws/provisioning-templates/templateName/provision/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iot:Subscribe",
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/certificates/create/*",
       "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/provisioning-templates/templateName/provision/*"
               ]
           }
       ]
   }
   ```

1. Berikan izin AWS IoT layanan untuk membuat atau memperbarui sumber daya IoT seperti hal-hal dan sertifikat di akun Anda saat menyediakan perangkat. Lakukan ini dengan melampirkan kebijakan `AWSIoTThingsRegistration` terkelola ke peran IAM (disebut peran penyediaan) yang mempercayai kepala layanan. AWS IoT 

1. Memproduksi perangkat dengan sertifikat klaim penyediaan yang tertanam dengan aman di dalamnya.

Perangkat sekarang siap dikirim ke tempat ia akan diinstal untuk digunakan.

**penting**  
Kunci pribadi klaim penyediaan harus diamankan setiap saat, termasuk di perangkat. Kami menyarankan Anda menggunakan AWS IoT CloudWatch metrik dan log untuk memantau indikasi penyalahgunaan. Jika Anda mendeteksi penyalahgunaan, matikan sertifikat klaim penyediaan sehingga tidak dapat digunakan untuk penyediaan perangkat.

**Untuk menginisialisasi perangkat untuk digunakan**

1. Perangkat menggunakan [AWS IoT Klien Perangkat SDKs SDKs, Seluler, dan AWS IoT Perangkat](iot-sdks.md) untuk menyambung dan mengautentikasi dengan AWS IoT menggunakan sertifikat klaim penyediaan yang diinstal pada perangkat.
**catatan**  
Untuk keamanan, yang `certificateOwnershipToken` dikembalikan `CreateCertificateFromCsr` dan `CreateKeysAndCertificate` kedaluwarsa setelah satu jam. `RegisterThing`harus dipanggil sebelum `certificateOwnershipToken` kedaluwarsa. Jika sertifikat yang dibuat oleh `CreateCertificateFromCsr` atau `CreateKeysAndCertificate` belum diaktifkan dan belum dilampirkan pada kebijakan atau sesuatu pada saat token kedaluwarsa, sertifikat akan dihapus. Jika token kedaluwarsa, perangkat dapat menelepon `CreateCertificateFromCsr` atau `CreateKeysAndCertificate` lagi untuk menghasilkan sertifikat baru.

1. Perangkat memperoleh sertifikat permanen dan kunci pribadi dengan menggunakan salah satu opsi ini. Perangkat akan menggunakan sertifikat dan kunci untuk semua otentikasi future dengan AWS IoT.

   1. Panggilan [`CreateKeysAndCertificate`](fleet-provision-api.md#create-keys-cert)untuk membuat sertifikat baru dan kunci pribadi menggunakan otoritas AWS sertifikat.

      Atau

   1. Panggilan [`CreateCertificateFromCsr`](fleet-provision-api.md#create-cert-csr)untuk menghasilkan sertifikat dari permintaan penandatanganan sertifikat yang menjaga kunci pribadinya tetap aman.

1. Dari perangkat, panggil [`RegisterThing`](fleet-provision-api.md#register-thing)untuk mendaftarkan perangkat dengan AWS IoT dan membuat sumber daya cloud.

   Layanan Fleet Provisioning menggunakan template penyediaan untuk menentukan dan membuat sumber daya cloud seperti IoT. Template dapat menentukan atribut dan grup yang menjadi milik benda itu. Kelompok benda harus ada sebelum hal baru dapat ditambahkan ke mereka.

1. Setelah menyimpan sertifikat permanen pada perangkat, perangkat harus memutuskan sambungan dari sesi yang dimulai dengan sertifikat klaim penyediaan dan menyambung kembali menggunakan sertifikat permanen. 

Perangkat sekarang siap untuk berkomunikasi secara normal AWS IoT.

## Penyediaan oleh pengguna tepercaya
<a name="trusted-user"></a>

Dalam banyak kasus, perangkat terhubung AWS IoT untuk pertama kalinya ketika pengguna tepercaya, seperti pengguna akhir atau teknisi instalasi, menggunakan aplikasi seluler untuk mengonfigurasi perangkat di lokasi yang digunakan.

**penting**  
Anda harus mengelola akses dan izin pengguna tepercaya untuk melakukan prosedur ini. Salah satu cara untuk melakukannya adalah dengan menyediakan dan memelihara akun untuk pengguna tepercaya yang mengautentikasi mereka dan memberi mereka akses ke AWS IoT fitur dan operasi API yang diperlukan untuk melakukan prosedur ini. 

**Sebelum Anda mengirimkan perangkat**

1. Panggilan [https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningTemplate.html)untuk membuat template penyediaan dan mengembalikan dan. *templateArn* *templateName*

1. Buat peran IAM yang digunakan oleh pengguna tepercaya untuk memulai proses penyediaan. Template penyediaan hanya memungkinkan pengguna tersebut untuk menyediakan perangkat. Contoh:

   ```
   {
       "Effect": "Allow",
       "Action": [
           "iot:CreateProvisioningClaim"
       ],
       "Resource": [
           "arn:aws:iot:aws-region:aws-account-id:provisioningtemplate/templateName"
       ]
   }
   ```

1. Berikan izin AWS IoT layanan untuk membuat atau memperbarui sumber daya IoT, seperti hal-hal dan sertifikat di akun Anda saat menyediakan perangkat. Anda melakukan ini dengan melampirkan kebijakan `AWSIoTThingsRegistration` terkelola ke peran IAM (disebut *peran penyediaan*) yang mempercayai prinsip layanan. AWS IoT 

1. Sediakan sarana untuk mengidentifikasi pengguna tepercaya Anda, seperti dengan memberi mereka akun yang dapat mengautentikasi mereka dan mengotorisasi interaksi mereka dengan operasi AWS API yang diperlukan untuk mendaftarkan perangkat mereka.

**Untuk menginisialisasi perangkat untuk digunakan**

1. Pengguna tepercaya masuk ke aplikasi seluler atau layanan web penyediaan Anda.

1. Aplikasi seluler atau aplikasi web menggunakan peran IAM dan panggilan [https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningClaim.html](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateProvisioningClaim.html)untuk mendapatkan sertifikat klaim penyediaan sementara dari. AWS IoT
**catatan**  
Untuk keamanan, sertifikat klaim penyediaan sementara yang `CreateProvisioningClaim` dikembalikan kedaluwarsa setelah lima menit. Langkah-langkah berikut harus berhasil mengembalikan sertifikat yang valid sebelum sertifikat klaim penyediaan sementara berakhir. Sertifikat klaim penyediaan sementara tidak muncul dalam daftar sertifikat akun Anda.

1. Aplikasi seluler atau aplikasi web memasok sertifikat klaim penyediaan sementara ke perangkat bersama dengan informasi konfigurasi yang diperlukan, seperti kredensi Wi-Fi.

1. Perangkat menggunakan sertifikat klaim penyediaan sementara untuk terhubung AWS IoT menggunakan. [AWS IoT Klien Perangkat SDKs SDKs, Seluler, dan AWS IoT Perangkat](iot-sdks.md)

1. Perangkat memperoleh sertifikat permanen dan kunci pribadi dengan menggunakan salah satu opsi ini dalam waktu lima menit setelah terhubung AWS IoT dengan sertifikat klaim penyediaan sementara. Perangkat akan menggunakan sertifikat dan memasukkan opsi ini kembali untuk semua otentikasi future. AWS IoT

   1. Panggilan [`CreateKeysAndCertificate`](fleet-provision-api.md#create-keys-cert)untuk membuat sertifikat baru dan kunci pribadi menggunakan otoritas AWS sertifikat.

      Atau

   1. Panggilan [`CreateCertificateFromCsr`](fleet-provision-api.md#create-cert-csr)untuk menghasilkan sertifikat dari permintaan penandatanganan sertifikat yang menjaga kunci pribadinya tetap aman.
**catatan**  
Ingat [`CreateKeysAndCertificate`](fleet-provision-api.md#create-keys-cert)atau [`CreateCertificateFromCsr`](fleet-provision-api.md#create-cert-csr)harus mengembalikan sertifikat yang valid dalam waktu lima menit setelah terhubung AWS IoT dengan sertifikat klaim penyediaan sementara.

1. Perangkat memanggil [`RegisterThing`](fleet-provision-api.md#register-thing)untuk mendaftarkan perangkat dengan AWS IoT dan membuat sumber daya cloud. 

   Layanan Fleet Provisioning menggunakan template penyediaan untuk menentukan dan membuat sumber daya cloud seperti IoT. Template dapat menentukan atribut dan grup yang menjadi milik benda itu. Kelompok benda harus ada sebelum hal baru dapat ditambahkan ke mereka.

1. Setelah menyimpan sertifikat permanen pada perangkat, perangkat harus memutuskan sambungan dari sesi yang dimulai dengan sertifikat klaim penyediaan sementara dan menyambung kembali menggunakan sertifikat permanen. 

Perangkat sekarang siap untuk berkomunikasi secara normal AWS IoT.

## Menggunakan kait pra-penyediaan dengan CLI AWS
<a name="hooks-cli-instruc"></a>

Prosedur berikut membuat template penyediaan dengan kait pra-penyediaan. Fungsi Lambda yang digunakan di sini adalah contoh yang dapat dimodifikasi. 

**Untuk membuat dan menerapkan hook pra-penyediaan ke template penyediaan**

1. Buat fungsi Lambda yang memiliki input dan output yang ditentukan. Fungsi Lambda sangat dapat disesuaikan. `allowProvisioning`dan `parameterOverrides` diperlukan untuk membuat kait pra-penyediaan. Untuk informasi selengkapnya tentang membuat fungsi Lambda, lihat [Menggunakan AWS Lambda dengan Antarmuka Baris AWS Perintah](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html).

   Berikut ini adalah contoh output fungsi Lambda:

   ```
   {
     "allowProvisioning": True,
     "parameterOverrides": {
       "incomingKey0": "incomingValue0",
       "incomingKey1": "incomingValue1"
     }
   }
   ```

1. AWS IoT menggunakan kebijakan berbasis sumber daya untuk memanggil Lambda, jadi Anda harus memberikan izin AWS IoT untuk memanggil fungsi Lambda Anda.
**penting**  
Pastikan untuk menyertakan `source-arn` atau `source-account` dalam kunci konteks kondisi global dari kebijakan yang dilampirkan pada tindakan Lambda Anda untuk mencegah manipulasi izin. Untuk informasi selengkapnya tentang langkah ini, lihat [Pencegahan "confused deputy" lintas layanan](cross-service-confused-deputy-prevention.md).

   Berikut ini adalah contoh menggunakan [izin tambahan memberikan izin](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) IoT ke Lambda Anda.

   ```
   aws lambda add-permission \
       --function-name myLambdaFunction \
       --statement-id iot-permission \
       --action lambda:InvokeFunction \
       --principal iot.amazonaws.com
   ```

1. Tambahkan hook pra-penyediaan ke template menggunakan perintah atau. [create-provisioning-template[update-provisioning-template](https://docs.aws.amazon.com/cli/latest/reference/iot/update-provisioning-template.html)](https://docs.aws.amazon.com/cli/latest/reference/iot/create-provisioning-template.html)

   Contoh CLI berikut menggunakan [create-provisioning-template](https://docs.aws.amazon.com/cli/latest/reference/iot/create-provisioning-template.html)untuk membuat template penyediaan yang memiliki kait pra-penyediaan:

   ```
   aws iot create-provisioning-template \
       --template-name myTemplate \
       --provisioning-role-arn arn:aws:iam:us-east-1:1234564789012:role/myRole \
       --template-body file://template.json \
       --pre-provisioning-hook file://hooks.json
   ```

   Output dari perintah ini terlihat seperti berikut:

   ```
   {
       "templateArn": "arn:aws:iot:us-east-1:1234564789012:provisioningtemplate/myTemplate",
       "defaultVersionId": 1,
       "templateName": myTemplate
   }
   ```

   Anda juga dapat memuat parameter dari file alih-alih mengetik semuanya sebagai nilai parameter baris perintah untuk menghemat waktu. Untuk informasi selengkapnya, lihat [Memuat AWS CLI Parameter dari File](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html). Berikut ini menunjukkan `template` parameter dalam format JSON diperluas:

   ```
   {
       "Parameters" : {
           "DeviceLocation": {
               "Type": "String"
           }
       },
       "Mappings": {
           "LocationTable": {
               "Seattle": {
                   "LocationUrl": "https://example.aws"
               }
           }
       },
       "Resources" : {
           "thing" : {
               "Type" : "AWS::IoT::Thing",
               "Properties" : {
                   "AttributePayload" : {
                       "version" : "v1",
                       "serialNumber" : "serialNumber"
                   },
                   "ThingName" : {"Fn::Join":["",["ThingPrefix_",{"Ref":"SerialNumber"}]]},
                   "ThingTypeName" : {"Fn::Join":["",["ThingTypePrefix_",{"Ref":"SerialNumber"}]]},
                   "ThingGroups" : ["widgets", "WA"],
                   "BillingGroup": "BillingGroup"
               },
               "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:504350838278:topic/foo/bar"]
                       }]
                   }
               }
           }
       },
       "DeviceConfiguration": {
           "FallbackUrl": "https://www.example.com/test-site",
           "LocationUrl": {
               "Fn::FindInMap": ["LocationTable",{"Ref": "DeviceLocation"}, "LocationUrl"]}
       }
   }
   ```

   Berikut ini menunjukkan `pre-provisioning-hook` parameter dalam format JSON diperluas:

   ```
   {
        "targetArn" : "arn:aws:lambda:us-east-1:765219403047:function:pre_provisioning_test",
        "payloadVersion" : "2020-04-01"
   }
   ```