Buat deployment massal untuk grup - 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.

Buat deployment massal untuk grup

Anda dapat menggunakan panggilan API sederhana untuk deployment sejumlah besar grup Greengrass sekaligus. Deployment ini dipicu dengan tingkat adaptif yang memiliki batas atas tetap.

Tutorial ini menjelaskan cara menggunakan AWS CLI untuk membuat dan memantau deployment grup massal di AWS IoT Greengrass. Contoh deployment massal dalam tutorial ini berisi beberapa grup. Anda dapat menggunakan contoh dalam implementasi Anda untuk menambahkan sebanyak grup yang Anda butuhkan.

Tutorial ini berisi langkah-langkah tingkat tinggi berikut:

Prasyarat

Untuk menyelesaikan tutorial ini, Anda membutuhkan:

  • Satu atau lebih grup Greengrass yang dapat di-deploy. Untuk informasi lebih lanjut tentang membuat AWS IoT Greengrass grup and core, lihat Memulai dengan AWS IoT Greengrass.

  • Menginstal AWS CLI dan mengonfigurasi ke mesin Anda. Untuk informasi lebih lanjut, lihatAWS CLIPanduan Pengguna.

  • Bucket S3 yang dibuat di Wilayah AWS sebagai AWS IoT Greengrass. Untuk informasi lebih lanjut, lihatMembuat dan mengonfigurasi bucket S3di dalamPanduan Pengguna Amazon Simple Storage Service.

    catatan

    Saat ini, SSE KMS yang diaktifkan bucket tidak didukung.

Langkah 1: Buat dan unggah file input deployment massal

Dalam langkah ini, Anda membuat file input deployment dan mengunggah ke bucket Amazon S3 Anda. File ini adalah serial, line-delimited file JSON yang berisi informasi tentang setiap grup dalam deployment massal Anda. AWS IoT Greengrass menggunakan informasi ini untuk men-deploy setiap grup atas nama Anda ketika Anda menginisialisasi deployment grup massal.

  1. Jalankan perintah berikut untuk mendapatkan groupId untuk setiap grup yang ingin Anda gunakan. Anda memasukkan groupId ke file input deployment massal Anda sehingga AWS IoT Greengrass dapat mengidentifikasi setiap usaha untuk di-deploy.

    catatan

    Anda juga dapat menemukan nilai-nilai ini di konsol AWS IoT tersebut. ID grup ditampilkan pada halaman Pengaturan grup. ID versi grup ditampilkan pada grupDeploymentTab.

    aws greengrass list-groups

    Respons berisi informasi tentang setiap grup di akun AWS IoT Greengrass Anda:

    { "Groups": [ { "Name": "string", "Id": "string", "Arn": "string", "LastUpdatedTimestamp": "string", "CreationTimestamp": "string", "LatestVersion": "string", "LatestVersionArn": "string" } ], "NextToken": "string" }

    Jalankan perintah berikut untuk mendapatkan groupVersionId dari setiap grup yang ingin Anda men-deploy.

    list-group-versions --group-id groupId

    Respons berisi informasi tentang semua versi dalam grup. Buat catatan tentang Version nilai untuk versi grup yang ingin Anda gunakan.

    { "Versions": [ { "Arn": "string", "Id": "string", "Version": "string", "CreationTimestamp": "string" } ], "NextToken": "string" }
  2. Di terminal komputer Anda atau editor pilihan, buat file,MyBulkDeploymentInputFile, dari contoh berikut. File ini berisi informasi tentang masing-masing AWS IoT Greengrass grup untuk dimasukkan dalam deployment massal. Meskipun contoh ini mendefinisikan beberapa grup, untuk tutorial ini, file Anda dapat berisi hanya satu.

    catatan

    Ukuran file ini harus kurang dari 100 MB.

    {"GroupId":"groupId1", "GroupVersionId":"groupVersionId1", "DeploymentType":"NewDeployment"} {"GroupId":"groupId2", "GroupVersionId":"groupVersionId2", "DeploymentType":"NewDeployment"} {"GroupId":"groupId3", "GroupVersionId":"groupVersionId3", "DeploymentType":"NewDeployment"} ...

    Setiap catatan (atau baris) berisi objek grup. Setiap objek grup berisi yang sesuai GroupId dan GroupVersionId dan sebuah DeploymentType. Saat ini, AWS IoT Greengrass mendukung NewDeployment jenis deployment massal saja.

    Simpan dan tutup file Anda. Buat catatan tentang lokasi file.

  3. Gunakan perintah berikut di terminal Anda untuk mengunggah file input Anda ke bucket Amazon S3 Anda. Ganti path file dengan lokasi dan nama file Anda. Untuk informasi, lihat Menambahkan objek ke bucket.

    aws s3 cp path/MyBulkDeploymentInputFile s3://my-bucket/

