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)

GunakanCreateComponentVersionoperasi 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 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 berjalanAWS IoT GreengrassV1, Anda harus menentukan dependensi komponen individu untuk fitur yang menggunakan fungsi Anda, seperti rahasia, bayangan lokal, dan manajer pengaliran. 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 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 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 untuk penerbitan lokal/pesan berlangganan dan pesan berlangganan lokal danAWS IoT Corepesan MQTT. Fungsi Lambda dipanggil saat menerima pesan dari sumber peristiwa.

      catatan

      Untuk berlangganan fungsi ini ke pesan dari fungsi atau komponen Lambda lainnya, gunakankomponen router langganan warisanketika Anda menyebarkan komponen fungsi Lambda ini. Saat Anda men-deploy komponen router langganan warisan, tentukan langganan yang digunakan oleh fungsi Lambda tersebut.

      Lakukan 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 menggunakanInti Greengrassv2.6.0 atau yang lebih baru danManajer Lambdav2.2.5 atau yang lebih baru, Anda dapat menggunakan wildcard topik MQTT (+dan#) ditopicketika Anda menentukan jenis ini.

          • IOT_CORE – Berlangganan ke AWS IoT Core Pesan MQTT.

            Anda dapat menggunakan wildcard topik MQTT (+dan#) ditopicketika 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. Defaultnya 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. Defaultnya 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. YangAWS IoT GreengrassPerangkat lunak inti menyimpan pesan dalam FIFO (first-in-first-out) antrean sampai dapat menjalankan fungsi Lambda untuk mengonsumsi 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 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.

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

              Defaultnya adalah ro.

            • addGroupOwner – (Opsional) Apakah akan menambahkan grup sistem yang akan menjalankan fungsi Lambda sebagai pemilik folder sumber atau tidak. Defaultnya 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 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.

              Defaultnya adalah ro.

            • addGroupOwner – (Opsional) Apakah akan menambahkan grup sistem yang akan menjalankan fungsi Lambda sebagai pemilik perangkat sistem atau tidak. Defaultnya 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. Untuk informasi selengkapnya, lihat Deploy komponen AWS IoT Greengrass ke perangkat.