Ekspor aliran data ke AWS Cloud (konsol) - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

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

Ekspor aliran data ke AWS Cloud (konsol)

Tutorial ini menunjukkan cara menggunakan AWS IoT konsol untuk mengonfigurasi dan men-deploy AWS IoT Greengrass dengan pengelola pengaliran yang diaktifkan. Grup ini berisi fungsi Lambda yang ditetapkan pengguna yang menulis ke pengaliran di pengelola pengaliran, yang kemudian diekspor secara otomatis ke AWS Cloud.

Pengelola pengaliran membuat penyerapan, pemrosesan, dan ekspor pengaliran data volume tinggi menjadi lebih efisien dan andal. Dalam tutorial ini, Anda membuat TransferStream fungsi Lambda yang mengonsumsi data IoT. Fungsi Lambda menggunakan AWS IoT Greengrass Core SDK untuk membuat pengaliran di pengelola pengaliran lalu membaca dan menulis untuk itu. Pengelola pengaliran kemudian mengekspor pengaliran ke Kinesis Data Streams. Diagram berikut menunjukkan alur kerja ini.

Diagram alur kerja manajemen pengaliran.

Fokus dari tutorial ini adalah untuk menunjukkan cara fungsi Lambda yang ditetapkan pengguna menggunakan objek StreamManagerClient dalam AWS IoT Greengrass Core SDK untuk berinteraksi dengan pengelola pengaliran. Untuk mempermudah, fungsi Lambda Python yang Anda buat untuk tutorial ini menghasilkan data perangkat simulasi.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan:

  • Sebuah grup Greengrass dan core Greengrass (v1.10 atau yang lebih baru). Untuk informasi tentang cara membuat grup Greengrass dan core, lihat Memulai dengan AWS IoT Greengrass. Tutorial Memulai juga mencakup langkah-langkah untuk menginstal AWS IoT Greengrass perangkat lunak Core.

    catatan

    Pengelola pengaliran tidak didukung OpenWrt distribusi.

  • Waktu aktif Java 8 (JDK 8) dipasang pada perangkat core.

    • Untuk distribusi berbasis Debian (termasuk Raspbian) atau distribusi berbasis Ubuntu, jalankan perintah berikut:

      sudo apt install openjdk-8-jdk
    • Untuk distribusi berbasis Red Hat (termasuk Amazon Linux), jalankan perintah berikut:

      sudo yum install java-1.8.0-openjdk

      Untuk informasi lebih lanjut, lihat Cara mengunduh dan menginstal paket OpenJDK prebuilt dalam dokumentasi OpenJDK.

  • AWS IoT Greengrass Core SDK for Python v1.5.0 atau yang lebih baru. Untuk menggunakan StreamManagerClient dalam AWS IoT Greengrass Core SDK for Python, Anda harus:

    • Instal Python 3.7 atau yang lebih baru pada perangkat core.

    • Sertakan SDK dan dependensinya dalam paket deployment fungsi Lambda Anda. Instruksi disediakan pada tutorial ini.

    Tip

    Anda dapat menggunakan StreamManagerClient dengan Java atau NodeJS. Untuk kode sampel sampel, lihatAWS IoT GreengrassCore SDK for JavadanAWS IoT GreengrassCore SDK for Node.jsdi atas GitHub.

  • Pengaliran tujuan bernama MyKinesisStream dibuat di Amazon Kinesis Data Streams dalam hal yang sama Wilayah AWS sebagai grup Greengrass Anda. Untuk informasi lebih lanjut, lihat Buat aliran dalam Panduan Developer Amazon Kinesis.

    catatan

    Dalam tutorial ini, pengelola pengaliran mengekspor data ke Kinesis Data Streams, yang mengakibatkan biaya ke Akun AWS. Untuk informasi lebih lanjut tentang harga, lihat Harga Kinesis Data Streams.

    Untuk menghindari timbulnya biaya, Anda dapat menjalankan tutorial ini tanpa membuat Kinesis data stream. Dalam kasus ini, Anda memeriksa catatan untuk melihat pengelola pengaliran tersebut berusaha mengekspor pengaliran ke Kinesis Data Streams.

  • Kebijakan IAM ditambahkan ke Peran grup Greengrass yang mengizinkan tindakan kinesis:PutRecords pada aliran data target, seperti yang ditunjukkan dalam contoh berikut:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:region:account-id:stream/MyKinesisStream" ] } ] }

