Templat penyediaan - AWS IoT Core

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

Templat penyediaan

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.

Bagian parameter

ParametersBagian 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. ParametersBagian 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 bertipeString. LocationParameter mendeklarasikan nilai default dari. "WA"

Bagian sumber daya

ResourcesBagian 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

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

Anda dapat menentukan sertifikat dengan salah satu cara berikut:

  • Permintaan penandatanganan sertifikat (CSR).

  • ID sertifikat sertifikat perangkat yang ada. (Hanya ID sertifikat yang 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.

Untuk informasi selengkapnya, lihat Ikhtisar Sertifikat X.509.

Sumber daya sertifikat dideklarasikan menggunakan properti berikut:

  • CertificateSigningRequest: Tali.

  • CertificateId: Tali.

  • CertificatePem: Tali.

  • CACertificatePem: Tali.

  • Status: Opsional. String yang bisa ACTIVE atauINACTIVE. Default ke ACTIVE.

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"} } } }

Sumber daya kebijakan

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 atauPolicyDocument, tetapi tidak keduanya, harus ditentukan.

Ganti pengaturan

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 aResourceConflictsException.

MERGE

Hanya berlaku untuk ThingGroups dan AttributePayload properti athing. 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

OverrideSettingstidak tersedia untuk sumber daya kebijakan.

Contoh sumber daya

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".

  • TipeAWS::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".

  • TipeAWS::IoT::Certificate.

  • Satu set properti.

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

Kebijakan ini dinyatakan dengan:

  • Nama logisnya"policy".

  • TipeAWS::IoT::Policy.

  • Baik nama kebijakan yang ada atau dokumen kebijakan.

Contoh template untuk pendaftaran massal

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" } }, "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)

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" } }, "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 CreateProvisioningTemplatedi referensi AWS API.

Untuk informasi selengkapnya tentang cara menggunakan template ini untuk just-in-time penyediaan, lihat: Penyediaan tepat waktu.

Penyediaan armada

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. 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 ARN (misalnya,). arn:aws:iot:us-west-2:1234568788:provisioningtemplate/templateName

Pemetaan

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

Bagian konfigurasi perangkat berisi data arbitrer yang ingin Anda kirim ke perangkat saat penyediaan. Sebagai 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. DeviceConfigurationBagian ini tidak mendukung objek JSON bersarang.

Fungsi intrinsik

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.

penting

Fn::Jointidak didukung untukSumber daya kebijakan.

Fn::Select

Mengembalikan objek tunggal dari daftar objek dengan indeks.

penting

Fn::Selecttidak 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 yang dipisahkan koma dari ID subnet diimpor ke templat tumpukan, Anda dapat membagi string pada setiap koma. Dari daftar ID subnet, 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

{ "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" } }, "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.