View a markdown version of this page

Mengakses sumber daya machine learning dari fungsi Lambda - AWS IoT Greengrass

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan menghentikan dukungan untuk. AWS IoT Greengrass Version 1 Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses sumber daya. AWS IoT Greengrass V1 Untuk informasi lebih lanjut, silakan kunjungi Migrasi dari AWS IoT Greengrass Version 1.

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

User-defined Fungsi Lambda dapat mengakses sumber daya pembelajaran mesin untuk menjalankan inferensi lokal pada intinya. AWS IoT Greengrass 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

Mulai dari AWS IoT Greengrass Core v1.10.0, Anda dapat menentukan pemilik sumber daya untuk sumber daya pembelajaran mesin. Pemilik sumber daya mewakili grup OS dan izin yang AWS IoT Greengrass digunakan untuk mengunduh artefak sumber daya. Jika pemilik sumber daya tidak didefinisikan, artefak sumber daya yang diunduh hanya dapat diakses oleh root.

  • Jika fungsi Lambda yang tidak terkontainer mengakses sumber pembelajaran mesin, Anda harus menentukan pemilik sumber daya karena tidak ada kontrol izin dari penampung. Non-containerized Fungsi 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, penerapan gagal karena konfigurasi ini memberikan izin implisit yang dapat digunakan fungsi Lambda untuk mengakses sumber daya tanpa otorisasi. AWS IoT Greengrass 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.

Non-containerized Fungsi Lambda 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.

GGC v1.10 or later
Properti Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya Jika ada fungsi Lambda nonkontainerisasi yang mengakses sumber daya
Function-level properti

Izin () read/write

Diperlukan kecuali sumber daya mendefinisikan pemilik sumber daya. Jika pemilik sumber daya didefinisikan, izin tingkat fungsi harus sama atau lebih ketat daripada izin pemilik sumber daya.

Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya, kami sarankan Anda tidak menentukan pemilik sumber daya.

Non-containerized Fungsi Lambda:

Tidak didukung. Non-containerized Fungsi Lambda harus mewarisi izin tingkat sumber daya.

Fungsi Lambda dalam peti kemas:

Opsional, tetapi harus sama atau lebih ketat daripada izin tingkat sumber daya.

Resource-level properti

Pemilik sumber daya

Opsional (tidak disarankan).

Wajib.

Izin () read/write

Opsional (tidak disarankan).

Wajib.

GGC v1.9 or earlier
Properti Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya Jika ada fungsi Lambda nonkontainerisasi yang mengakses sumber daya
Function-level properti

Izin () read/write

Wajib.

Tidak didukung.

Resource-level properti

Pemilik sumber daya

Tidak didukung.

Tidak didukung.

Izin () read/write

Tidak didukung.

Tidak didukung.

catatan

Saat Anda menggunakan AWS IoT Greengrass API untuk mengonfigurasi fungsi dan sumber daya Lambda, properti tingkat fungsi juga diperlukanResourceId. 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 saat mengonfigurasi sumber pembelajaran mesin atau melampirkannya 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.

     

 

Non-containerized Fungsi Lambda (membutuhkan GGC v1.10 atau yang 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 Read-only akses 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 pembelajaran mesin 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 properti ResourceAccessPolicies ini. 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. 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.

 

Non-containerized Fungsi Lambda (membutuhkan GGC v1.10 atau yang lebih baru)

Jika ada fungsi Lambda nonkontainerisasi terlampir pada sumber daya machine learning:

  • Untuk fungsi Lambda nonkontainerisasi, abaikan properti Permission di ResourceAccessPolicies. Konfigurasi ini diperlukan dan memungkinkan fungsi untuk mewarisi izin tingkat sumber daya. 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 di ResourceAccessPolicies atau tentukan izin yang sama atau lebih ketat sebagai izin tingkat sumber daya. 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 anak GroupOwner dan GroupPermission properti. 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

User-defined Fungsi Lambda menggunakan antarmuka OS khusus platform untuk mengakses sumber daya pembelajaran mesin pada perangkat inti.

GGC v1.10 or later

Untuk fungsi Lambda terkontainerisasi, sumber daya dipasang di dalam kontainer Greengrass dan tersedia di jalur tujuan lokal yang didefinisikan untuk sumber daya. Untuk fungsi Lambda non-kontainer, sumber daya disinkronkan ke direktori kerja dan diteruskan ke Lambda-specific variabel AWS_GG_RESOURCE_PREFIX lingkungan dalam proses Lambda.

Untuk mendapatkan jalur ke artefak yang diunduh dari sumber daya machine learning, fungsi Lambda menambahkan AWS_GG_RESOURCE_PREFIX ke jalur tujuan lokal yang ditetapkan untuk sumber daya. Untuk fungsi Lambda terkontainerisasi, nilai yang dikembalikan adalah garis miring tunggal (/).

resourcePath = os.getenv("AWS_GG_RESOURCE_PREFIX") + "/destination-path" with open(resourcePath, 'r') as f: # load_model(f)
GGC v1.9 or earlier

Artefak yang diunduh dari sumber machine learning terletak di jalur tujuan lokal yang ditentukan untuk sumber daya. Hanya fungsi Lambda terkontainerisasi yang dapat mengakses sumber daya machine learning di Core AWS IoT Greengrass v1.9 dan sebelumnya.

resourcePath = "/local-destination-path" with open(resourcePath, 'r') as f: # load_model(f)

Implementasi pemuatan model Anda tergantung pada perpustakaan ML Anda.

Pemecahan masalah

Gunakan informasi berikut untuk membantu memecahkan masalah dengan mengakses sumber daya machine learning.

InvalidMLModelOwner - GroupOwnerSetting disediakan dalam sumber daya model ML, tetapi GroupOwner atau tidak GroupPermission 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 id sumber daya Machine Learnin dengan izin dalam kebijakan < akses sumber daya>. < ro/rw >

Solusi: Anda menerima kesalahan ini jika fungsi Lambda yang tidak terkontainer menentukan izin tingkat fungsi ke sumber pembelajaran mesin. Non-containerized fungsi harus mewarisi izin dari izin pemilik sumber daya yang ditentukan pada sumber pembelajaran mesin. Untuk mengatasi masalah ini, pilih untuk mewarisi izin pemilik sumber daya (konsol) atau menghapus izin dari fungsi Lambda sumber daya kebijakan akses (API).

 

Fungsi < fungsi-arn mengacu pada sumber daya > Machine Learning < resource-id > dengan izin yang hilang di keduanya dan sumber daya. ResourceAccessPolicy 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 < fungsi-arn mengacu pada sumber daya > Machine Learning < resource-id > dengan izin\ "rw\”, sedangkan pengaturan pemilik sumber daya hanya mengizinkan\ "ro\”. GroupPermission

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 < fungsi-arn > mengacu pada sumber daya dari 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.

 

<Fungsi Lambda > mendapatkan akses ke id sumber daya sumber daya dengan membagikan 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 otorisasi. AWS IoT Greengrass

Untuk mengatasi masalah ini, gunakan grup OS yang berbeda untuk salah satu properti atau melampirkan sumber daya machine learning untuk fungsi Lambda.

Lihat juga