Tutorial berisi langkah-langkah tingkat tinggi berikut:

Tutorial akan memakan waktu sekitar 20 menit untuk menyelesaikannya.

Langkah 1: Buat paket deployment fungsi Lambda

Dalam langkah ini, Anda membuat paket deployment fungsi Lambda yang berisi kode fungsi Python dan dependensi. Anda mengunggah paket ini nanti ketika Anda membuat fungsi Lambda dalam AWS Lambda. Fungsi Lambda menggunakan AWS IoT Greengrass Core SDK untuk membuat dan berinteraksi dengan pengaliran lokal.

catatan

Fungsi Lambda yang ditetapkan pengguna milik Anda harus menggunakan AWS IoT Greengrass Core SDK untuk berinteraksi dengan pengelola pengaliran. Untuk informasi lebih lanjut tentang persyaratan untuk Greengrass pengelola pengaliran, lihat Persyaratan pengelola pengaliran Greengrass.

  1. Unduh AWS IoT Greengrass Core SDK for Python v1.5.0 atau yang lebih baru.

  2. Unzip paket unduhan untuk mendapatkan SDK. SDK adalah folder greengrasssdk ini.

  3. Instal paket dependensi untuk menyertakan dengan SDK dalam paket deployment fungsi Lambda Anda.

    1. Arahkan ke direktori SDK yang berisi file requirements.txt ini. File ini berisi daftar dependensi.

    2. Instal dependensi SDK. Sebagai contoh, jalankan perintah pip berikut untuk menginstalnya di direktori saat ini:

      pip install --target . -r requirements.txt
  4. Simpan fungsi kode Python berikut dalam sebuah file lokal bernama transfer_stream.py.

    Tip

    Misalnya kode yang menggunakan Java dan NodeJS, lihatAWS IoT GreengrassCore SDK for JavadanAWS IoT GreengrassCore SDK for Node.jsdi atas GitHub.

    import asyncio import logging import random import time from greengrasssdk.stream_manager import ( ExportDefinition, KinesisConfig, MessageStreamDefinition, ReadMessagesOptions, ResourceNotFoundException, StrategyOnFull, StreamManagerClient, ) # This example creates a local stream named "SomeStream". # It starts writing data into that stream and then stream manager automatically exports # the data to a customer-created Kinesis data stream named "MyKinesisStream". # This example runs forever until the program is stopped. # The size of the local stream on disk will not exceed the default (which is 256 MB). # Any data appended after the stream reaches the size limit continues to be appended, and # stream manager deletes the oldest data until the total stream size is back under 256 MB. # The Kinesis data stream in the cloud has no such bound, so all the data from this script is # uploaded to Kinesis and you will be charged for that usage. def main(logger): try: stream_name = "SomeStream" kinesis_stream_name = "MyKinesisStream" # Create a client for the StreamManager client = StreamManagerClient() # Try deleting the stream (if it exists) so that we have a fresh start try: client.delete_message_stream(stream_name=stream_name) except ResourceNotFoundException: pass exports = ExportDefinition( kinesis=[KinesisConfig(identifier="KinesisExport" + stream_name, kinesis_stream_name=kinesis_stream_name)] ) client.create_message_stream( MessageStreamDefinition( name=stream_name, strategy_on_full=StrategyOnFull.OverwriteOldestData, export_definition=exports ) ) # Append two messages and print their sequence numbers logger.info( "Successfully appended message to stream with sequence number %d", client.append_message(stream_name, "ABCDEFGHIJKLMNO".encode("utf-8")), ) logger.info( "Successfully appended message to stream with sequence number %d", client.append_message(stream_name, "PQRSTUVWXYZ".encode("utf-8")), ) # Try reading the two messages we just appended and print them out logger.info( "Successfully read 2 messages: %s", client.read_messages(stream_name, ReadMessagesOptions(min_message_count=2, read_timeout_millis=1000)), ) logger.info("Now going to start writing random integers between 0 and 1000 to the stream") # Now start putting in random data between 0 and 1000 to emulate device sensor input while True: logger.debug("Appending new random integer to stream") client.append_message(stream_name, random.randint(0, 1000).to_bytes(length=4, signed=True, byteorder="big")) time.sleep(1) except asyncio.TimeoutError: logger.exception("Timed out while executing") except Exception: logger.exception("Exception while running") def function_handler(event, context): return logging.basicConfig(level=logging.INFO) # Start up this sample code main(logger=logging.getLogger())
  5. Zip item berikut ke dalam file bernama transfer_stream_python.zip. Ini adalah paket deployment fungsi Lambda Anda.

    • transfer_stream.py. Logika aplikasi.

    • greengrasssdk. Diperlukan perpustakaan fungsi Python Greengrass Lambda yang menerbitkankan pesan MQTT.

      Operasi pengelola pengaliran tersedia dalam versi 1.5.0 atau yang lebih baru dari AWS IoT Greengrass Core SDK for Python.

    • Dependensi yang Anda instal untuk AWS IoT Greengrass Core SDK for Python (sebagai contoh, direktori cbor2 ini).

    Ketika Anda membuat file zip ini, termasuk hanya item ini, bukan folder yang berisi.

