Langkah 5: Buat komponen Anda dalam AWS IoT Greengrass layanan - AWS IoT Greengrass

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

Langkah 5: Buat komponen Anda dalam AWS IoT Greengrass layanan

Ketika Anda selesai mengembangkan komponen pada perangkat inti Anda, Anda dapat mengunggahnya ke AWS IoT Greengrass layanan di AWS Cloud. Anda juga dapat langsung membuat komponen di AWS IoT Greengrass konsol. AWS IoT Greengrass menyediakan layanan manajemen komponen yang menghosting komponen Anda sehingga Anda dapat menyebarkannya ke perangkat individual atau armada perangkat. Untuk mengunggah komponen ke AWS IoT Greengrass layanan, Anda menyelesaikan langkah-langkah berikut:

  • Unggah artefak komponen ke bucket S3.

  • Tambahkan Amazon Simple Storage Service (Amazon S3) URI setiap artefak ke resep komponen.

  • Buat komponen AWS IoT Greengrass dari resep komponen.

Di bagian ini, Anda menyelesaikan langkah-langkah ini pada perangkat inti Greengrass Anda untuk mengunggah komponen Hello World Anda ke layanan. AWS IoT Greengrass

  1. Gunakan bucket S3 di AWS akun Anda untuk meng-host artefak AWS IoT Greengrass komponen. Saat Anda men-deploy komponen ke perangkat inti, perangkat akan mengunduh artefak komponen dari bucket.

    Anda dapat menggunakan bucket S3 yang sudah ada, atau Anda dapat membuat bucket baru.

    1. Di konsol Amazon S3, di bawah Bucket, pilih Buat ember.

    2. Untuk nama Bucket, masukkan nama bucket yang unik. Misalnya, Anda dapat menggunakangreengrass-component-artifacts-region-123456789012. Ganti 123456789012 dengan ID AWS akun Anda dan region dengan Wilayah AWS yang Anda gunakan untuk tutorial ini.

    3. Untuk AWS wilayah, pilih AWS Wilayah yang Anda gunakan untuk tutorial ini.

    4. Pilih Buat bucket.

    5. Di bawah Bucket, pilih bucket yang Anda buat, unggah hello_world.py skrip ke artifacts/com.example.HelloWorld/1.0.0 folder di bucket. Untuk informasi tentang mengunggah objek ke bucket S3, lihat Mengunggah objek di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

    6. Salin S3 URI hello_world.py objek di ember S3. Ini URI akan terlihat mirip dengan contoh berikut. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. Izinkan perangkat inti mengakses artefak komponen dalam bucket S3.

    Setiap perangkat inti memiliki IAMperan perangkat inti yang memungkinkannya berinteraksi AWS IoT dan mengirim log ke AWS Cloud. Peran perangkat ini tidak mengizinkan akses ke bucket S3 secara default, sehingga Anda harus membuat dan melampirkan kebijakan yang memungkinkan perangkat inti mengambil artefak komponen dari bucket S3.

    Jika peran perangkat Anda sudah memungkinkan akses ke bucket S3, Anda dapat melewati langkah ini. Jika tidak, buat IAM kebijakan yang memungkinkan akses dan lampirkan ke peran, sebagai berikut:

    1. Di menu navigasi IAMkonsol, pilih Kebijakan, lalu pilih Buat kebijakan.

    2. Pada JSONtab, ganti konten placeholder dengan kebijakan berikut. Ganti amzn-s3-demo-bucket dengan nama bucket S3 yang berisi artefak komponen untuk diunduh perangkat inti.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    3. Pilih Berikutnya.

    4. Di bagian Detail kebijakan, untuk Nama, masukkanMyGreengrassV2ComponentArtifactPolicy.

    5. Pilih Buat kebijakan.

    6. Di menu navigasi IAMkonsol, pilih Peran, lalu pilih nama peran untuk perangkat inti. Anda menentukan nama peran ini saat menginstal perangkat lunak AWS IoT Greengrass Inti. Jika Anda tidak menentukan nama, defaultnya adalahGreengrassV2TokenExchangeRole.

    7. Di bawah Izin, pilih Tambahkan izin, lalu pilih Lampirkan kebijakan.

    8. Pada halaman Tambahkan izin, pilih kotak centang di samping MyGreengrassV2ComponentArtifactPolicy kebijakan yang Anda buat, lalu pilih Tambahkan izin.

  3. Gunakan resep komponen untuk membuat komponen di AWS IoT Greengrass konsol.

    1. Di menu navigasi AWS IoT Greengrass konsol, pilih Komponen, lalu pilih Buat komponen.

    2. Di bawah Informasi komponen, pilih Masukkan resep sebagai JSON. Resep placeholder akan terlihat mirip dengan contoh berikut.

      { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    3. Ganti placeholder URI di setiap Artifacts bagian dengan S3 objek AndaURI. hello_world.py

    4. Pilih Buat komponen.

    5. Di com.example. HelloWorldhalaman komponen, verifikasi bahwa Status komponen adalah Deployable.

Untuk mengunggah komponen Hello World anda
  1. Gunakan bucket S3 di artefak AWS IoT Greengrass komponen Anda Akun AWS untuk meng-host. Saat Anda men-deploy komponen ke perangkat inti, perangkat akan mengunduh artefak komponen dari bucket.

    Anda dapat menggunakan bucket S3 yang ada, atau menjalankan perintah berikut untuk membuat bucket. Perintah ini membuat bucket dengan Akun AWS ID Anda dan Wilayah AWS untuk membentuk nama bucket yang unik. Ganti 123456789012 dengan Akun AWS ID Anda dan region dengan Wilayah AWS yang Anda gunakan untuk tutorial ini.

    aws s3 mb s3://greengrass-component-artifacts-123456789012-region

    Perintah ini mengeluarkan informasi berikut jika permintaan berhasil.

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. Izinkan perangkat inti mengakses artefak komponen dalam bucket S3.

    Setiap perangkat inti memiliki IAMperan perangkat inti yang memungkinkannya berinteraksi dengan AWS IoT dan mengirim log ke file AWS Cloud. Peran perangkat ini tidak mengizinkan akses ke bucket S3 secara default, sehingga Anda harus membuat dan melampirkan kebijakan yang memungkinkan perangkat inti mengambil artefak komponen dari bucket S3.

    Jika peran perangkat inti sudah memungkinkan akses ke bucket S3, Anda dapat melewati langkah ini. Jika tidak, buat IAM kebijakan yang memungkinkan akses dan lampirkan ke peran, sebagai berikut:

    1. Buat file bernama component-artifact-policy.json dan salin berikut ini JSON ke dalam file. Kebijakan ini memungkinkan akses ke semua file dalam bucket S3. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. Jalankan perintah berikut untuk membuat kebijakan dari dokumen kebijakan di component-artifact-policy.json.

      Linux or Unix
      aws iam create-policy \\ --policy-name MyGreengrassV2ComponentArtifactPolicy \\ --policy-document file://component-artifact-policy.json
      Windows Command Prompt (CMD)
      aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
      PowerShell
      aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

      Salin kebijakan Amazon Resource Name (ARN) dari metadata kebijakan di output. Anda menggunakan ini ARN untuk melampirkan kebijakan ini ke peran perangkat inti di langkah berikutnya.

    3. Jalankan perintah berikut untuk melampirkan kebijakan tersebut pada peran perangkat inti. Ganti GreengrassV2TokenExchangeRole dengan nama peran untuk perangkat inti. Anda menentukan nama peran ini saat menginstal perangkat lunak AWS IoT Greengrass Inti. Ganti kebijakan ARN dengan ARN dari langkah sebelumnya.

      Linux or Unix
      aws iam attach-role-policy \\ --role-name GreengrassV2TokenExchangeRole \\ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      Windows Command Prompt (CMD)
      aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      PowerShell
      aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

      Jika perintah tidak memiliki output, itu berhasil. Perangkat inti sekarang dapat mengakses artefak yang Anda unggah ke bucket S3 ini.

  3. Unggah artefak skrip Python Hello World ke bucket S3.

    Jalankan perintah berikut untuk mengunggah skrip ke jalur yang sama di bucket tempat skrip ada di AWS IoT Greengrass inti Anda. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

    Linux or Unix
    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    Windows Command Prompt (CMD)
    aws s3 cp ^ artifacts/com.example.HelloWorld/1.0.0/hello_world.py ^ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    PowerShell
    aws s3 cp ` artifacts/com.example.HelloWorld/1.0.0/hello_world.py ` s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Perintah itu mengeluarkan baris yang dimulai dengan upload: jika permintaan berhasil.

  4. Tambahkan Amazon URI S3 artefak ke resep komponen.

    Amazon S3 URI terdiri dari nama bucket dan path ke objek artefak di bucket. Amazon URI S3 artefak skrip Anda adalah URI tempat Anda mengunggah artefak pada langkah sebelumnya. Ini URI akan terlihat mirip dengan contoh berikut. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

    s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Untuk menambahkan artefak ke resep, tambahkan daftar Artifacts yang berisi struktur dengan Amazon URI S3.

    JSON
    "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    Buka file resep di editor teks.

    Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

    nano recipes/com.example.HelloWorld-1.0.0.json

    Tambahkan artefak ke resep. File resep Anda akan terlihat seperti contoh berikut.

    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    YAML
    Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Buka file resep di editor teks.

    Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

    nano recipes/com.example.HelloWorld-1.0.0.yaml

    Tambahkan artefak ke resep. File resep Anda akan terlihat seperti contoh berikut.

    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  5. Buat sumber daya komponen AWS IoT Greengrass dari resep. Jalankan perintah berikut untuk membuat komponen dari resep, yang Anda sediakan sebagai file biner.

    JSON
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
    YAML
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml

    Responsnya terlihat seperti contoh berikut jika permintaan berhasil.

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

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

    catatan

    Anda juga dapat melihat komponen Hello World di Konsol AWS IoT Greengrass pada halaman Komponen.

  6. Verifikasi bahwa komponen tersebut terbuat dan siap untuk di-deploy. Ketika Anda membuat komponen, keadaannya adalah REQUESTED. Kemudian, AWS IoT Greengrass 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:123456789012:components:com.example.HelloWorld:versions:1.0.0"

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

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }

Komponen Hello World Anda sekarang tersedia di AWS IoT Greengrass. Anda dapat men-deploy-nya kembali ke perangkat inti Greengrass ini atau ke perangkat inti lainnya.