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.
Mengakses sumber daya machine learning dari fungsi Lambda
Fungsi Lambda yang ditentukan pengguna dapat mengakses sumber daya machine learning untuk menjalankan inferensi lokal pada core AWS IoT Greengrass ini. Sumber daya machine learning terdiri dari model terlatih dan artefak lainnya yang diunduh ke perangkat core.
Untuk mengizinkan fungsi Lambda mengakses sumber daya machine learning pada core, Anda harus melampirkan sumber daya ke fungsi Lambda dan menentukan izin akses. Mode kontainerisasi dari afiliasi (atau terlampir) fungsi Lambda menentukan bagaimana Anda melakukan hal ini.
Izin akses untuk sumber daya machine learning
Dimulai pada AWS IoT Greengrass Core v1.10.0, Anda dapat menentukan pemilik sumber daya untuk sumber daya machine learning. Pemilik sumber daya mewakili grup OS dan izin yang AWS IoT Greengrass menggunakan untuk mengunduh artefak sumber daya. Jika pemilik sumber daya tidak didefinisikan, artefak sumber daya yang diunduh hanya dapat diakses oleh root.
Jika fungsi Lambda nonkontainerisasi yang mengakses sumber daya machine learning, Anda harus menentukan pemilik sumber daya karena tidak ada kontrol izin dari kontainer. Fungsi nonkontainerisasi Lambda dapat mewarisi izin pemilik sumber daya dan menggunakannya untuk mengakses sumber daya.
Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya, kami sarankan Anda menggunakan izin tingkat fungsi bukannya mendefinisikan pemilik sumber daya.
Properti pemilik sumber daya
Pemilik sumber daya menentukan pemilik grup dan izin pemilik grup.
-
Pemilik grup. Grup ID (GID) dari grup OS Linux yang ada pada perangkat core. Izin grup ditambahkan ke proses Lambda. Secara khusus, GID ditambahkan ke ID grup tambahan dari fungsi Lambda.
Jika fungsi Lambda dalam grup Greengrass dikonfigurasi untuk jalankan sebagai grup OS yang sama dengan pemilik sumber daya untuk sumber machine learning, sumber daya harus dilampirkan pada fungsi Lambda. Jika tidak, deployment gagal karena konfigurasi ini memberikan izin implisit fungsi Lambda dapat menggunakan untuk mengakses sumber daya tanpa otorisasi AWS IoT Greengrass ini. Pemeriksaan validasi deployment dilewati jika fungsi Lambda berjalan sebagai root (UID = 0).
Kami merekomendasikan bahwa Anda menggunakan grup OS yang tidak digunakan oleh sumber daya lain, fungsi Lambda, atau file pada Greengrass core. Menggunakan grup OS bersama memberikan melekat fungsi Lambda izin akses lebih dari yang mereka butuhkan. Jika Anda menggunakan grup OS bersama, fungsi Lambda terlampir juga harus dilampirkan ke semua sumber daya machine learning yang menggunakan grup OS bersama. Jika tidak, deployment gagal.
-
Izin pemilik grup. Izin hanya baca atau baca dan tulis untuk menambah proses Lambda.
Fungsi Lambda nonkontainerisasi harus mewarisi izin akses ini ke sumber daya. Fungsi Lambda terkontainerisasi dapat mewarisi izin tingkat sumber daya ini atau menentukan izin tingkat fungsi. Jika mereka menentukan izin tingkat fungsi, izin harus sama atau lebih ketat daripada izin tingkat sumber daya.
Tabel berikut menunjukkan konfigurasi izin akses yang didukung.
catatan
Ketika Anda menggunakan API AWS IoT Greengrass untuk mengonfigurasi fungsi Lambda dan sumber daya, tingkat fungsi properti ResourceId
juga diperlukan. Properti ResourceId
melampirkanl sumber daya machine learning untuk fungsi Lambda.
Mendefinisikan izin akses untuk fungsi Lambda (konsol)
Di AWS IoT konsol, Anda menentukan izin akses ketika Anda mengonfigurasi sumber daya machine learning atau melampirkan satu ke fungsi Lambda.
- Fungsi Lambda dalam peti kemas
-
Jika hanya fungsi Lambda terkontainerisasi terlampir pada sumber daya machine learning:
-
Pilih Tidak ada grup sistem sebagai pemilik sumber daya untuk sumber daya pembelajaran mesin. Ini adalah pengaturan yang direkomendasikan ketika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya machine learning. Jika tidak, Anda mungkin memberikan fungsi Lambda yang dilampirkan izin akses lebih dari yang mereka butuhkan.
-
- Fungsi Lambda nonkontainerisasi (memerlukankan GC v1.10 atau lebih baru)
-
Jika ada fungsi Lambda nonkontainerisasi terlampir pada sumber daya machine learning:
-
Tentukan ID grup Sistem (GID) yang akan digunakan sebagai pemilik sumber daya untuk sumber daya pembelajaran mesin. Pilih Tentukan grup sistem dan izin dan masukkan GID. Anda dapat menggunakan
getent group
perintah pada perangkat inti Anda untuk mencari ID grup sistem. -
Pilih Akses hanya-baca atau akses Baca dan tulis untuk izin grup Sistem.
-
Mendefinisikan izin akses untuk fungsi Lambda (API)
Di AWS IoT Greengrass API, Anda menentukan izin untuk sumber daya machine learning di ResourceAccessPolicy
Properti untuk fungsi Lambda atau OwnerSetting
properti untuk sumber daya.
- Fungsi Lambda dalam peti kemas
-
Jika hanya fungsi Lambda terkontainerisasi terlampir pada sumber daya machine learning:
-
Untuk fungsi Lambda terkontainerisasi, tentukan izin akses di properti
Permission
dari propertiResourceAccessPolicies
ini. Sebagai contoh:"Functions": [ { "Id": "my-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:
function-name
:alias-or-version
", "FunctionConfiguration": { "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id", "Permission": "ro-or-rw
" } ] }, "MemorySize": 512, "Pinned": true, "Timeout": 5 } } ] -
Untuk sumber daya machine learning, abaikan properti
OwnerSetting
ini. Sebagai contoh:"Resources": [ { "Id": "my-resource-id", "Name": "my-resource-name", "ResourceDataContainer": { "S3MachineLearningModelResourceData": { "DestinationPath": "/
local-destination-path
", "S3Uri": "s3://uri-to-resource-package
" } } } ]Ini adalah konfigurasi yang direkomendasikan ketika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya machine learning. Jika tidak, Anda mungkin memberikan fungsi Lambda yang dilampirkan izin akses lebih dari yang mereka butuhkan.
-
- Fungsi Lambda nonkontainerisasi (memerlukankan GC v1.10 atau lebih baru)
-
Jika ada fungsi Lambda nonkontainerisasi terlampir pada sumber daya machine learning:
-
Untuk fungsi Lambda nonkontainerisasi, abaikan properti
Permission
diResourceAccessPolicies
. Konfigurasi ini diperlukan dan memungkinkan fungsi untuk mewarisi izin tingkat sumber daya. Sebagai contoh:"Functions": [ { "Id": "my-non-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:
function-name
:alias-or-version
", "FunctionConfiguration": { "Environment": { "Execution": { "IsolationMode": "NoContainer", }, "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id" } ] }, "Pinned": true, "Timeout": 5 } } ] -
Untuk fungsi Lambda terkontainerisasi yang juga mengakses sumber daya machine learning, abaikan properti
Permission
diResourceAccessPolicies
atau tentukan izin yang sama atau lebih ketat sebagai izin tingkat sumber daya. Sebagai contoh:"Functions": [ { "Id": "my-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:
function-name
:alias-or-version
", "FunctionConfiguration": { "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id", "Permission": "ro-or-rw
" // Optional, but cannot exceed the GroupPermission defined for the resource. } ] }, "MemorySize": 512, "Pinned": true, "Timeout": 5 } } ] -
Untuk sumber daya machine learning, tentukan
OwnerSetting
properti, termasuk anakGroupOwner
danGroupPermission
properti. Sebagai contoh:"Resources": [ { "Id": "my-resource-id", "Name": "my-resource-name", "ResourceDataContainer": { "S3MachineLearningModelResourceData": { "DestinationPath": "/
local-destination-path
", "S3Uri": "s3://uri-to-resource-package
", "OwnerSetting": { "GroupOwner": "os-group-id
", "GroupPermission": "ro-or-rw
" } } } } ]
-
Mengakses sumber daya machine learning dari kode fungsi Lambda
Fungsi Lambda yang ditentukan pengguna menggunakan antarmuka OS platform spesifik untuk mengakses sumber daya machine learning pada perangkat core.
Implementasi pemuatan model Anda tergantung pada perpustakaan ML Anda.
Memecahkan masalah
Gunakan informasi berikut untuk membantu memecahkan masalah dengan mengakses sumber daya machine learning.
Topik
- InvalidML ModelOwner - GroupOwnerSetting disediakan dalam sumber daya model ML, tetapi GroupOwner atau GroupPermission tidak ada
- NoContainer fungsi tidak dapat mengonfigurasi izin saat melampirkan sumber daya Machine Learning. <function-arn>mengacu pada sumber daya Machine Learnin <resource-id>dengan izin <ro/rw> dalam kebijakan akses sumber daya.
- Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin yang hilang di keduanya ResourceAccessPolicy dan sumber daya OwnerSetting.
- Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin\ "rw\”, sedangkan pengaturan pemilik sumber daya GroupPermission hanya mengizinkan\ "ro\”.
- NoContainer Fungsi <function-arn>mengacu pada sumber daya jalur tujuan bersarang.
- Lambda <function-arn> mendapatkan akses ke sumber daya <resource-id> dengan berbagi id pemilik grup yang sama
InvalidML ModelOwner - GroupOwnerSetting disediakan dalam sumber daya model ML, tetapi GroupOwner atau GroupPermission tidak ada
Solusi: Anda menerima kesalahan ini jika sumber pembelajaran mesin berisi ResourceDownloadOwnerSettingobjek tetapi diperlukan GroupOwner
atau GroupPermission
properti tidak ditentukan. Untuk mengatasi masalah ini, tentukan properti yang hilang.
NoContainer fungsi tidak dapat mengonfigurasi izin saat melampirkan sumber daya Machine Learning. <function-arn>mengacu pada sumber daya Machine Learnin <resource-id>dengan izin <ro/rw> dalam kebijakan akses sumber daya.
Solusi: Anda menerima error ini jika fungsi Lambda non-containerized menentukan tingkat fungsi izin untuk sumber daya machine learning. Fungsi non-wadah harus mewarisi izin dari izin pemilik sumber daya yang ditetapkan pada sumber daya machine learning. Untuk mengatasi masalah ini, pilih untuk mewarisi izin pemilik sumber daya (konsol) atau menghapus izin dari fungsi Lambda sumber daya kebijakan akses (API).
Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin yang hilang di keduanya ResourceAccessPolicy dan sumber daya OwnerSetting.
Solusi: Anda menerima kesa ini jika izin untuk sumber daya machine learning tidak dikonfigurasi untuk fungsi Lambda terlampir atau sumber daya. Untuk mengatasi masalah ini, konfigurasikan izin di ResourceAccessPolicyproperti untuk fungsi Lambda atau properti untuk OwnerSettingsumber daya.
Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin\ "rw\”, sedangkan pengaturan pemilik sumber daya GroupPermission hanya mengizinkan\ "ro\”.
Solusi: Anda menerima error ini jika izin akses yang ditetapkan untuk fungsi Lambda terlampir melebihi izin pemilik sumber daya yang ditetapkan untuk sumber daya machine learning. Untuk mengatasi masalah ini, tetapkan izin yang lebih ketat untuk fungsi Lambda atau kurang membatasi izin untuk pemilik sumber daya.
NoContainer Fungsi <function-arn>mengacu pada sumber daya jalur tujuan bersarang.
Solusi: Anda menerima error ini jika beberapa sumber daya machine learning yang terlampir pada fungsi Lambda non-containerized menggunakan lintasan tujuan yang sama atau lintasan tujuan bersarang. Untuk mengatasi masalah ini, tentukan jalur tujuan terpisah untuk sumber daya.
Lambda <function-arn> mendapatkan akses ke sumber daya <resource-id> dengan berbagi id pemilik grup yang sama
Solusi: Anda menerima keslaahan ini di runtime.log
jika kelompok OS yang sama ditentukan sebagai fungsi Lambda Jalankan sebagai identitas dan pemilik sumber daya untuk sumber daya machine learning, tetapi sumber daya tidak terlampir pada fungsi Lambda. Konfigurasi ini memberikan fungsi Lambda izin implisit yang dapat digunakan untuk mengakses sumber daya tanpa AWS IoT Greengrass otorisasi.
Untuk mengatasi masalah ini, gunakan grup OS yang berbeda untuk salah satu properti atau melampirkan sumber daya machine learning untuk fungsi Lambda.