Langkah 2: Buat fungsi Lambda

Pada langkah ini, Anda menggunakan konsol AWS Lambda untuk membuat fungsi Lambda dan mengonfigurasinya agar menggunakan paket deployment Anda. Kemudian, Anda mempublikasikan versi fungsi dan membuat alias.

  1. Pertama, buat fungsi Lambda.

    1. Di AWS Management Console, pilih Layanan, dan buka konsol AWS Lambda tersebut.

    2. Pilih Buat fungsi dan kemudian Tulis dari awal.

    3. Di bagian Informasi dasar tersebut, gunakan nilai-nilai berikut:

      • Untuk Nama fungsi, masukkan TransferStream.

      • Untuk Waktu pengoperasian, pilih Python 3.7.

      • Untuk Izin, pertahankan pengaturan default. Hal ini menciptakan peran eksekusi yang memberikan izin Lambda basic. Peran ini tidak digunakan oleh AWS IoT Greengrass.

    4. Di bagian bawah halaman, pilih Buat Fungsi.

  2. Selanjutnya, daftarkan handler dan unggah paket deployment fungsi Lambda Anda.

    1. Pada tab Kode ini, di bawah Sumber kode, pilih Unggah dari. Dari dropdown, pilih file .zip.

      Unggah dari dropdown dengan file .zip disorot.
    2. Pilih Unggah, lalu pilih paket deployment transfer_stream_python.zip Anda. Lalu, pilih Simpan.

    3. Pada tab Kode fungsi, di bawah Pengaturan waktu aktif, pilih Edit, dan kemudian masukkan nilai-nilai berikut.

      • Untuk Waktu pengoperasian, pilih Python 3.7.

      • Untuk Handler, masukkan transfer_stream.function_handler

    4. Pilih Save (Simpan).

      catatan

      Tombol Tes pada konsol AWS Lambda tidak bekerja dengan fungsi ini. Pada AWS IoT Greengrass Core SDK tidak berisi modul yang diperlukan untuk menjalankan fungsi Greengrass Lambda Anda secara independen di konsol AWS Lambda tersebut. Modul-modul ini (misalnya, greengrass_common) dipasok ke fungsi setelah mereka di-deploy ke core Greengrass Anda.

  3. Sekarang, publikasikan versi pertama fungsi Lambda Anda dan membuat alias untuk versi.

    catatan

    Grup Greengrass dapat mereferensi fungsi Lambda dengan alias (direkomendasikan) atau dengan versi. Menggunakan alias membuatnya lebih mudah untuk mengelola pembaruan kode karena Anda tidak perlu mengubah tabel langganan atau definisi grup ketika kode fungsi diperbarui. Sebaliknya, Anda hanya mengarahkan alias ke versi fungsi baru.

    1. Dari menu Tindakan ini, pilih Terbitkan versi baru.

    2. Untuk Versi Deskripsi, masukkan First version, lalu pilih Publikasikan.

    3. PadaTransferStream: 1halaman konfigurasi, dariTindakanmenu, pilihMembuat alias.

    4. Pada halaman Buat alias baru ini, gunakan nilai-nilai berikut:

      • Untuk Nama, masukkan GG_TransferStream.

      • Untuk Versi, pilih 1.

      catatan

      AWS IoT Greengrass tidak support alias Lambda untuk versi $TERBARU ini.

    5. Pilih Create (Buat).

