View a markdown version of this page

Pre-provisioning kait - AWS IoT Core

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

Pre-provisioning kait

AWS merekomendasikan penggunaan fungsi kait pra-penyediaan saat membuat templat penyediaan untuk memungkinkan lebih banyak kontrol atas perangkat mana dan berapa banyak perangkat yang digunakan akun Anda. Pre-provisioning hook adalah fungsi Lambda yang memvalidasi parameter yang diteruskan dari perangkat sebelum mengizinkan perangkat untuk disediakan. Fungsi Lambda ini harus ada di akun Anda sebelum Anda menyediakan perangkat karena dipanggil setiap kali perangkat mengirimkan permintaan melaluiRegisterThing.

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 Cross-service pencegahan wakil yang bingung.

Untuk perangkat yang akan disediakan, fungsi Lambda Anda harus menerima objek input dan mengembalikan objek output yang dijelaskan dalam bagian ini. Penyediaan hanya berlangsung jika fungsi Lambda mengembalikan objek dengan. "allowProvisioning": True

Pre-provision masukan kait

AWS IoT mengirimkan objek ini ke fungsi Lambda ketika perangkat mendaftar dengan AWS IoT.

{ "claimCertificateId" : "string", "certificateId" : "string", "certificatePem" : "string", "templateArn" : "arn:aws:iot:us-east-1:1234567890:provisioningtemplate/MyTemplate", "clientId" : "221a6d10-9c7f-42f1-9153-e52e6fc869c1", "parameters" : { "string" : "string", ... } }

Ob parameters jek yang diteruskan ke fungsi Lambda berisi properti dalam parameters argumen yang diteruskan dalam payload RegisterThing permintaan.

Pre-provision nilai pengembalian kait

Fungsi Lambda harus mengembalikan respons yang menunjukkan apakah ia telah mengizinkan permintaan penyediaan dan nilai properti apa pun untuk diganti.

Berikut ini adalah contoh respons yang berhasil dari fungsi pra-penyediaan.

{ "allowProvisioning": true, "parameterOverrides" : { "Key": "newCustomValue", ... } }

"parameterOverrides"nilai akan ditambahkan ke "parameters" parameter pay RegisterThing load permintaan.

catatan
  • Jika fungsi Lambda gagal, permintaan penyediaan gagal ACCESS_DENIED dan kesalahan dicatat ke CloudWatch Log.

  • Jika fungsi Lambda tidak kembali "allowProvisioning": "true" dalam respons, permintaan penyediaan gagal dengan. ACCESS_DENIED

  • Fungsi Lambda harus selesai berjalan dan kembali dalam waktu 5 detik, jika tidak permintaan penyediaan gagal.

Pre-provisioning contoh kait Lambda

Python

Contoh kait pra-penyediaan Lambda di Python.

import json def pre_provisioning_hook(event, context): print(event) return { 'allowProvisioning': True, 'parameterOverrides': { 'DeviceLocation': 'Seattle' } }
Java

Contoh kait pra-penyediaan Lambda di Java.

Kelas Handler:

package example; import java.util.Map; import java.util.HashMap; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class PreProvisioningHook implements RequestHandler<PreProvisioningHookRequest, PreProvisioningHookResponse> { public PreProvisioningHookResponse handleRequest(PreProvisioningHookRequest object, Context context) { Map<String, String> parameterOverrides = new HashMap<String, String>(); parameterOverrides.put("DeviceLocation", "Seattle"); PreProvisioningHookResponse response = PreProvisioningHookResponse.builder() .allowProvisioning(true) .parameterOverrides(parameterOverrides) .build(); return response; } }

Permintaan kelas:

package example; import java.util.Map; import lombok.Builder; import lombok.Data; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @Data @Builder @AllArgsConstructor @NoArgsConstructor public class PreProvisioningHookRequest { private String claimCertificateId; private String certificateId; private String certificatePem; private String templateArn; private String clientId; private Map<String, String> parameters; }

Kelas respons:

package example; import java.util.Map; import lombok.Builder; import lombok.Data; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @Data @Builder @AllArgsConstructor @NoArgsConstructor public class PreProvisioningHookResponse { private boolean allowProvisioning; private Map<String, String> parameterOverrides; }
JavaScript

Contoh kait pra-penyediaan Lambda di. JavaScript

exports.handler = function(event, context, callback) { console.log(JSON.stringify(event, null, 2)); var reply = { allowProvisioning: true, parameterOverrides: { DeviceLocation: 'Seattle' } }; callback(null, reply); }