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.
Topik
Bagian parameter
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 bertipeString
. Location
Parameter mendeklarasikan nilai default dari. "WA"
Bagian sumber daya
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
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 bisaACTIVE
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. HanyaPolicyName
dapat merujuk AWS IoT kebijakan tetapi tidak kebijakan IAM. Jika Anda menggunakan AWS IoT kebijakan yang ada, untukPolicyName
properti, masukkan nama kebijakan. Jangan sertakanPolicyDocument
properti. -
PolicyDocument
: Opsional. Sebuah objek JSON ditentukan sebagai string lolos. Jika tidakPolicyDocument
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 a
ResourceConflictsException
. MERGE
-
Hanya berlaku untuk
ThingGroups
danAttributePayload
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
OverrideSettings
tidak 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"
. -
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":"
. Ketika template dievaluasi, parameter diganti dengan nilai parameter dari kamus yang diteruskan dengan template.parameter-name
"}
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
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 CreateProvisioningTemplate
di 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. DeviceConfiguration
Bagian 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::Join
tidak didukung untukSumber daya kebijakan. Fn::Select
-
Mengembalikan objek tunggal dari daftar objek dengan indeks.
penting
Fn::Select
tidak memeriksanull
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.