Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan Skrip Sesi untuk Mengelola Pengalaman AppStream Streaming Pengguna 2.0 Anda
AppStream 2.0 menyediakan skrip sesi on-instance. Anda dapat menggunakan skrip ini untuk menjalankan skrip kustom Anda sendiri ketika peristiwa tertentu terjadi dalam sesi streaming pengguna. Misalnya, Anda dapat menggunakan skrip khusus untuk mempersiapkan lingkungan AppStream 2.0 Anda sebelum sesi streaming pengguna Anda dimulai. Anda juga dapat menggunakan skrip khusus untuk membersihkan instance streaming setelah pengguna menyelesaikan sesi streaming mereka.
Skrip sesi ditentukan dalam gambar AppStream 2.0. Skrip ini dijalankan dalam konteks pengguna atau konteks sistem. Jika skrip sesi Anda menggunakan standar keluar untuk menulis informasi, kesalahan, atau men-debug pesan, skrip ini dapat disimpan secara opsional ke bucket Amazon S3 dalam akun Amazon Web Services Anda.
Daftar Isi
- Jalankan Skrip Sebelum Sesi Streaming Dimulai
- Jalankan Skrip Setelah Sesi Streaming Berakhir
- Buat dan Tentukan Skrip Sesi
- File Konfigurasi Skrip Sesi
- Menggunakan PowerShell File Windows
- Keluaran Skrip Sesi Pencatatan
- Gunakan Konektor Penyimpanan dengan Skrip Sesi
- Aktifkan Penyimpanan Bucket Amazon S3 untuk Log Skrip Sesi
- Gunakan Skrip Sesi pada Armada Multi-Sesi
Jalankan Skrip Sebelum Sesi Streaming Dimulai
Anda dapat mengonfigurasi skrip agar berjalan maksimal 60 detik sebelum aplikasi pengguna diluncurkan dan sesi streaming mereka dimulai. Melakukannya memungkinkan Anda untuk menyesuaikan lingkungan AppStream 2.0 sebelum pengguna mulai streaming aplikasi mereka. Saat skrip sesi berjalan, spinner pemuatan akan ditampilkan untuk pengguna Anda. Ketika skrip Anda berhasil diselesaikan atau waktu tunggu maksimum berlalu, sesi streaming pengguna Anda akan dimulai. Jika skrip Anda tidak berhasil diselesaikan, pesan kesalahan akan ditampilkan untuk pengguna Anda. Namun, pengguna Anda tidak dicegah menggunakan sesi streaming mereka.
Saat Anda menentukan nama file pada instance Windows, Anda harus menggunakan garis miring terbalik ganda. Sebagai contoh:
C:\\ Skrip\\ Myscript.bat
Jika Anda tidak menggunakan garis miring terbalik ganda, kesalahan akan ditampilkan untuk memberi tahu Anda bahwa file.json salah diformat.
catatan
Ketika skrip Anda berhasil diselesaikan, mereka harus mengembalikan nilai 0. Jika skrip Anda mengembalikan nilai selain 0, AppStream 2.0 menampilkan pesan kesalahan kepada pengguna.
Ketika Anda menjalankan skrip sebelum sesi streaming dimulai dan kerangka kerja aplikasi dinamis AppStream 2.0 tidak diaktifkan, proses berikut terjadi:
-
Pengguna Anda terhubung ke instance armada AppStream 2.0 yang tidak bergabung dengan domain. Mereka terhubung dengan menggunakan salah satu metode akses berikut:
-
AppStream 2.0 kolam pengguna
-
SAML 2.0
-
AppStream 2.0 API
-
-
Katalog aplikasi ditampilkan di portal AppStream 2.0, dan pengguna Anda memilih aplikasi untuk diluncurkan.
-
Salah satu hal berikut terjadi:
-
Jika persistensi pengaturan aplikasi diaktifkan untuk pengguna Anda, file pengaturan aplikasi Virtual Hard Disk (VHD) yang menyimpan penyesuaian pengguna Anda dan pengaturan Windows diunduh dan dipasang. Login pengguna Windows diperlukan dalam kasus ini.
Untuk informasi tentang persistensi setelan aplikasi, lihatAktifkan Pengaturan Aplikasi Persistence untuk Pengguna AppStream 2.0 Anda.
-
Jika persistensi pengaturan aplikasi tidak diaktifkan, pengguna Windows sudah masuk.
-
-
Skrip sesi Anda dimulai. Jika penyimpanan persisten diaktifkan untuk pengguna Anda, pemasangan konektor penyimpanan juga dimulai. Untuk informasi tentang penyimpanan persisten, lihatAktifkan dan Kelola Penyimpanan Persisten untuk Pengguna AppStream 2.0 Anda.
catatan
Pemasangan konektor penyimpanan tidak perlu diselesaikan agar sesi streaming dimulai. Jika skrip sesi selesai sebelum pemasangan konektor penyimpanan selesai, sesi streaming dimulai.
Untuk informasi tentang memantau status pemasangan konektor penyimpanan, lihatGunakan Konektor Penyimpanan dengan Skrip Sesi.
-
Skrip sesi Anda selesai atau habis waktu.
-
Sesi streaming pengguna dimulai.
-
Aplikasi yang dipilih pengguna Anda diluncurkan.
Untuk informasi tentang kerangka kerja aplikasi dinamis AppStream 2.0, lihatMenggunakan AppStream 2.0 Dynamic Application Framework untuk Membangun Penyedia Aplikasi Dinamis.
Saat Anda menjalankan skrip sebelum sesi streaming dimulai dan kerangka kerja aplikasi dinamis AppStream 2.0 diaktifkan, proses berikut terjadi:
-
Pengguna Anda mengunjungi portal aplikasi SAMP 2.0 untuk organisasi Anda, dan mereka memilih tumpukan AppStream 2.0.
-
Mereka terhubung ke instance armada AppStream 2.0 yang bergabung dengan domain.
-
Jika persistensi pengaturan aplikasi diaktifkan untuk pengguna Anda, file VHD pengaturan aplikasi yang menyimpan penyesuaian pengguna Anda dan pengaturan Windows diunduh dan dipasang.
-
Logon pengguna Windows terjadi.
-
Katalog aplikasi ditampilkan di portal AppStream 2.0 dan pengguna Anda memilih aplikasi untuk diluncurkan.
-
Skrip sesi Anda dimulai. Jika penyimpanan persisten diaktifkan untuk pengguna Anda, pemasangan konektor penyimpanan juga dimulai.
catatan
Pemasangan konektor penyimpanan tidak perlu diselesaikan agar sesi streaming dimulai. Jika skrip sesi selesai sebelum pemasangan konektor penyimpanan selesai, sesi streaming dimulai.
Untuk informasi tentang memantau status pemasangan konektor penyimpanan, lihatGunakan Konektor Penyimpanan dengan Skrip Sesi.
-
Skrip sesi Anda selesai atau habis waktu.
-
Sesi streaming pengguna dimulai.
-
Aplikasi yang dipilih pengguna Anda diluncurkan.
Jalankan Skrip Setelah Sesi Streaming Berakhir
Anda juga dapat mengonfigurasi skrip agar berjalan setelah sesi streaming pengguna berakhir. Misalnya, Anda dapat menjalankan skrip saat pengguna memilih End Session dari toolbar AppStream 2.0, atau ketika mereka mencapai durasi maksimum yang diizinkan untuk sesi tersebut. Anda juga dapat menggunakan skrip sesi ini untuk membersihkan lingkungan AppStream 2.0 Anda sebelum instance streaming dihentikan. Misalnya, Anda dapat menggunakan skrip untuk melepaskan kunci file atau mengunggah file log. Saat Anda menjalankan skrip setelah sesi streaming berakhir, proses berikut terjadi:
-
Sesi streaming AppStream 2.0 pengguna Anda berakhir.
-
Skrip penghentian sesi Anda dimulai.
-
Skrip penghentian sesi selesai atau habis waktu.
-
Terjadi logout pengguna Windows.
-
Salah satu atau kedua hal berikut terjadi secara paralel, jika berlaku:
-
Jika persistensi pengaturan aplikasi diaktifkan untuk pengguna Anda, file VHD pengaturan aplikasi yang menyimpan penyesuaian dan pengaturan Windows pengguna Anda dilepas dan diunggah ke bucket Amazon S3 di akun Anda.
-
Jika penyimpanan persisten diaktifkan untuk pengguna Anda, konektor penyimpanan menyelesaikan sinkronisasi akhir dan dilepas.
-
-
Instance armada dihentikan.
Buat dan Tentukan Skrip Sesi
Anda dapat mengonfigurasi dan menentukan skrip sesi untuk armada Always-on, On-Demand, dan Elastic.
Untuk mengonfigurasi dan menentukan skrip sesi untuk armada Always-on dan On-Demand
Buka konsol AppStream 2.0 di https://console.aws.amazon.com/appstream2
. -
Di panel navigasi, pilih Images, Image Builder.
-
Pilih pembuat gambar yang berada dalam status Running, dan pilih Connect.
-
Saat diminta, pilih Administrator.
-
Arahkan ke
C:\AppStream\SessionScripts
, dan buka fileconfig.json
konfigurasi.Untuk informasi tentang parameter skrip sesi, lihatFile Konfigurasi Skrip Sesi.
-
Setelah Anda selesai membuat perubahan, simpan dan tutup
config.json
file. -
Pada desktop pembuat gambar, buka Asisten Gambar.
-
(Opsional) Tentukan aplikasi tambahan apa pun yang ingin Anda sertakan dalam gambar.
-
Ikuti langkah-langkah yang diperlukan di Image Assistant untuk menyelesaikan pembuatan gambar Anda.
Jika konfigurasi skrip sesi tidak dapat divalidasi (misalnya, jika file.json tidak diformat dengan benar), Anda akan diberi tahu saat memilih Putuskan sambungan dan buat gambar.
catatan
Untuk menemukan file konfigurasi skrip sesi untuk pembuat gambar berbasis Linux, navigasikan ke.
/opt/appstream/SessionScripts/config.json
Untuk mengkonfigurasi dan menentukan skrip sesi untuk armada Elastis
-
Buat file zip yang berisi skrip sesi dan file config.json. File skrip akan disalin ke lokasi berikut. Anda harus menggunakan lokasi ini untuk config.json Anda.
-
Untuk Windows, gunakan
C:\AppStream\SessionScripts\
.SessionScript
-
Untuk Linux, gunakan
/opt/appstream/SessionScripts/
.SessionScript
catatan
Untuk menjalankan file skrip sesi, pastikan bahwa file.zip hanya berisi skrip sesi dan
config.json
file, dan bukan folder yang berisi. Untuk informasi selengkapnya, lihat File Konfigurasi Skrip Sesi. -
-
Unggah file zip ke bucket Amazon S3 di akun Anda.
catatan
VPC Anda harus menyediakan akses ke bucket Amazon S3. Untuk informasi selengkapnya, lihat Menggunakan Titik Akhir VPC Amazon S3 untuk Fitur 2.0 AppStream .
Anda harus memiliki bucket S3 dan armada AppStream 2.0 yang sama Wilayah AWS.
Anda harus memiliki izin IAM untuk melakukan
S3:GetObject
tindakan pada objek skrip sesi di bucket Amazon S3. Untuk mempelajari selengkapnya tentang menyimpan skrip sesi di bucket Amazon S3, lihat. Simpan Ikon Aplikasi, Skrip Pengaturan, Skrip Sesi, dan VHD dalam Bucket S3 Buka konsol AppStream 2.0 di https://console.aws.amazon.com/appstream2
. -
Di panel navigasi, pilih Armada.
-
Pilih armada Elastic yang ingin Anda perbarui, lalu pilih Lihat Detail.
-
Pada tab Pengaturan skrip sesi, pilih Edit.
-
Untuk objek skrip Sesi di S3, masukkan URI S3 yang mewakili objek skrip sesi, atau pilih Browse S3 untuk menavigasi ke bucket S3 Anda dan temukan objek skrip sesi.
-
Setelah Anda selesai membuat perubahan, pilih Simpan Perubahan.
-
Pada titik ini, skrip sesi tersedia untuk semua instance armada yang diluncurkan.
catatan
Anda juga dapat mengonfigurasi skrip sesi saat membuat armada Elastis baru.
File Konfigurasi Skrip Sesi
Untuk menemukan file konfigurasi skrip sesi dalam instance Windows, navigasikan ke C:\\ AppStreamSessionScripts\ config.json. Pada instance Linux, navigasikan ke /opt/appstream/ SessionScripts /config.json. File diformat sebagai berikut.
catatan
File konfigurasi dalam format.json. Verifikasi bahwa teks apa pun yang Anda ketik dalam file ini dalam format.json yang valid.
{ "SessionStart": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 }, "SessionTermination": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 } }
Anda dapat menggunakan parameter berikut dalam file konfigurasi skrip sesi.
SessionStart/SessionTermination
-
Skrip sesi untuk dijalankan dalam acara sesi yang sesuai berdasarkan nama objek.
Tipe: String
Wajib: Tidak
Nilai yang diizinkan:
SessionStart
,SessionTermination
WaitingTime
-
Durasi maksimum skrip sesi dalam hitungan detik.
Tipe: Integer
Wajib: Tidak
Kendala: Durasi maksimum adalah 60 detik. Jika skrip sesi tidak selesai dalam durasi ini, skrip tersebut akan dihentikan. Jika Anda memerlukan skrip untuk terus berjalan, luncurkan sebagai proses terpisah.
Dapat dieksekusi
-
Detail untuk menjalankan skrip sesi.
Tipe: String
Wajib: Ya
Kendala: Jumlah maksimum skrip yang dapat dijalankan per acara sesi adalah 2 (satu untuk konteks pengguna, satu untuk konteks sistem).
Konteks
-
Konteks di mana untuk menjalankan skrip sesi.
Tipe: String
Wajib: Ya
Nilai yang diizinkan:
user
,system
Nama berkas
-
Jalur lengkap ke skrip sesi untuk dijalankan. Jika parameter ini tidak ditentukan, skrip sesi tidak dijalankan.
Tipe: String
Wajib: Tidak
Kendala: Panjang maksimum untuk nama file dan jalur lengkap adalah 1.000 karakter.
Nilai yang diizinkan:
.bat
,.exe
,.sh
catatan
Anda juga dapat menggunakan PowerShell file Windows. Untuk informasi selengkapnya, lihat Menggunakan PowerShell File Windows.
Argumen
-
Argumen untuk skrip sesi Anda atau file yang dapat dieksekusi.
Tipe: String
Wajib: Tidak
Kendala panjang: Panjang maksimum adalah 1.000 karakter.
S3 LogEnabled
-
Ketika nilai untuk parameter ini disetel ke
True
, bucket S3 dibuat dalam akun Amazon Web Services Anda untuk menyimpan log yang dibuat oleh skrip sesi. Secara default, nilai ini diatur keTrue
. Untuk informasi selengkapnya, lihat bagian Keluaran Skrip Sesi Pencatatan nanti dalam topik ini.Tipe: Boolean
Wajib: Tidak
Nilai yang diizinkan:
True
,False
Menggunakan PowerShell File Windows
Untuk menggunakan PowerShell file Windows, tentukan jalur lengkap ke PowerShell file dalam filename
parameter:
"filename": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
Kemudian tentukan skrip sesi Anda di arguments
parameter:
"arguments": "-File \"C:\\path\\to\\session\\script.ps1\"",
Terakhir, verifikasi bahwa Kebijakan PowerShell Eksekusi memungkinkan PowerShell file Anda berjalan.
Keluaran Skrip Sesi Pencatatan
Ketika opsi ini diaktifkan dalam file konfigurasi, AppStream 2.0 secara otomatis menangkap output dari skrip sesi yang ditulis ke standar keluar. Output ini diunggah ke bucket Amazon S3 di akun Anda. Anda dapat meninjau file log untuk tujuan pemecahan masalah atau debugging.
catatan
File log diunggah saat skrip sesi mengembalikan nilai, atau nilai yang ditetapkan WaitingTime
telah berlalu, mana yang lebih dulu.
Gunakan Konektor Penyimpanan dengan Skrip Sesi
Ketika konektor penyimpanan AppStream 2.0 diaktifkan, mereka mulai dipasang saat skrip mulai sesi berjalan. Jika skrip Anda bergantung pada konektor penyimpanan yang dipasang, Anda dapat menunggu konektor tersedia. AppStream 2.0 mempertahankan status pemasangan konektor penyimpanan di registri Windows pada instance Windows, pada tombol berikut:
<provided user name>HKEY_LOCAL_MACHINE\ PERANGKAT LUNAK\ Amazon\\ Penyimpanan\\ AppStream <Storage connector>
Nilai kunci registri adalah sebagai berikut:
-
Nama pengguna yang disediakan — ID pengguna yang disediakan melalui mode akses. Mode akses dan nilai untuk setiap mode adalah sebagai berikut:
-
User Pool — Alamat email untuk pengguna
-
URL Streaming — UserID
-
SALL — NameID. Jika nama pengguna menyertakan garis miring (misalnya, SAM pengguna domainAccountName), garis miring diganti dengan karakter “-”.
-
-
Konektor penyimpanan — Konektor untuk opsi penyimpanan persisten yang diaktifkan untuk pengguna. Nilai konektor penyimpanan adalah sebagai berikut:
-
HomeFolder
-
GoogleDrive
-
OneDrive
-
Setiap kunci registri konektor penyimpanan berisi nilai MountStatusDWORD. Tabel berikut mencantumkan nilai yang mungkin untuk MountStatus.
catatan
Untuk melihat kunci registri ini, Anda harus memiliki Microsoft .NET Framework versi 4.7.2 atau yang lebih baru diinstal pada gambar Anda.
Nilai | Deskripsi |
---|---|
0 |
Konektor penyimpanan tidak diaktifkan untuk pengguna ini |
1 |
Pemasangan konektor penyimpanan sedang berlangsung |
2 |
Konektor penyimpanan berhasil dipasang |
3 |
Pemasangan konektor penyimpanan gagal |
4 |
Pemasangan konektor penyimpanan diaktifkan, tetapi belum dipasang |
Pada instance Linux, Anda dapat memeriksa status pemasangan folder rumah dengan melihat nilai appstream_home_folder_mount_status dalam file ~/.config//-status. appstream-home-folder appstream-home-folder-mount
Nilai | Deskripsi |
---|---|
Benar |
Folder rumah berhasil dipasang |
Salah | Folder rumah belum terpasang |
Aktifkan Penyimpanan Bucket Amazon S3 untuk Log Skrip Sesi
Saat Anda mengaktifkan pencatatan Amazon S3 dalam konfigurasi skrip sesi, AppStream 2.0 menangkap output standar dari skrip sesi Anda. Output diunggah secara berkala ke bucket S3 dalam akun Amazon Web Services Anda. Untuk setiap AWS Wilayah, AppStream 2.0 membuat bucket di akun Anda yang unik untuk akun Anda dan Wilayah.
Anda tidak perlu melakukan tugas konfigurasi apa pun untuk mengelola bucket S3 ini. Mereka sepenuhnya dikelola oleh layanan AppStream 2.0. File log yang disimpan di setiap bucket dienkripsi saat transit menggunakan titik akhir SSL Amazon S3 dan diam menggunakan kunci enkripsi yang dikelola Amazon S3. Ember diberi nama dalam format tertentu sebagai berikut:
appstream-logs-region-code
-account-id-without-hyphens
-random-identifier
kode wilayah
-
Ini adalah kode AWS Wilayah tempat tumpukan dibuat dengan penyimpanan bucket Amazon S3 yang diaktifkan untuk log skrip sesi.
account-id-without-hyphens
-
Pengenal akun Amazon Web Services Anda. ID acak memastikan bahwa tidak ada konflik dengan bucket lain di Wilayah itu. Bagian pertama dari nama bucket,
appstream-logs
, tidak berubah di seluruh akun atau Wilayah.
Misalnya, jika Anda menentukan skrip sesi dalam gambar di Wilayah AS Barat (Oregon) (us-barat-2) pada nomor akun 123456789012, AppStream 2.0 akan membuat bucket Amazon S3 dalam akun Anda di Wilayah tersebut dengan nama yang ditampilkan. Hanya administrator dengan izin yang cukup yang dapat menghapus bucket ini.
appstream-logs-us-west-2-1234567890123-abcdefg
Menonaktifkan skrip sesi tidak menghapus file log apa pun yang disimpan di bucket S3. Untuk menghapus file log secara permanen, Anda atau administrator lain dengan izin yang memadai harus melakukannya dengan menggunakan konsol Amazon S3 atau API. AppStream 2.0 menambahkan kebijakan bucket yang mencegah penghapusan bucket secara tidak sengaja. Untuk informasi selengkapnya, lihat Kebijakan IAM dan Bucket Amazon S3 untuk Ketekunan Setelan Aplikasi di. Identity and Access Management untuk Amazon AppStream 2.0
Saat skrip sesi diaktifkan, folder unik dibuat untuk setiap sesi streaming yang dimulai.
Jalur untuk folder tempat file log disimpan di bucket S3 di akun Anda menggunakan struktur berikut:
bucket-name
/stack-name
/fleet-name
/access-mode
/user-id-SHA-256-hash
/session-id
/SessionScriptsLogs/session-event
nama-ember
-
Nama bucket S3 tempat skrip sesi disimpan. Format nama dijelaskan sebelumnya di bagian ini.
nama-tumpukan
-
Nama tumpukan sesi berasal.
nama armada
-
Nama armada tempat skrip sesi berjalan.
modus akses
-
Metode identitas pengguna:
custom
untuk AppStream 2.0 API atau CLI,federated
untuk SAMP, danuserpool
untuk pengguna di kumpulan pengguna. ID pengguna-SHA-256-hash
-
Nama folder khusus pengguna. Nama ini dibuat menggunakan string heksadesimal hash SHA-256 huruf kecil yang dihasilkan dari pengenal pengguna.
session-id
-
Pengidentifikasi sesi streaming pengguna. Setiap sesi streaming pengguna menghasilkan ID unik.
sesi-acara
-
Peristiwa yang menghasilkan log skrip sesi. Nilai acara adalah:
SessionStart
danSessionTermination
.
Struktur folder contoh berikut berlaku untuk sesi streaming yang dimulai dari test-stack dan test-fleet. Sesi ini menggunakan API ID penggunatestuser@mydomain.com
, dari Akun AWS ID dari123456789012
, dan grup pengaturan test-stack
di Wilayah AS Barat (Oregon) (us-barat-2):
appstream-logs-us-west-2-1234567890123-abcdefg/test-stack/test-fleet/custom/a0bcb1da11f480d9b5b3e90f91243143eac04cfccfbdc777e740fab628a1cd13/05yd1391-4805-3da6-f498-76f5x6746016/SessionScriptsLogs/SessionStart/
Struktur folder contoh ini berisi satu file log untuk skrip awal sesi konteks pengguna, dan satu file log untuk skrip awal sesi konteks sistem, jika berlaku.
Gunakan Skrip Sesi pada Armada Multi-Sesi
Saat menggunakan skrip sesi pada armada multi-sesi, ada persyaratan dan pertimbangan tambahan untuk memastikan kinerja dan keamanan yang optimal.
Persyaratan
Pada armada satu sesi, untuk contoh tertentu, SessionStartdan SessionTerminationkait dijamin hanya berjalan satu kali. Ini karena ada pemetaan sesi 1:1 ke instance. Saat menggunakan armada multi-sesi, ada pemetaan sesi N:M ke instance, di mana setiap sesi berjalan sendiri dan mengaitkannya. SessionStartSessionTermination Ini berarti bahwa SessionStartdan SessionTerminationkait dapat dijalankan berkali-kali pada contoh tertentu, dan dalam banyak urutan yang berbeda. Untuk pengalaman terbaik, berikut ini harus berlaku untuk skrip sesi Anda saat digunakan pada armada multi-sesi:
-
Skrip adalah idempoten.
Ketika suatu tindakan telah dilakukan, skrip harus menangani lebih dari satu eksekusi pada instance yang sama dengan penanganan yang anggun.
-
Skrip bersifat independen.
Karena skrip berjalan per sesi, jika satu sesi berjalan SessionTerminationsementara yang lain sedang berjalan SessionStart, mereka tidak boleh mengganggu satu sama lain, atau dengan pengalaman sesi lain.
-
Skrip berkinerja.
Pada instance multi-sesi, beberapa sesi dapat disediakan secara bersamaan. Ini berarti bahwa mungkin ada beberapa eksekusi bersamaan dari skrip sesi. Skrip harus efisien, tidak mengkonsumsi sumber daya yang berlebihan, dan tidak memengaruhi pengalaman pengguna lain pada instance atau stabilitas sesi.
Banyak dari persyaratan ini dapat dipenuhi dengan menjaga logika skrip sesi terfokus pada sesi pengguna tertentu yang menjalankan skrip.
Pertimbangan Keamanan
AppStream Gambar 2.0 tidak boleh dikonfigurasi untuk mengizinkan izin menulis ke file skrip sesi oleh pengguna mana pun. Ini memperkenalkan vektor serangan kritis untuk pengguna jahat, di mana mereka dapat memodifikasi file skrip. File-file ini kemudian dapat dijalankan sebagai SYSTEM atau pengguna lain, tergantung pada konfigurasi Anda.
penting
Adalah tanggung jawab Anda untuk memastikan bahwa gambar AppStream 2.0 Anda dikonfigurasi dengan aman. Ini sangat penting untuk instance multi-sesi, di mana banyak pengguna menggunakan instance yang sama. Jika gambar tidak dikonfigurasi dengan aman, ada risiko keamanan untuk semua pengguna instance tersebut.
Berikut ini harus benar dari gambar dan file skrip sesi Anda:
-
Pengguna tidak memiliki izin untuk memodifikasi file skrip sesi.
-
Pengguna tidak memiliki izin untuk memodifikasi skrip sesi config.json. Perilaku default pada gambar membatasi akses ke administrator.
Skrip sesi yang dapat dieksekusi harus disimpan di lokasi yang aman di mana mereka aman dari modifikasi saat runtime.
Jika layanan mendeteksi bahwa skrip sesi yang dapat dieksekusi telah dimodifikasi, itu akan gagal setiap eksekusi berikutnya dari hook itu pada instance itu, unggah file log ke Amazon S3 (jika pencatatan Amazon S3 diaktifkan), dan Anda akan melihat pesan berikut:
Skrip sesi tidak dijalankan karena executable dimodifikasi setelah penyediaan instance. Eksekusi dilewati untuk keamanan.
Jika kasus penggunaan Anda memerlukan modifikasi skrip sesi yang dapat dieksekusi pada waktu berjalan (misalnya, jika Anda menunjuk ke file EXE yang dimodifikasi oleh proses pembaruan otomatis saat runtime), ini akan gagal dalam pemeriksaan di atas. Dalam hal ini, gunakan skrip untuk mengarahkan eksekusi ke executable yang dimodifikasi. Biarkan skrip tidak dimodifikasi saat runtime saat layanan melakukan pemeriksaan keamanan.
Jika file skrip sesi Anda terlalu besar (lebih dari 100 MB), ini dapat menyebabkan penundaan dalam penyediaan instance dan sesi, dan pemeriksaan keamanan akan memakan waktu tambahan (tergantung pada jenis instans dan sumber daya yang tersedia). Jika kasus penggunaan Anda memerlukan skrip sesi besar, pertimbangkan untuk menggunakan skrip yang lebih kecil untuk mengarahkan eksekusi. Ini akan meningkatkan pengalaman penyediaan instance dan sesi.
Perhatikan bahwa layanan hanya memeriksa executable yang ditentukan dalam skrip sesi config.json, dan ini hanya mekanisme fallback/best effort. Adalah tanggung jawab Anda untuk memastikan bahwa semua jalur kode dalam skrip sesi yang dapat dieksekusi aman dan tidak dapat dimodifikasi oleh pengguna akhir.