Langkah 2: Buat dan konfigurasi peran eksekusi IAM

Dalam langkah ini, Anda menggunakan konsol IAM untuk membuat peran eksekusi mandiri. Anda kemudian membangun hubungan kepercayaan antara peran dan AWS IoT Greengrass dan pastikan bahwa pengguna IAM Anda memiliki PassRole untuk peran eksekusi Anda. Hal ini mengizinkan AWS IoT Greengrass untuk mengambil peran eksekusi Anda dan membuat deployment atas nama Anda.

  1. Gunakan kebijakan berikut untuk membuat peran eksekusi. Dokumen kebijakan ini mengizinkan AWS IoT Greengrass untuk mengakses file input deployment massal Anda ketika membuat setiap deployment atas nama Anda.

    Untuk informasi lebih lanjut tentang membuat IAM role dan mendelegasikan izin, lihat Membuat IAM role.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "greengrass:CreateDeployment", "Resource": [ "arn:aws:greengrass:region:accountId:/greengrass/groups/groupId1", "arn:aws:greengrass:region:accountId:/greengrass/groups/groupId2", "arn:aws:greengrass:region:accountId:/greengrass/groups/groupId3", ... ] } ] }
    catatan

    Kebijakan ini harus memiliki sumber daya untuk setiap grup atau grup versi dalam file input deployment massal untuk di-deploy oleh AWS IoT Greengrass. Untuk mengizinkan akses ke semua grup, untuk Resource, tentukan tanda bintang:

    "Resource": ["*"]
  2. Modifikasi hubungan kepercayaan untuk peran eksekusi Anda untuk menyertakan AWS IoT Greengrass. Ini mengizinkan AWS IoT Greengrass untuk menggunakan peran eksekusi Anda dan izin yang melekat padanya. Untuk informasi, lihat Mengedit hubungan kepercayaan untuk peran yang ada.

    Kami merekomendasikan Anda juga memasukkanaws:SourceArndanaws:SourceAccountkunci konteks kondisi global dalam kebijakan kepercayaan Anda untuk membantu mencegahdeputi bingungmasalah keamanan. Kunci konteks kondisi membatasi akses untuk mengizinkan hanya permintaan yang berasal dari akun tertentu dan ruang kerja Greengrass. Untuk informasi lebih lanjut tentang masalah deputi yang membingungkan, lihatCross-service bingung wakil pencegahan.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" } } } ] }
  3. Berikan IAM PassRole izin untuk peran eksekusi ke pengguna IAM Anda. Pengguna IAM ini adalah salah satu yang digunakan untuk memulai deployment massal. PassRole mengizinkan pengguna IAM Anda untuk meneruskan peran eksekusi Anda ke AWS IoT Greengrass untuk digunakan. Untuk informasi lebih lanjut, lihat Memberikan izin pengguna untuk meneruskan peran ke AWS layanan.

    Gunakan contoh berikut untuk memperbarui kebijakan IAM yang dilampirkan pada peran eksekusi yang dilampirkan pada peran eksekusi Anda. Memodifikasi contoh ini, jika perlu.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1508193814000", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::account-id:user/executionRoleArn" ] "Condition": { "StringEquals": { "iam:PassedToService": "greengrass.amazonaws.com" } } } ] }

Langkah 3: Izinkan akses peran eksekusi ke Bucket S3 Anda

Untuk memulai deployment massal Anda, peran eksekusi Anda harus dapat membaca file input deployment massal Anda dari bucket Amazon S3 Anda. Lampirkan kebijakan contoh berikut untuk bucket Amazon S3 Anda sehingga GetObject izin dapat diakses ke peran eksekusi Anda.

Untuk informasi lebih lanjut, lihat Cara menambahkan kebijakan bucket S3?