Sekarang Anda siap untuk menambahkan fungsi Lambda ke grup Greengrass Anda.

Langkah 3: Tambahkan fungsi Lambda ke grup Greengrass

Dalam langkah ini, Anda menambahkan fungsi Lambda ke grup lalu mengonfigurasi siklus hidup dan lingkungan variabel. Untuk informasi selengkapnya, lihat Mengontrol eksekusi fungsi Greengrass Lambda dengan menggunakan konfigurasi grup khusus.

  1. DiAWS IoTpanel navigasi konsol, di bawahKelola, PerluasPerangkat Greengrass, lalu pilihGrup (V1).

  2. Pilih grup target.

  3. Pada halaman konfigurasi grup, pilihFungsi Lambdatab.

  4. Di bawahFungsi Lambda saya, pilihTambahkan.

  5. PadaTambahkan fungsi Lambdahalaman, pilihFungsi Lambdauntuk fungsi Lambda Anda.

  6. UntukVersi Lambda, pilihAlias: GG_TransferStream.

    Sekarang, konfigurasikan properti yang menentukan perilaku fungsi Lambda dalam grup Greengrass.

  7. DiKonfigurasi fungsi Lambdabagian, lakukan perubahan berikut:

    • Atur Batas memori hingga 32 MB.

    • UntukDi-pin, pilihBenar.

    catatan

    Fungsi Lambda berumur panjang (atau disematkan) memulai secara otomatis setelah AWS IoT Greengrass dimulai dan terus berjalan dalam kontainernya sendiri. Hal ini berbeda dengan fungsi Lambda sesuai permintaan ini, yang dimulai ketika diaktifkan dan berhenti ketika tidak ada tugas yang tersisa untuk dijalankan. Untuk informasi selengkapnya, lihat Konfigurasi siklus hidup untuk fungsi Greengrass Lambda.

  8. PilihTambahkan fungsi Lambda.

Langkah 4: Mengaktifkan pengelola pengaliran

Dalam langkah ini, Anda memastikan bahwa pengelolal pengaliran diaktifkan.

  1. Pada halaman konfigurasi grup, pilihFungsi Lambdatab.

  2. Di bawahFungsi Lambda sistem, pilihManajer pengaliran, dan periksa statusnya. Jika dinonaktifkan, pilih Edit. Kemudian, pilih Aktifkan dan Simpan. Anda dapat menggunakan pengaturan parameter default untuk tutorial ini. Untuk informasi selengkapnya, lihat Konfigurasikan manajer pengaliran AWS IoT Greengrass.

catatan

Ketika Anda menggunakan konsol untuk mengaktifkan pengelola pengaliran dan men-deploy grup, ukuran memori untuk pengelola pengaliran diatur ke 4194304 KB (4 GB) secara default. Kami merekomendasikan Anda mengatur ukuran memori ke setidaknya 128000 KB.

Langkah 5: Konfigurasikan logging lokal

Dalam langkah ini, Anda mengonfigurasi AWS IoT Greengrass komponen sistem, fungsi Lambda yang ditetapkan pengguna, dan konektor dalam grup untuk menulis catatan ke sistem file perangkat core. Anda dapat menggunakan catatan untuk memecahkan masalah yang mungkin Anda alami. Untuk informasi selengkapnya, lihat Pemantauan dengan AWS IoT Greengrass log.

  1. Di bawah Konfigurasikan catatan lokal, periksa apakah pengelogan lokal dikonfigurasi.

  2. Jika catatan tidak dikonfigurasi untuk komponen sistem Greengrass atau fungsi Lambda yang ditetapkan pengguna, pilih Edit.

  3. PilihTingkat log fungsi Lambda penggunadanTingkat log sistem Greengrass.

  4. Menjaga nilai default untuk tingkat pencatatan dan batas ruang disk, lalu pilih Simpan.

Langkah 6: Men-deploy grup Greengrass

Men-deploy grup ke perangkat core.

  1. Pastikan bahwa core AWS IoT Greengrass sedang berjalan. Jalankan perintah berikut di terminal Raspberry Pi Anda, sesuai kebutuhan.

    1. Untuk memeriksa apakah daemon sedang berjalan:

      ps aux | grep -E 'greengrass.*daemon'

      Jika outputnya berisi entri root untuk /greengrass/ggc/packages/ggc-version/bin/daemon, maka daemon sedang berjalan.

      catatan

      Versi di jalur tergantung pada versi perangkat lunak AWS IoT Greengrass core yang diinstal pada perangkat core Anda.

    2. Untuk memulai daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Pada halaman konfigurasi grup, pilihDeploy.

    1. DiFungsi Lambdatab, di bawahFungsi Lambda sistembagian, pilihDetektor IPdan pilihlahedit.

    2. DiMengedit pengaturan detektor IPkotak dialog, pilihSecara otomatis mendeteksi dan mengganti titik akhir broker MQTT.

    3. Pilih Save (Simpan).

      Hal ini mengaktifkan perangkat untuk secara otomatis memperoleh informasi konektivitas untuk core, seperti alamat IP, DNS, dan nomor port. Deteksi otomatis direkomendasikan, namun AWS IoT Greengrass juga support titik akhir yang ditentukan secara manual. Anda hanya diminta untuk metode penemuan pertama kalinya bahwa grup di-deploy.

      catatan

      Jika diminta, berikan izin untuk membuat Peran layanan Greengrass dan kaitkan dengan Akun AWS Anda pada Wilayah AWS. Peran ini memungkinkan AWS IoT Greengrass untuk mengakses sumber daya Anda di layanan AWS ini.

      Halaman Deployment menampilkan timestamp deployment, ID versi, dan status. Setelah selesai, status yang ditampilkan untuk deployment seharusnyaCompleted (Lengkap).

      Untuk bantuan penyelesaian masalah, lihat Pemecahan Masalah AWS IoT Greengrass.

Langkah 7: Uji aplikasi

Fungsi Lambda TransferStream menghasilkan data perangkat yang disimulasikan. Ini menulis data ke pengaliran yang diekspor oleh pengelola pengaliran ke Kinesis data stream target.

  1. Di konsol Amazon Kinesis, di bawahKinesis data streams, pilihMyKinesisStream.

    catatan

    Jika Anda menjalankan tutorial tanpa Kinesis data streams target, periksa berkas log untuk pengelola pengaliran (GGStreamManager). Jika itu berisi export stream MyKinesisStream doesn't exist dalam pesan kesalahan, maka uji ini berhasil. Kesalahan ini berarti bahwa layanan mencoba untuk mengekspor ke pengaliran tetapi pengaliran tidak ada.

  2. PadaMyKinesisStreamhalaman, pilihPemantauan. Jika uji berhasil, Anda akan melihat data di bagan Pasang Catatan ini. Tergantung pada koneksi Anda, mungkin diperlukan waktu satu menit sebelum data ditampilkan.

    penting

    Setelah selesai melakukan pengujian, hapus Kinesis data stream agar tidak menimbulkan biaya tambahan.

    Atau, jalankan perintah berikut untuk menghentikan daemon Greengrass. Hal ini mencegah core mengirim pesan hingga Anda siap untuk melanjutkan pengujian.

    cd /greengrass/ggc/core/ sudo ./greengrassd stop
  3. HapusTransferStreamFungsi Lambda dari inti.

    1. DiAWS IoTpanel navigasi konsol, di bawahKelola, PerluasPerangkat Greengrass, lalu pilihGrup (V1).

    2. Di bawah grup Greengrass, pilih grup Anda.

    3. PadaLambdahalaman, pilih elips (...) untukTransferStreamfungsi, dan kemudian pilihHapus fungsi.

    4. Dari Tindakan, pilih Men-deploy.

Untuk melihat pencatatan informasi atau pemecahan masalah dengan aliran, periksa log untuk fungsi TransferStream dan GGStreamManager tersebut. Anda harus memiliki izin root untuk membaca catatan AWS IoT Greengrass pada sistem file.

  • TransferStream menulis entri log ke greengrass-root/ggc/var/log/user/region/account-id/TransferStream.log.

  • GGStreamManager menulis entri log ke greengrass-root/ggc/var/log/system/GGStreamManager.log.

Jika Anda membutuhkan informasi pemecahan masalah lainnya, Anda dapat mengatur tingkat logging untuk log Lambda pengguna ke log Debug lalu men-deploy grup lagi.

Lihat juga