Impor fungsi Lambda sebagai komponen (AWS CLI) - AWS IoT Greengrass

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

Impor fungsi Lambda sebagai komponen (AWS CLI)

Gunakan CreateComponentVersionoperasi untuk membuat komponen dari fungsi Lambda. Saat Anda memanggil operasi ini, tentukan lambdaFunction untuk mengimpor fungsi Lambda.

Langkah 1: Tentukan konfigurasi fungsi Lambda

  1. Buat file bernama lambda-function-component.json, lalu salin objek JSON berikut ke dalam file. Ganti lambdaArn dengan ARN fungsi Lambda yang akan diimpor.

    { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1" } }
    penting

    Anda harus menentukan ARN yang mencakup versi fungsi yang akan diimpor. Anda tidak dapat menggunakan alias versi seperti $LATEST.

  2. (Opsional) Tentukan nama (componentName) komponen. Jika Anda menghilangkan parameter ini, AWS IoT Greengrass akan membuat komponen dengan nama fungsi Lambda.

    { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda" } }
  3. (Opsional) Tentukan versi (componentVersion) untuk komponen. Jika Anda menghilangkan parameter ini, AWS IoT Greengrass akan membuat komponen dengan versi fungsi Lambda sebagai versi semantik yang valid. Misalnya, jika versi fungsi Anda adalah 3, versi komponen akan menjadi 3.0.0.

    catatan

    Setiap versi komponen yang Anda upload harus unik. Pastikan Anda mengunggah versi komponen yang benar, karena Anda tidak dapat mengeditnya setelah mengunggahnya.

    AWS IoT Greengrass menggunakan versi semantik untuk komponen. Versi semantik mengikuti sistem nomor mayor.minor.patch. Sebagai contoh, versi 1.0.0 merupakan rilis mayor pertama untuk sebuah komponen. Untuk informasi lebih lanjut, lihat spesifikasi versi semantik.

    { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0" } }
  4. (Opsional) Tentukan platform yang mendukung fungsi Lambda ini. Setiap platform berisi peta atribut yang menentukan suatu platform. Semua perangkat inti memiliki atribut untuk sistem operasi (os) dan arsitektur (architecture). Perangkat lunak inti AWS IoT Greengrass dapat menambahkan atribut platform lainnya. Anda dapat menentukan atribut platform kustom untuk perangkat inti ketika Anda men-deploy komponen inti Greengrass ke perangkat inti. Lakukan hal-hal berikut:

    1. Tambahkan daftar platform (componentPlatforms) pada fungsi Lambda di lambda-function-component.json.

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ ] } }
    2. Tambahkan setiap platform yang didukung ke daftar. Setiap platform memiliki name yang ramah untuk mengidentifikasinya dan peta atribut. Contoh berikut menetapkan bahwa fungsi ini mendukung perangkat x86 yang menjalankan Linux.

      { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } }

      lambda-function-component.json Anda mungkin berisi dokumen yang mirip dengan contoh berikut.

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ] } }
  5. (Opsional) Tentukan dependensi komponen untuk fungsi Lambda Anda. Ketika Anda men-deploy komponen fungsi Lambda, deployment tersebut mencakup dependensi ini yang akan dijalankan oleh fungsi Anda.

    penting

    Untuk mengimpor fungsi Lambda yang Anda buat untuk dijalankan di AWS IoT Greengrass V1, Anda harus menentukan dependensi komponen individual untuk fitur yang digunakan fungsi Anda, seperti rahasia, bayangan lokal, dan pengelola aliran. Tentukan komponen ini sebagai dependensi keras sehingga komponen fungsi Lambda Anda akan me-restart jika dependensi tersebut mengubah keadaan. Untuk informasi selengkapnya, lihat Impor fungsi Lambda V1.

    Lakukan hal-hal berikut:

    1. Tambahkan peta dependensi komponen (componentDependencies) pada fungsi Lambda di lambda-function-component.json.

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { } } }
    2. Tambahkan dependensi pada setiap komponen pada peta. Tentukan nama komponen sebagai kunci dan tentukan objek dengan parameter berikut:

      • versionRequirement – Kendala versi semantik npm-style yang menentukan versi komponen dependensi yang kompatibel. Anda dapat menentukan versi tunggal atau serangkaian versi. Untuk informasi lebih lanjut tentang kendala versi semantik, lihat kalkulator semver npm.

      • dependencyType – (Opsional) Jenis dependensi. Pilih dari yang berikut ini:

        • SOFT – Komponen fungsi Lambda tidak memulai ulang jika dependensi mengubah keadaan.

        • HARD – Komponen fungsi Lambda memulai ulang jika dependensi mengubah keadaan.

        Default-nya adalah HARD.

      Contoh berikut menetapkan bahwa fungsi Lambda ini tergantung pada versi apa pun dalam versi utama pertama dari komponen stream manager. Komponen fungsi Lambda akan me-restart ketika strean manager melakukan restart atau pembaruan.

      { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }

      lambda-function-component.json Anda mungkin berisi dokumen yang mirip dengan contoh berikut.

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } } } }
  6. (Opsional) Konfigurasikan parameter fungsi Lambda yang akan digunakan untuk menjalankan fungsi. Anda dapat mengonfigurasi pilihan variabel lingkungan, sumber peristiwa pesan, batas waktu, dan pengaturan kontainer seperti ini. Lakukan hal-hal berikut:

    1. Tambahkan objek parameter Lambda (componentLambdaParameters) pada fungsi Lambda di lambda-function-component.json.

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { } } }
    2. (Opsional) Tentukan sumber peristiwa di mana fungsi Lambda berlangganan untuk pesan kerja. Anda dapat menentukan sumber acara untuk berlangganan fungsi ini ke pesan penerbitan/berlangganan lokal dan AWS IoT Core pesan MQTT. Fungsi Lambda dipanggil saat menerima pesan dari sumber peristiwa.

      catatan

      Untuk berlangganan fungsi ini ke pesan dari fungsi atau komponen Lambda lainnya, gunakan komponen router langganan lama saat Anda menerapkan komponen fungsi Lambda ini. Saat Anda men-deploy komponen router langganan warisan, tentukan langganan yang digunakan oleh fungsi Lambda tersebut.

      Lakukan hal-hal berikut:

      1. Tambahkan daftar sumber peristiwa (eventSources) pada parameter fungsi Lambda.

        { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ ] } } }
      2. Tambahkan setiap sumber peristiwa pada daftar. Setiap sumber peristiwa memiliki parameter berikut:

        • topic — Topik untuk berlangganan pesan.

        • type — Jenis sumber peristiwa. Pilih dari salah satu pilihan berikut:

          • PUB_SUB – Berlangganan ke pesan terbit/berlangganan lokal.

            Jika Anda menggunakan Greengrass nucleus v2.6.0 atau yang lebih baru dan Lambda manager v2.2.5 atau yang lebih baru, Anda dapat menggunakan wildcard topik MQTT (dan) di saat Anda menentukan jenis ini. + # topic

          • IOT_CORE – Berlangganan ke AWS IoT Core Pesan MQTT.

            Anda dapat menggunakan wildcard topik MQTT (+dan#) di topic saat Anda menentukan jenis ini.

          Contoh berikut berlangganan MQTT AWS IoT Core pada topik yang sesuai dengan filter topik hello/world/+.

          { "topic": "hello/world/+", "type": "IOT_CORE" }

          lambda-function-component.json Anda mungkin terlihat serupa dengan yang berikut ini.

          { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ] } } }
    3. (Opsional) Tentukan salah satu parameter berikut di objek parameter fungsi Lambda:

      • environmentVariables — Peta variabel lingkungan yang tersedia untuk fungsi Lambda ketika berjalan.

      • execArgs — Daftar argumen yang akan diteruskan ke fungsi Lambda ketika berjalan.

      • inputPayloadEncodingType — Jenis muatan yang didukung oleh fungsi Lambda. Pilih dari salah satu pilihan berikut:

        • json

        • binary

        Default: json

      • pinned — Apakah fungsi Lambda akan disematkan atau tidak. Default-nya adalah true.

        • Fungsi Lambda yang disematkan (atau berumur panjang) dimulai saat AWS IoT Greengrass dimulai dan terus berjalan di kontainernya sendiri.

        • Fungsi Lambda yang tidak disematkan (atau sesuai permintaan) dimulai hanya ketika menerima item pekerjaan dan keluar setelah tidak berjalan selama waktu tidak berjalan maksimum yang ditentukan. Jika fungsi tersebut memiliki beberapa item pekerjaan, perangkat lunak AWS IoT Greengrass akan membuat beberapa instans dari fungsi tersebut.

        Gunakan maxIdleTimeInSeconds untuk mengatur waktu diam maksimum untuk fungsi Anda.

      • timeoutInSeconds — Jumlah maksimum waktu dalam detik yang dapat dijalankan fungsi Lambda sebelum waktu habis. Default-nya adalah 3 detik.

      • statusTimeoutInSeconds — Interval dalam detik di mana komponen fungsi Lambda mengirimkan update status ke komponen manajer Lambda. Parameter ini hanya berlaku pada fungsi yang disematkan. Waktu default adalah 60 detik.

      • maxIdleTimeInSeconds — Jumlah maksimum waktu dalam detik di mana fungsi Lambda yang tidak disematkan dapat tidak bekerna sebelum perangkat lunak inti AWS IoT Greengrass menghentikan prosesnya. Bawaannya adalah 60 detik.

      • maxInstancesCount — Jumlah maksimum contoh yang dapat dijalankan oleh fungsi Lambda yang tidak disematkan pada saat yang sama. Default-nya adalah 100 instans.

      • maxQueueSize — Ukuran maksimum antrean pesan untuk komponen fungsi Lambda. Perangkat lunak AWS IoT Greengrass Core menyimpan pesan dalam antrian FIFO (first-in-first-out) hingga dapat menjalankan fungsi Lambda untuk mengkonsumsi setiap pesan. Default-nya adalah 1.000 pesan.

      lambda-function-component.json Anda mungkin berisi dokumen yang mirip dengan contoh berikut.

      { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500 } } }
    4. (Opsional) Konfigurasikan pengaturan kontainer untuk fungsi Lambda. Secara default, fungsi Lambda berjalan di lingkungan waktu aktif yang terisolasi di dalam perangkat lunak inti AWS IoT Greengrass. Anda juga dapat memilih untuk menjalankan fungsi Lambda sebagai proses tanpa isolasi apa pun. Jika Anda menjalankan fungsi Lambda dalam suatu kontainer, Anda akan mengonfigurasi ukuran memori kontainer dan sumber daya sistem apa yang tersedia untuk fungsi Lambda tersebut. Lakukan hal-hal berikut:

      1. Tambahkan objek parameter proses Linux (linuxProcessParams) untuk objek parameter Lambda di lambda-function-component.json.

        { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { } } } }
      2. (Opsional) Tentukan apakah fungsi Lambda akan berjalan dalam suatu kontainer atau tidak. Tambahkan parameter isolationMode pada objek parameter proses, dan pilih dari opsi berikut:

        • GreengrassContainer - Fungsi Lambda berjalan dalam sebuah kontainer.

        • NoContainer — Fungsi Lambda berjalan sebagai proses tanpa isolasi apa pun.

        Default-nya adalah GreengrassContainer.

      3. (Opsional) Jika Anda menjalankan fungsi Lambda dalam kontainer, Anda dapat mengonfigurasi jumlah memori dan sumber daya sistem, seperti volume dan perangkat, agar dapat tersedia untuk kontainer. Lakukan hal-hal berikut:

        1. Tambahkan objek parameter kontainer (containerParams) pada objek parameter proses Lambda di lambda-function-component.json.

          { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { } } } } }
        2. (Opsional) Tambahkan parameter memorySizeInKB untuk menentukan ukuran memori kontainer. Default-nya adalah 16.384 KB (16 MB).

        3. (Opsional) Tambahkan parameter mountROSysfs untuk menentukan apakah kontainer tersebut dapat membaca informasi dari folder perangkat /sys atau tidak. Default-nya adalah false.

        4. (Opsional) Konfigurasikan volume lokal yang dapat diakses oleh fungsi Lambda yang terkontainerisasi. Bila Anda menentukan volume, perangkat lunak inti AWS IoT Greengrass akan memasang file sumber ke tujuan di dalam kontainer. Lakukan hal-hal berikut:

          1. Tambahkan daftar volume (volumes) pada parameter kontainer.

            { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ ] } } } } }
          2. Tambahkan setiap volume ke daftar. Setiap volume memiliki parameter berikut:

            • sourcePath – Path ke folder sumber pada perangkat inti.

            • destinationPath – Path ke folder tujuan dalam kontainer.

            • permission – (Opsional) Izin untuk mengakses folder sumber dari kontainer. Pilih dari salah satu pilihan berikut:

              • ro – Fungsi Lambda memiliki akses hanya-baca ke folder sumber.

              • rw – Fungsi Lambda memiliki akses baca-tulis ke folder sumber.

              Default-nya adalah ro.

            • addGroupOwner – (Opsional) Apakah akan menambahkan grup sistem yang akan menjalankan fungsi Lambda sebagai pemilik folder sumber atau tidak. Default-nya adalah false.

            lambda-function-component.json Anda mungkin berisi dokumen yang mirip dengan contoh berikut.

            { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ { "sourcePath": "/var/data/src", "destinationPath": "/var/data/dest", "permission": "rw", "addGroupOwner": true } ] } } } } }
        5. (Opsional) Konfigurasikan perangkat sistem lokal yang dapat diakses oleh fungsi Lambda yang terkontainerisasi. Lakukan hal-hal berikut:

          1. Tambahkan daftar volume (devices) pada parameter kontainer.

            { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ { "sourcePath": "/var/data/src", "destinationPath": "/var/data/dest", "permission": "rw", "addGroupOwner": true } ], "devices": [ ] } } } } }
          2. Tambahkan setiap perangkat sistem ke daftar. Setiap perangkat sistem memiliki parameter berikut:

            • path – Path ke perangkat sistem pada perangkat inti.

            • permission – (Opsional) Izin untuk mengakses perangkat sistem dari kontainer. Pilih dari salah satu pilihan berikut:

              • ro – Fungsi Lambda memiliki akses hanya-baca ke perangkat sistem.

              • rw – Fungsi Lambda memiliki akses baca-tulis ke perangkat sistem.

              Default-nya adalah ro.

            • addGroupOwner – (Opsional) Apakah akan menambahkan grup sistem yang akan menjalankan fungsi Lambda sebagai pemilik perangkat sistem atau tidak. Default-nya adalah false.

          lambda-function-component.json Anda mungkin berisi dokumen yang mirip dengan contoh berikut.

          { "lambdaFunction": { "lambdaArn": "arn:aws:lambda:region:account-id:function:HelloWorld:1", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "componentPlatforms": [ { "name": "Linux x86", "attributes": { "os": "linux", "architecture": "x86" } } ], "componentDependencies": { "aws.greengrass.StreamManager": { "versionRequirement": "^1.0.0", "dependencyType": "HARD" } }, "componentLambdaParameters": { "eventSources": [ { "topic": "hello/world/+", "type": "IOT_CORE" } ], "environmentVariables": { "LIMIT": "300" }, "execArgs": [ "-d" ], "inputPayloadEncodingType": "json", "pinned": true, "timeoutInSeconds": 120, "statusTimeoutInSeconds": 30, "maxIdleTimeInSeconds": 30, "maxInstancesCount": 50, "maxQueueSize": 500, "linuxProcessParams": { "containerParams": { "memorySizeInKB": 32768, "mountROSysfs": true, "volumes": [ { "sourcePath": "/var/data/src", "destinationPath": "/var/data/dest", "permission": "rw", "addGroupOwner": true } ], "devices": [ { "path": "/dev/sda3", "permission": "rw", "addGroupOwner": true } ] } } } } }
  7. (Opsional) Tambahkan tag (tags) untuk komponen tersebut. Untuk informasi selengkapnya, lihat Beri tag pada sumber daya AWS IoT Greengrass Version 2 Anda.