{ "Version": "2008-10-17", "Id": "examplePolicy", "Statement": [ { "Sid": "Stmt1535408982966", "Effect": "Allow", "Principal": { "AWS": [ "executionRoleArn" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/objectKey" } ] }

Anda dapat menggunakan perintah berikut di terminal Anda untuk memeriksa kebijakan bucket:

aws s3api get-bucket-policy --bucket my-bucket
catatan

Anda dapat langsung memmodifikasi peran eksekusi Anda untuk memberikan izin ke bucket Amazon S3 GetObject sebagai gantinya. Untuk melakukannya, lampirkan kebijakan berikut untuk peran eksekusi Anda.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/objectKey" } ] }

Langkah 4: Men-deploy grup

Dalam langkah ini, Anda memulai operasi deployment massal untuk semua versi grup yang dikonfigurasi dalam file input deployment massal Anda. Tindakan deployment untuk setiap versi grup Anda adalah jenis NewDeploymentType.

catatan

Anda tidak dapat memanggil StartBulkDeployment sementara deployment massal lain dari akun yang sama masih berjalan. Permintaan ditolak.

  1. Gunakan perintah berikut untuk memulai deployment massal.

    Kami merekomendasikan Anda menyertakan X-Amzn-Client-Token token di setiap StartBulkDeployment permintaan. Permintaan ini idempoten sehubungan dengan token dan parameter permintaan. Token ini dapat berupa string yang unik dan sensitif hingga 64 karakter ASCII.

    aws greengrass start-bulk-deployment --cli-input-json "{ "InputFileUri":"URI of file in S3 bucket", "ExecutionRoleArn":"ARN of execution role", "AmznClientToken":"your Amazon client token" }"

    Perintah harus menghasilkan kode status sukses 200, bersama dengan respon berikut:

    { "bulkDeploymentId": UUID }

    Membuat catatan ID deployment massal. Hal ini dapat digunakan untuk memeriksa status deployment massal Anda.

    catatan

    Meskipun operasi deployment massal saat ini tidak didukung, Anda dapat membuat Amazon EventBridge aturan acara untuk mendapatkan notifikasi tentang perubahan status deployment untuk masing-masing grup. Untuk informasi selengkapnya, lihat Dapatkan notifikasi deployment.

  2. Gunakan perintah berikut untuk memeriksa status deployment massal Anda.

    aws greengrass get-bulk-deployment-status --bulk-deployment-id 1234567

    Perintah tersebut seharusnya mengembalikan kode status sukses dari 200 selain muatan JSON informasi:

    { "BulkDeploymentStatus": Running, "Statistics": { "RecordsProcessed": integer, "InvalidInputRecords": integer, "RetryAttempts": integer }, "CreatedAt": "string", "ErrorMessage": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ] }

    BulkDeploymentStatus Berisi status eksekusi massal saat ini. Eksekusi dapat memiliki satu dari enam status yang berbeda:

    • Initializing. Permintaan deployment massal telah diterima, dan eksekusi sedang mempersiapkan untuk mulai.

    • Running. Eksekusi deployment massal telah dimulai.

    • Completed. Eksekusi deployment massal telah selesai memproses semua catatan.

    • Stopping. Eksekusi deployment massal telah menerima perintah untuk berhenti dan akan mengakhiri segera. Anda tidak dapat memulai deployment massal baru sementara deployment sebelumnya di Stopping keadaan.

    • Stopped. Eksekusi deployment massal telah secara manual berhenti.

    • Failed. Eksekusi deployment massal mengalami kesalahan dan dihentikan. Anda dapat menemukan rincian kesalahan dalam ErrorDetails bidang.

    Muatan JSON juga mencakup informasi statistik tentang kemajuan deployment massal. Anda dapat menggunakan informasi ini untuk menentukan berapa banyak grup telah diproses dan berapa banyak telah gagal. Informasi statistik meliputi:

    • RecordsProcessed: Jumlah grup catatan yang dicoba.

    • InvalidInputRecords: Jumlah total catatan yang mengembalikan kesalahan yang tidak dapat dicoba lagi. Sebagai contoh, hal ini dapat terjadi jika catatan grup dari file input menggunakan format yang tidak valid atau menentukan versi grup yang tidak ada, atau jika eksekusi tidak memberikan izin untuk deployment versi grup atau grup.

    • RetryAttempts: Jumlah upaya deployment yang mengembalikan kesalahan yang dapat dicoba lagi. Sebagai contoh, coba lagi dipicu jika upaya untuk men-deploy grup mengembalikan kesalahan perlambatan. Deployment grup dapat dicoba ulang hingga lima kali.

    Dalam kasus kegagalan eksekusi deployment massal, muatan ini juga mencakup ErrorDetails bagian yang dapat digunakan untuk pemecahan masalah. Ini berisi informasi tentang penyebab kegagalan eksekusi.

    Anda dapat secara berkala memeriksa status deployment massal untuk mengkonfirmasi bahwa kemajuan seperti yang diharapkan. Setelah deployment selesai, RecordsProcessed harus sama dengan jumlah grup deployment dalam file input deployment massal Anda. Hal ini menunjukkan bahwa setiap catatan telah diproses.

Langkah 5: Uji deployment

Gunakan ListBulkDeployments perintah untuk menemukan ID deployment massal Anda.

aws greengrass list-bulk-deployments

Perintah ini akan menampilkan daftar semua deployment massal dari sebagian besar hingga paling tidak terbaru, termasuk BulkDeploymentId.

{ "BulkDeployments": [ { "BulkDeploymentId": 1234567, "BulkDeploymentArn": "string", "CreatedAt": "string" } ], "NextToken": "string" }

Sekarang panggilan ListBulkDeploymentDetailedReports perintah untuk mengumpulkan informasi rinci tentang setiap deployment.

aws greengrass list-bulk-deployment-detailed-reports --bulk-deployment-id 1234567

Perintah tersebut seharusnya mengembalikan kode status sukses dari 200 bersama dengan muatan JSON informasi:

{ "BulkDeploymentResults": [ { "DeploymentId": "string", "GroupVersionedArn": "string", "CreatedAt": "string", "DeploymentStatus": "string", "ErrorMessage": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ] } ], "NextToken": "string" }

Muatan ini biasanya berisi daftar paginasi dari setiap deployment dan status deployment dari yang terbaru hingga yang terbaru. Hal ini juga berisi informasi lebih lanjut dalam hal kegagalan eksekusi deployment massal. Sekali lagi, jumlah total deployment terdaftar harus sama dengan jumlah grup yang Anda identifikasi dalam file input deployment massal Anda.

Informasi yang dikembalikan dapat berubah sampai deployment berada dalam keadaan terminal (keberhasilan atau kegagalan). Anda dapat memanggil perintah ini secara berkala sampai saat itu.

Pemecahan masalah deployment massal

Jika deployment massal tidak berhasil, Anda dapat mencoba langkah-langkah pemecahan masalah berikut ini. Jalankan perintah di terminal Anda.

Memecahkan masalah kesalahan file input

Deployment massal dapat gagal dalam hal kesalahan sintaks dalam file input deployment massal. Ini mengembalikan status deployment massal Failed dengan pesan kesalahan yang menunjukkan nomor baris kesalahan validasi pertama. Ada empat kemungkinan kesalahan:

  • InvalidInputFile: Missing GroupId at line number: line number

    Kesalahan ini mengindikasikan bahwa baris file input yang diberikan tidak dapat mendaftarkan parameter yang ditentukan. Parameter yang hilang mungkin adalah GroupId dan GroupVersionId.

  • InvalidInputFile: Invalid deployment type at line number : line number. Only valid type is 'NewDeployment'.

    Kesalahan ini mengindikasikan bahwa baris file input yang diberikan mencantumkan jenis deployment yang tidak valid. Pada saat ini, satu-satunya jenis deployment yang didukung adalah NewDeployment.

  • Line %s is too long in S3 File. Valid line is less than 256 chars.

    Kesalahan ini menunjukkan bahwa baris file input yang diberikan terlalu panjang dan harus dipersingkat.

  • Failed to parse input file at line number: line number

    Kesalahan ini menunjukkan bahwa baris file input yang diberikan tidak dianggap json yang valid.

Periksa deployment massal bersamaan

Anda tidak dapat memulai deployment massal baru sementara yang lain masih berjalan atau dalam keadaan non-terminal. Ini dapat mengakibatkan Concurrent Deployment Error. Anda dapat menggunakan ListBulkDeployments perintah untuk memverifikasi bahwa deployment massal tidak sedang berjalan. Perintah ini mencantumkan deployment massal Anda dari yang terbaru hingga yang terbaru.

{ "BulkDeployments": [ { "BulkDeploymentId": BulkDeploymentId, "BulkDeploymentArn": "string", "CreatedAt": "string" } ], "NextToken": "string" }

Gunakan BulkDeploymentId deployment massal terdaftar pertama untuk menjalankan GetBulkDeploymentStatus perintah. Jika penggunaan massal terbaru Anda dalam keadaan berjalan (Initializing atau Running), gunakan perintah berikut untuk menghentikan deployment massal.

aws greengrass stop-bulk-deployment --bulk-deployment-id BulkDeploymentId

Tindakan ini menghasilkan status Stopping sampai deployment adalah Stopped. Setelah deployment telah mencapai Stopped status, Anda dapat memulai deployment massal baru.

MEMERIKSA ErrorDetails

Jalankan GetBulkDeploymentStatus perintah untuk mengembalikan muatan JSON yang berisi informasi tentang kegagalan eksekusi deployment massal.

"Message": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ]

Ketika keluar dengan kesalahan, ErrorDetails muatan JSON yang dikembalikan oleh panggilan ini berisi informasi lebih lanjut tentang kegagalan eksekusi deployment massal. Kode status kesalahan dalam 400 seri, sebagai contoh, menunjukkan kesalahan input, baik dalam parameter input atau dependensi pemanggil.

Periksa AWS IoT Greengrass log core

Anda dapat memecahkan masalah dengan melihat AWS IoT Greengrass catatan core. Gunakan perintah berikut untuk melihat runtime.log:

cd /greengrass/ggc/var/log sudo cat system/runtime.log | more

Untuk informasi lebih lanjut tentang AWS IoT Greengrass catatan, lihat Pemantauan dengan AWS IoT Greengrass log.

Lihat juga

Untuk informasi lebih lanjut, lihat sumber daya berikut: