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.
-
Jalankan perintah berikut untuk mendapatkan
groupId
untuk setiap grup yang ingin Anda gunakan. Anda memasukkangroupId
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" } -
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
danGroupVersionId
dan sebuahDeploymentType
. Saat ini, AWS IoT Greengrass mendukungNewDeployment
jenis deployment massal saja.Simpan dan tutup file Anda. Buat catatan tentang lokasi file.
-
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.
-
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": ["*"]
-
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 memasukkan
aws:SourceArn
danaws:SourceAccount
kunci 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
:*" } } } ] } -
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.
-
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.
-
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 diStopping
keadaan. -
Stopped
. Eksekusi deployment massal telah secara manual berhenti. -
Failed
. Eksekusi deployment massal mengalami kesalahan dan dihentikan. Anda dapat menemukan rincian kesalahan dalamErrorDetails
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
danGroupVersionId
. -
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:
-
Men-deploy AWS IoT Greengrass grup ke AWS IoT Greengrass core
-
Perintah API Amazon S3 dalam AWS CLI Referensi Perintah
-
AWS IoT Greengrass perintah dalam AWS CLI Referensi Perintah