Langkah 2: Buat komponen fungsi Lambda

  1. Jalankan perintah berikut untuk membuat komponen fungsi Lambda dari lambda-function-component.json.

    aws greengrassv2 create-component-version --cli-input-json file://lambda-function-component.json

    Respons tersebut serupa dengan contoh berikut ini jika permintaannya berhasil.

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorldLambda:versions:1.0.0", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "creationTimestamp": "Mon Dec 15 20:56:34 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    Salin arn dari output untuk memeriksa keadaan komponen pada langkah berikutnya.

  2. Ketika Anda membuat komponen, keadaannya adalah REQUESTED. Kemudian, AWS IoT Greengrass akan memvalidasi bahwa komponen tersebut dapat di-deploy. Anda dapat menjalankan perintah berikut untuk melakukan kueri atas status komponen dan memverifikasi bahwa komponen Anda dapat di-deploy. Ganti arn dengan ARN dari langkah sebelumnya.

    aws greengrassv2 describe-component \ --arn "arn:aws:greengrass:region:account-id:components:com.example.HelloWorldLambda:versions:1.0.0"

    Jika komponen tervalidasi, respons akan menunjukkan bahwa keadaan komponen adalah DEPLOYABLE.

    { "arn": "arn:aws:greengrass:region:account-id:components:com.example.HelloWorldLambda:versions:1.0.0", "componentName": "com.example.HelloWorldLambda", "componentVersion": "1.0.0", "creationTimestamp": "2020-12-15T20:56:34.376000-08:00", "publisher": "AWS Lambda", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "name": "Linux x86", "attributes": { "architecture": "x86", "os": "linux" } } ] }

    Setelah komponen adalah DEPLOYABLE, Anda dapat men-deploy fungsi Lambda ke perangkat inti Anda. Lihat informasi yang lebih lengkap di Deploy komponen AWS IoT Greengrass ke perangkat.