Konektor deployment aplikasi docker - 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.

Konektor deployment aplikasi docker

Konektor deployment aplikasi Docker Greengrass membuatnya lebih mudah untuk menjalankan gambar Docker Anda pada AWS IoT Greengrass core. Konektor menggunakan Docker Compose untuk memulai aplikasi Docker multi-kontainer dari docker-compose.yml file. Khususnya, konektor menjalankan docker-compose perintah untuk mengelola kontainer Docker pada perangkat core tunggal. Untuk informasi lebih lanjut, lihat Gambaran umum Docker Compose dalam dokumentasi Docker. Konektor dapat mengakses gambar Docker dipertahankan dalam pendaftar kontainer Docker, seperti Amazon Elastic Container Registry (Amazon ECR), Docker Hub, dan Docker pribadi pendaftar terpercaya.

Setelah Anda menerapkan grup Greengrass, konektor menarik gambar terbaru dan mulai kontainer Docker. Ini menjalankan docker-compose pull dan docker-compose up perintah. Kemudian, konektor menerbitkan status perintah ke topik MQTT output. Ini juga log informasi status tentang menjalankan kontainer Docker. Ini memungkinkan Anda untuk memantau log aplikasi Anda di Amazon CloudWatch. Untuk informasi selengkapnya, lihat Pemantauan dengan AWS IoT Greengrass log. Konektor juga mulai kontainer Docker setiap kali Greengrass daemon restart. Jumlah kontainer Docker yang dapat berjalan pada core tergantung pada hardware Anda.

Kontainer Docker berjalan dalam luar domain Greengrass pada perangkat core, sehingga mereka tidak dapat mengakses inter-process communication (IPC) core. Namun, Anda dapat mengonfigurasi beberapa saluran komunikasi dengan komponen Greengrass, seperti fungsi Lambda lokal. Untuk informasi lebih lanjut, lihat Berkomunikasi dengan kontainer Docker.

Anda dapat menggunakan konektor untuk skenario seperti hosting web server atau server MySQL pada perangkat core Anda. Layanan lokal dalam aplikasi Docker Anda dapat berkomunikasi satu sama lain, proses lain dalam lingkungan lokal, dan layanan cloud. Sebagai contoh, Anda dapat menjalankan server web pada core yang mengirimkan permintaan dari fungsi Lambda ke layanan web dalam cloud.

Konektor ini berjalan dalam mode isolasi Tanpa kontainer ini, sehingga Anda dapat men-deploy ke grup Greengrass yang berjalan tanpa kontainerisasi Docker.

Konektor ini memiliki versi berikut.

Versi

ARN

7

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/7

6

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/6

5

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5

4

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/4

3

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/3

2

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/2

1

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/1

Untuk informasi tentang perubahan versi, lihat Changelog.

Persyaratan

Konektor ini memiliki persyaratan sebagai berikut:

  • AWS IoT Greengrass perangkat lunak Core v1.10 atau yang lebih baru.

    catatan

    Konektor ini tidak didukung pada OpenWrt distribusi.

  • Python versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

    catatan

    Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.

  • Minimal 36 MB RAM pada core Greengrass untuk konektor untuk memantau menjalankan kontainer Docker. Kebutuhan memori total tergantung pada jumlah kontainer Docker yang berjalan pada core.

  • Mesin Docker 1.9.1 atau yang lebih baru dipasang pada core Greengrass. Versi 19.0.3 adalah versi terkini yang disahkan untuk berfungsi dengan konektor.

    Executable docker harus berada dalam direktori /usr/bin atau /usr/local/bin ini.

    penting

    Kami sarankan Anda menginstal toko kredensial untuk mengamankan salinan lokal kredensial Docker Anda. Untuk informasi lebih lanjut, lihat Catatan keamanan.

    Untuk informasi tentang menginstal Docker pada distribusi Amazon Linux, lihat Dasar-dasar Docker untuk Amazon ECS dalam Panduan Pengembang Layanan Kontainer Amazon Elastic.

  • Docker Compose dipasang pada core Greengrass. Executable docker-compose harus berada dalam direktori /usr/bin atau /usr/local/bin ini.

    Versi Docker Compose berikut diverifikasi untuk bekerja dengan konektor.

    Versi konektor

    Versi Docker Diverifikasi

    7

    1.25.4

    6

    1.25.4

    5

    1.25.4

    4

    1.25.4

    3

    1.25.4

    2

    1.25.1

    1

    1.24.1

  • Satu Docker Compose file (sebagai contoh, docker-compose.yml), dipertahankan dalam Amazon Simple Storage Service (Amazon S3). Format harus kompatibel dengan versi Docker Compose diinstal pada core. Anda harus menguji file sebelum Anda menggunakannya pada core Anda. Jika Anda mengedit file setelah Anda menerapkan grup Greengrass, Anda harus terapkan ulang grup untuk memperbarui salinan lokal Anda pada core.

  • Pengguna Linux dengan izin untuk memanggil daemon Docker lokal dan menulis ke direktori yang menyimpan salinan lokal file Compose Anda. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core.

  • Peran grup Greengrass dikonfigurasi untuk mengizinkan s3:GetObject tindakan pada bucket S3 yang berisi file Compose Anda. Izin ini ditampilkan dalam kebijakan IAM contoh berikut.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToComposeFileS3Bucket", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Effect": "Allow", "Resource": "arn:aws:s3:::bucket-name/*" } ] }
    catatan

    Jika bucket S3 adalah versioning diaktifkan, maka peran harus dikonfigurasi untuk mengizinkan s3:GetObjectVersion tindakan juga. Untuk informasi selengkapnya, lihat Menggunakan versi di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

  • Jika Docker Compose file Anda mereferensikan citra Docker dipertahankan dalam Amazon ECR, peran grup Greengrass dikonfigurasi untuk mengizinkan berikut ini:

    • ecr:GetDownloadUrlForLayer dan ecr:BatchGetImage tindakan pada repositori Amazon ECR yang berisi gambar Docker.

    • ecr:GetAuthorizationToken tindakan pada sumber daya Anda.

    Repositori harus sama Akun AWS dan Wilayah AWS sebagai konektor.

    penting

    Izin dalam peran grup dapat diasumsikan oleh semua fungsi Lambda dan konektor dalam grup Greengrass. Untuk informasi selengkapnya, lihat Catatan keamanan.

    Izin-izin ini ditunjukkan pada kebijakan contoh berikut.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetEcrRepositories", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": [ "arn:aws:ecr:region:account-id:repository/repository-name" ] }, { "Sid": "AllowGetEcrAuthToken", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

    Untuk informasi lebih lanjut, lihat Contoh kebijakan repositori Amazon ECR dalam Panduan Pengguna Amazon ECR.

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

  • Jika file Docker Compose Anda mereferensikan gambar Docker dari AWS Marketplace, konektor juga memiliki persyaratan sebagai berikut:

    • Anda harus berlangganan AWS Marketplace produk kontainer. Untuk informasi lebih lanjut, lihat Menemukan dan berlangganan produk kontainer dalam AWS Marketplace Panduan Pelanggan.

    • AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam Persyaratan Rahasia. Konektor menggunakan fitur ini hanya untuk mengambil rahasia Anda dari AWS Secrets Manager, bukan untuk menyimpannya.

    • Anda harus membuat rahasia dalam Secrets Manager untuk setiap registri AWS Marketplace yang menyimpan citra Docker direferensikan dalam file Compose Anda. Untuk informasi selengkapnya, lihat Mengakses gambar Docker dari repositori pribadi.

  • Jika file Docker Compose Anda mereferensikan gambar Docker dari repositori pribadi dalam pendaftar selain Amazon ECR, seperti Docker Hub, konektor juga memiliki persyaratan sebagai berikut:

    • AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam Persyaratan Rahasia. Konektor menggunakan fitur ini hanya untuk mengambil rahasia Anda dari AWS Secrets Manager, bukan untuk menyimpannya.

    • Anda harus membuat rahasia dalam Secrets Manager untuk setiap repositori pribadi yang menyimpan gambar Docker direferensikan dalam file Compose Anda. Untuk informasi selengkapnya, lihat Mengakses gambar Docker dari repositori pribadi.

  • Docker daemon harus berjalan ketika Anda menerapkan grup Greengrass yang berisi konektor ini.

Mengakses gambar Docker dari repositori pribadi

Jika Anda menggunakan kredensial untuk mengakses gambar Docker Anda, maka Anda harus mengizinkan konektor untuk mengaksesnya. Cara Anda melakukannya tergantung dalam mana gambar Docker berada.

Untuk gambar Docker dipertahankan Amazon ECR, Anda memberikan izin untuk mendapatkan token otorisasi Anda dalam peran grup Greengrass. Untuk informasi selengkapnya, lihat Persyaratan.

Untuk gambar Docker yang dipertahankan dalam repositori atau pendaftar pribadi lainnya, Anda harus membuat rahasia dalam AWS Secrets Manager untuk menyimpan informasi login Anda. Ini termasuk gambar Docker yang Anda langgani dalam AWS Marketplace. Buat satu rahasia untuk setiap repositori. Jika Anda memperbarui rahasia Anda dalam Secrets Manager, perubahan menyebar ke core waktu berikutnya bahwa Anda men-deploy grup.

catatan

Secrets Manager adalah layanan yang dapat Anda gunakan untuk aman menyimpan dan mengelola kredensial, kunci, dan rahasia lainnya dalam AWS Cloud. Untuk informasi lebih lanjut, lihat Apa AWS Secrets Manager? dalam AWS Secrets Manager Panduan Pengguna.

Setiap rahasia harus berisi kunci berikut:

Kunci

Nilai

username

Nama pengguna yang digunakan untuk mengakses repositori atau registri.

password

Kata sandi yang digunakan untuk mengakses repositori atau registri.

registryUrl

Titik akhir registri. Ini harus cocok dengan URL registri yang sesuai dalam file Compose.

catatan

Mengizinkan AWS IoT Greengrass untuk mengakses rahasia secara default, nama rahasia harus dimulai dengan Greengrass-. Jika tidak, peran layanan Greengrass Anda harus memberikan akses. Untuk informasi selengkapnya, lihat Mengizinkan AWS IoT Greengrass untuk mendapatkan nilai rahasia.

Untuk mendapatkan informasi login untuk gambar Docker dari AWS Marketplace
  1. Dapatkan kata sandi untuk gambar Docker darid AWS Marketplace dengan menggunakan aws ecr get-login-password perintah. Untuk informasi selengkapnya, lihat get-login-password dalam AWS CLI Referensi Perintah.

    aws ecr get-login-password
  2. Mengambil URL registri untuk gambar Docker. Buka situs AWS Marketplace web, dan buka halaman peluncuran produk kontainer. Di bawah Citra Kontainer, pilih Melihat detail gambar kontainer untuk menemukan nama pengguna dan URL registri.

Gunakan nama pengguna, sandi, dan URL registri yang diambil untuk membuat rahasia untuk setiap AWS Marketplace registri yang menyimpan gambar Docker direferensikan dalam file Compose Anda.

Untuk membuat rahasia (konsol)

Di AWS Secrets Manager konsol, pilih Jenis rahasia lainnya. Di bawah Tentukan pasangan nilai kunci yang akan dipertahankan untuk rahasia ini, tambahkan baris untuk username, password, dan registryUrl. Untuk informasi lebih lanjut, lihat Membuat rahasia dasar dalam AWS Secrets Manager Panduan Pengguna.

Membuat rahasia dengan username, sandi, dan kunci registryUrl.
Untuk membuat rahasia (CLI)

Di AWS CLI, gunakan perintah create-secret Secrets Manager, seperti yang ditunjukkan dalam contoh berikut. Untuk informasi lebih lanjut, lihat buat-bucket dalam AWS CLI Referensi Perintah.

aws secretsmanager create-secret --name greengrass-MySecret --secret-string [{"username":"Mary_Major"},{"password":"abc123xyz456"},{"registryUrl":"https://docker.io"}]
penting

Ini adalah tanggung jawab Anda untuk mengamankan DockerComposeFileDestinationPath direktori yang menyimpan file Docker Compose dan kredensial untuk gambar Docker Anda dari repositori pribadi. Untuk informasi selengkapnya, lihat Catatan keamanan.

Parameter

Konektor ini menyediakan parameter berikut:

Version 7
DockerComposeFileS3Bucket

Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti aturan nama bucket yang dijelaskan dalam Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Nama tampilan pada konsol AWS IoT tersebut: File Docker Compose dalam S3

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Kunci objek dan metadata di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid .+

DockerComposeFileS3Version

Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Menggunakan versi di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: false

Jenis: string

Pola yang valid .+

DockerComposeFileDestinationPath

Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk DockerUserId harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core AWS IoT Greengrass ini.

penting

Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat Catatan keamanan.

Nama tampilan pada konsol AWS IoT tersebut: Jalur direktori untuk file Compose lokal

Wajib: true

Jenis: string

Pola yang valid \/.*\/?

Contoh: /home/username/myCompose

DockerUserId

UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux docker pada perangkat core dan memiliki izin menulis ke direktori DockerComposeFileDestinationPath ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core.

catatan

Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat Menjalankan fungsi Lambda sebagai root.

Nama tampilan pada konsol AWS IoT tersebut: ID pengguna Docker

Wajib: false

Jenis: string

Pola yang valid: ^[0-9]{1,5}$

AWSSecretsArnList

Amazon Resource Names (ARN) dari rahasia dalam AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda dalam repositori pribadi. Untuk informasi selengkapnya, lihat Mengakses gambar Docker dari repositori pribadi.

Nama tampilan pada konsol AWS IoT tersebut: Kredensial untuk repositori privat

Diperlukan:false. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.

Jenis: array dari string

Pola yang valid: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).

Nama tampilan pada konsol AWS IoT tersebut: Frekuensi pencatatan

Wajib: false

Jenis: string

Pola yang valid: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah False.

Nama tampilan pada konsol AWS IoT tersebut: deployment paksa

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

DockerPullBeforeUp

Menunjukkan apakah deployer harus berjalan docker-compose pull sebelum menjalankan docker-compose up pull-down-up perilaku. Nilai default-nya adalah True.

Nama tampilan pada konsol AWS IoT tersebut: Docker Tarik Sebelum Naik

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

StopContainersOnNewDeployment

Mengindikasikan apakah konektor harus menghentikan kontainer Docker Deployer managed docker ketika GGC dihentikan (GGC berhenti ketika grup baru diterapkan, atau kernel dimatikan). Nilai default-nya adalah True.

Nama tampilan pada konsol AWS IoT tersebut: Docker berhenti pada deployment baru

catatan

Kami menyarankan agar parameter ini diatur ke default True nilai. Parameter untuk False menyebabkan kontainer Docker Anda terus berjalan bahkan setelah mengakhiri AWS IoT Greengrass core atau memulai deployment baru. Jika Anda mengatur parameter ini ke False, Anda harus memastikan bahwa kontainer Docker Anda dipertahankan seperlunya dalam hal docker-compose perubahan nama layanan atau penambahan.

Untuk informasi lebih lanjut, lihat docker-compose dokumentasi file compose.

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

DockerOfflineMode

Mengindikasikan apakah akan menggunakan file Docker Compose yang ada ketika AWS IoT Greengrass mulai offline. Nilai default-nya adalah False.

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

Version 6
DockerComposeFileS3Bucket

Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti aturan nama bucket yang dijelaskan dalam Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Nama tampilan pada konsol AWS IoT tersebut: File Docker Compose dalam S3

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Kunci objek dan metadata di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid .+

DockerComposeFileS3Version

Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Menggunakan versi di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: false

Jenis: string

Pola yang valid .+

DockerComposeFileDestinationPath

Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk DockerUserId harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core AWS IoT Greengrass ini.

penting

Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat Catatan keamanan.

Nama tampilan pada konsol AWS IoT tersebut: Jalur direktori untuk file Compose lokal

Wajib: true

Jenis: string

Pola yang valid \/.*\/?

Contoh: /home/username/myCompose

DockerUserId

UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux docker pada perangkat core dan memiliki izin menulis ke direktori DockerComposeFileDestinationPath ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core.

catatan

Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat Menjalankan fungsi Lambda sebagai root.

Nama tampilan pada konsol AWS IoT tersebut: ID pengguna Docker

Wajib: false

Jenis: string

Pola yang valid: ^[0-9]{1,5}$

AWSSecretsArnList

Amazon Resource Names (ARN) dari rahasia dalam AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda dalam repositori pribadi. Untuk informasi selengkapnya, lihat Mengakses gambar Docker dari repositori pribadi.

Nama tampilan pada konsol AWS IoT tersebut: Kredensial untuk repositori privat

Diperlukan:false. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.

Jenis: array dari string

Pola yang valid: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).

Nama tampilan pada konsol AWS IoT tersebut: Frekuensi pencatatan

Wajib: false

Jenis: string

Pola yang valid: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah False.

Nama tampilan pada konsol AWS IoT tersebut: deployment paksa

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

DockerPullBeforeUp

Menunjukkan apakah deployer harus berjalan docker-compose pull sebelum menjalankan docker-compose up pull-down-up perilaku. Nilai default-nya adalah True.

Nama tampilan pada konsol AWS IoT tersebut: Docker Tarik Sebelum Naik

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

StopContainersOnNewDeployment

Mengindikasikan apakah konektor harus menghentikan Docker Deployer dikelola kontainer docker ketika GGC dihentikan (ketika deployment grup baru dibuat, atau kernel dimatikan). Nilai default-nya adalah True.

Nama tampilan pada konsol AWS IoT tersebut: Docker berhenti pada deployment baru

catatan

Kami menyarankan agar parameter ini diatur ke default True nilai. Parameter untuk False menyebabkan kontainer Docker Anda terus berjalan bahkan setelah mengakhiri AWS IoT Greengrass core atau memulai deployment baru. Jika Anda mengatur parameter ini ke False, Anda harus memastikan bahwa kontainer Docker Anda dipertahankan seperlunya dalam hal docker-compose perubahan nama layanan atau penambahan.

Untuk informasi lebih lanjut, lihat docker-compose dokumentasi file compose.

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

Version 5
DockerComposeFileS3Bucket

Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti aturan nama bucket yang dijelaskan dalam Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Nama tampilan pada konsol AWS IoT tersebut: File Docker Compose dalam S3

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Kunci objek dan metadata di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid .+

DockerComposeFileS3Version

Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Menggunakan versi di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: false

Jenis: string

Pola yang valid .+

DockerComposeFileDestinationPath

Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk DockerUserId harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core AWS IoT Greengrass ini.

penting

Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat Catatan keamanan.

Nama tampilan pada konsol AWS IoT tersebut: Jalur direktori untuk file Compose lokal

Wajib: true

Jenis: string

Pola yang valid \/.*\/?

Contoh: /home/username/myCompose

DockerUserId

UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux docker pada perangkat core dan memiliki izin menulis ke direktori DockerComposeFileDestinationPath ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core.

catatan

Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat Menjalankan fungsi Lambda sebagai root.

Nama tampilan pada konsol AWS IoT tersebut: ID pengguna Docker

Wajib: false

Jenis: string

Pola yang valid: ^[0-9]{1,5}$

AWSSecretsArnList

Amazon Resource Names (ARN) dari rahasia dalam AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda dalam repositori pribadi. Untuk informasi selengkapnya, lihat Mengakses gambar Docker dari repositori pribadi.

Nama tampilan pada konsol AWS IoT tersebut: Kredensial untuk repositori privat

Diperlukan:false. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.

Jenis: array dari string

Pola yang valid: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).

Nama tampilan pada konsol AWS IoT tersebut: Frekuensi pencatatan

Wajib: false

Jenis: string

Pola yang valid: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah False.

Nama tampilan pada konsol AWS IoT tersebut: deployment paksa

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

DockerPullBeforeUp

Menunjukkan apakah deployer harus berjalan docker-compose pull sebelum menjalankan docker-compose up pull-down-up perilaku. Nilai default-nya adalah True.

Nama tampilan pada konsol AWS IoT tersebut: Docker Tarik Sebelum Naik

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

Versions 2 - 4
DockerComposeFileS3Bucket

Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti aturan nama bucket yang dijelaskan dalam Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Nama tampilan pada konsol AWS IoT tersebut: File Docker Compose dalam S3

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Kunci objek dan metadata di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid .+

DockerComposeFileS3Version

Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Menggunakan versi di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: false

Jenis: string

Pola yang valid .+

DockerComposeFileDestinationPath

Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk DockerUserId harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core AWS IoT Greengrass ini.

penting

Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat Catatan keamanan.

Nama tampilan pada konsol AWS IoT tersebut: Jalur direktori untuk file Compose lokal

Wajib: true

Jenis: string

Pola yang valid \/.*\/?

Contoh: /home/username/myCompose

DockerUserId

UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux docker pada perangkat core dan memiliki izin menulis ke direktori DockerComposeFileDestinationPath ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core.

catatan

Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat Menjalankan fungsi Lambda sebagai root.

Nama tampilan pada konsol AWS IoT tersebut: ID pengguna Docker

Wajib: false

Jenis: string

Pola yang valid: ^[0-9]{1,5}$

AWSSecretsArnList

Amazon Resource Names (ARN) dari rahasia dalam AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda dalam repositori pribadi. Untuk informasi selengkapnya, lihat Mengakses gambar Docker dari repositori pribadi.

Nama tampilan pada konsol AWS IoT tersebut: Kredensial untuk repositori privat

Diperlukan:false. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.

Jenis: array dari string

Pola yang valid: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).

Nama tampilan pada konsol AWS IoT tersebut: Frekuensi pencatatan

Wajib: false

Jenis: string

Pola yang valid: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah False.

Nama tampilan pada konsol AWS IoT tersebut: deployment paksa

Wajib: false

Jenis: string

Pola yang valid: ^(true|false)$

Version 1
DockerComposeFileS3Bucket

Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti aturan nama bucket yang dijelaskan dalam Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Nama tampilan pada konsol AWS IoT tersebut: File Docker Compose dalam S3

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Kunci objek dan metadata di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: true

Jenis: string

Pola yang valid .+

DockerComposeFileS3Version

Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat Menggunakan versi di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

catatan

Di konsol tersebut, properti file Docker Compose dalam S3 menggabungkan parameter DockerComposeFileS3Bucket, DockerComposeFileS3Key, dan DockerComposeFileS3Version ini.

Wajib: false

Jenis: string

Pola yang valid .+

DockerComposeFileDestinationPath

Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk DockerUserId harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core AWS IoT Greengrass ini.

penting

Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat Catatan keamanan.

Nama tampilan pada konsol AWS IoT tersebut: Jalur direktori untuk file Compose lokal

Wajib: true

Jenis: string

Pola yang valid \/.*\/?

Contoh: /home/username/myCompose

DockerUserId

UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux docker pada perangkat core dan memiliki izin menulis ke direktori DockerComposeFileDestinationPath ini. Untuk informasi selengkapnya, lihat Mengatur pengguna Docker pada core.

catatan

Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat Menjalankan fungsi Lambda sebagai root.

Nama tampilan pada konsol AWS IoT tersebut: ID pengguna Docker

Wajib: false

Jenis: string

Pola yang valid: ^[0-9]{1,5}$

AWSSecretsArnList

Amazon Resource Names (ARN) dari rahasia dalam AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda dalam repositori pribadi. Untuk informasi selengkapnya, lihat Mengakses gambar Docker dari repositori pribadi.

Nama tampilan pada konsol AWS IoT tersebut: Kredensial untuk repositori privat

Diperlukan:false. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.

Jenis: array dari string

Pola yang valid: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).

Nama tampilan pada konsol AWS IoT tersebut: Frekuensi pencatatan

Wajib: false

Jenis: string

Pola yang valid: ^[1-9]{1}[0-9]{0,3}$

Buat Contoh Konektor (AWS CLI)

Perintah CLI berikut membuat ConnectorDefinition dengan versi awal yang berisi konektor deployment aplikasi Docker Greengrass.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyDockerAppplicationDeploymentConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5", "Parameters": { "DockerComposeFileS3Bucket": "myS3Bucket", "DockerComposeFileS3Key": "production-docker-compose.yml", "DockerComposeFileS3Version": "123", "DockerComposeFileDestinationPath": "/home/username/myCompose", "DockerUserId": "1000", "AWSSecretsArnList": "[\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret1-hash\",\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret2-hash\"]", "DockerContainerStatusLogFrequency": "30", "ForceDeploy": "True", "DockerPullBeforeUp": "True" } } ] }'
catatan

Fungsi Lambda dalam konektor mempunyai siklus hidup yang berumur panjang ini.

Data input

Konektor ini tidak memerlukan atau menerima data input.

Data output

Konektor ini menerbitkan status docker-compose up perintah sebagai data output.

Filter topik dalam langganan

dockerapplicationdeploymentconnector/message/status

Contoh keluaran: Sukses
{ "status":"success", "GreengrassDockerApplicationDeploymentStatus":"Successfully triggered docker-compose up", "S3Bucket":"myS3Bucket", "ComposeFileName":"production-docker-compose.yml", "ComposeFileVersion":"123" }
Contoh keluaran: Kegagalan
{ "status":"fail", "error_message":"description of error", "error":"InvalidParameter" }

Jenis kesalahan dapat berupa InvalidParameter atau InternalError.

Mengatur pengguna Docker pada core AWS IoT Greengrass ini

Konektor deployment aplikasi Docker Greengrass berjalan sebagai pengguna yang Anda tentukan untuk DockerUserId parameter. Jika Anda tidak menentukan nilai, konektor berjalan sebagai ggc_user, yang merupakan default identitas akses Greengrass.

Untuk mengizinkan konektor berinteraksi dengan Docker daemon, pengguna Docker harus milik grup Linux docker pada core. Pengguna Docker juga harus memiliki izin menulis ke direktori DockerComposeFileDestinationPath ini. Di sinilah konektor menyimpan file lokal docker-compose.yml dan kredensial Docker Anda.

catatan
  • Kami merekomendasikan Anda membuat pengguna Linux daripada menggunakan default ggc_user. Jika tidak, fungsi Lambda dalam grup Greengrass dapat mengakses file Compose dan kredensial Docker.

  • Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat Menjalankan fungsi Lambda sebagai root.

  1. Buat pengguna. Anda dapat menjalankan perintah useradd dan termasuk opsional pada pilihan -u untuk menetapkan UID. Sebagai contoh:

    sudo useradd -u 1234 user-name
  2. Tambahkan pengguna ke docker grup pada core. Sebagai contoh:

    sudo usermod -aG docker user-name

    Untuk informasi lebih lanjut, termasuk cara membuat docker grup, lihat Mengelola Docker sebagai pengguna non-root dalam dokumentasi Docker.

  3. Berikan izin pengguna untuk menulis ke direktori yang ditentukan untuk DockerComposeFileDestinationPath parameter. Sebagai contoh:

    1. Untuk mengatur pengguna sebagai pemilik direktori. Contoh ini menggunakan UID dari langkah 1.

      chown 1234 docker-compose-file-destination-path
    2. Untuk memberikan izin baca dan tulis kepada pemilik.

      chmod 700 docker-compose-file-destination-path

      Untuk informasi lebih lanjut, lihat Cara mengelola File dan Folder Izin dalam Linux dalam dokumentasi Linux Foundation.

    3. Jika Anda tidak menetapkan UID ketika membuat pengguna, atau jika Anda menggunakan pengguna yang sudah ada, jalankan id perintah untuk mencari UID.

      id -u user-name

      Anda menggunakan UID untuk mengonfigurasi DockerUserId parameter untuk konektor.

Informasi penggunaan

Ketika Anda menggunakan konektor deployment aplikasi Docker Greengrass, Anda harus mengetahui informasi penggunaan spesifik implementasi berikut.

  • Awalan tetap untuk nama proyek. Konektor prepends greengrassdockerapplicationdeployment awalan untuk nama-nama kontainer Docker yang memulai. Konektor menggunakan awalan ini sebagai nama proyek dalam perintah docker-compose yang berjalan.

  • Perilaku logging. Konektor menulis informasi status dan informasi penyelesaian masalah ke file log. Anda dapat mengonfigurasi AWS IoT Greengrass untuk mengirim CloudWatch log ke Log dan menulis log secara lokal. Untuk informasi selengkapnya, lihat Pencatatan untuk konektor. Ini adalah jalur ke log lokal untuk konektor:

    /greengrass-root/ggc/var/log/user/region/aws/DockerApplicationDeployment.log

    Anda harus memiliki izin root untuk mengakses log lokal.

  • Memperbarui gambar Docker. Docker menyimpan gambar pada perangkat core. Jika Anda memperbarui gambar Docker dan ingin menerapkankan perubahan ke perangkat core, pastikan untuk mengubah tag untuk gambar dalam file Compose. Perubahan membawa efek setelah grup Greengrass diterapkan.

  • Batas waktu 10 menit untuk operasi pembersihan. Ketika Greengrass daemon berhenti selama restart, docker-compose down perintah dimulai. Semua kontainer Docker memiliki maksimum 10 menit setelah docker-compose down dimulai untuk melakukan operasi pembersihan apa pun. Jika pembersihan tidak selesai dalam 10 menit, Anda harus membersihkan kontainer yang tersisa secara manual. Untuk informasi lebih lanjut, lihat docker rm dalam dokumentasi Docker CLI.

  • Menjalankan perintah Docker. Untuk menyelesaikan masalah, Anda dapat menjalankan perintah Docker dalam jendela terminal pada perangkat core. Sebagai contoh, jalankan perintah berikut untuk melihat Docker kontainer yang dimulai oleh konektor:

    docker ps --filter name="greengrassdockerapplicationdeployment"
  • ID sumber daya yang dicadangkan. Konektor menggunakan DOCKER_DEPLOYER_SECRET_RESOURCE_RESERVED_ID_index ID untuk sumber daya Greengrass me buat dalam grup Greengrass. ID sumber daya harus unik dalam grup, jadi jangan tetapkan ID sumber daya yang mungkin bertentangan dengan ID sumber daya cadangan.

  • Mode offline. Ketika Anda mengatur DockerOfflineMode parameter konfigurasi untuk True, maka konektor Docker dapat beroperasi dalam mode offline. Hal ini dapat terjadi ketika deployment grup Greengrass restart sementara perangkat core offline, dan konektor tidak dapat membuat koneksi ke Amazon S3 atau Amazon ECR untuk mengambil file Docker Compose.

    Dengan mode offline diaktifkan, konektor akan mencoba mengunduh file Compose, dan menjalankan docker login perintah seperti itu akan untuk restart normal. Jika upaya ini gagal, maka konektor mencari dipertahankan secara lokal file Compose dalam folder yang ditentukan menggunakan DockerComposeFileDestinationPath parameter. Jika ada file Compose lokal, maka konektor mengikuti urutan normal docker-compose perintah dan menarik dari gambar lokal. Jika menulis file atau gambar lokal tidak ada, maka konektor gagal. Perilaku parameter ForceDeploy dan StopContainersOnNewDeployment tetap sama dalam mode offline.

Berkomunikasi dengan kontainer Docker

AWS IoT Greengrass mendukung saluran komunikasi berikut antara komponen Greengrass dan kontainer Docker:

  • Fungsi Greengrass Lambda dapat menggunakan API REST untuk berkomunikasi dengan proses dalam kontainer Docker. Anda dapat mengatur server dalam kontainer Docker yang membuka port. Fungsi Lambda dapat berkomunikasi dengan kontainer dalam port ini.

  • Proses dalam kontainer Docker dapat bertukar pesan MQTT melalui broker pesan Greengrass lokal. Anda dapat mengatur wadah Docker sebagai perangkat klien di grup Greengrass dan kemudian membuat langganan untuk memungkinkan penampung berkomunikasi dengan fungsi Greengrass Lambda, perangkat klien, dan konektor lain dalam grup, atau dengan dan layanan bayangan lokal. AWS IoT Untuk informasi selengkapnya, lihat Mengonfigurasi komunikasi MQTT dengan kontainer Docker.

  • Fungsi Greengrass Lambda dapat memperbarui file bersama untuk menyampaikan informasi ke kontainer Docker. Anda dapat menggunakan file menulis untuk mengikat mount jalur file bersama untuk kontainer Docker.

Mengonfigurasi komunikasi MQTT dengan kontainer Docker

Anda dapat mengonfigurasi wadah Docker sebagai perangkat klien dan menambahkannya ke grup Greengrass. Kemudian, Anda dapat membuat langganan yang mengizinkan komunikasi MQTT antara kontainer Docker dan komponen Greengrass atau AWS IoT. Dalam prosedur berikut, Anda membuat langganan yang mengizinkan perangkat kontainer Docker untuk menerima bayangan pembaruan pesan dari layanan bayangan lokal. Anda dapat mengikuti pola ini untuk membuat langganan lainnya.

catatan

Prosedur ini mengasumsikan bahwa Anda telah membuat grup Greengrass dan core Greengrass (v1.10 atau yang lebih baru). Untuk informasi tentang pembuatan grup dan core Greengrass, lihat Memulai dengan AWS IoT Greengrass.

Untuk mengonfigurasi wadah Docker sebagai perangkat klien dan menambahkannya ke grup Greengrass
  1. Buat folder pada perangkat inti untuk menyimpan sertifikat dan kunci yang digunakan untuk mengautentikasi perangkat Greengrass.

    Jalur file harus dipasang pada kontainer Docker Anda ingin memulai. Potongan berikut menunjukkan cara me-mount jalur file dalam file Compose Anda. Dalam contoh ini, path-to-device-certsmewakili folder yang Anda buat di langkah ini.

    version: '3.3' services: myService: image: user-name/repo:image-tag volumes: - /path-to-device-certs/:/path-accessible-in-container
  2. Di panel navigasi AWS IoT konsol, di bawah Kelola, perluas perangkat Greengrass, lalu pilih Grup (V1).

  3. Pilih grup target.

  4. Pada halaman konfigurasi grup, pilih Perangkat klien, lalu pilih Associate.

  5. Di Mengaitkan perangkat klien dengan modal grup ini, pilih Buat AWS IoT hal baru.

    Halaman Create things terbuka di tab baru.

  6. Pada halaman Create things, pilih Create single thing, lalu pilih Next.

  7. Pada halaman Tentukan properti benda, masukkan nama untuk perangkat, lalu pilih Berikutnya.

  8. Pada halaman Konfigurasi sertifikat perangkat, pilih Berikutnya.

  9. Pada halaman Lampirkan kebijakan ke sertifikat, lakukan salah satu hal berikut:

    • Pilih kebijakan yang ada yang memberikan izin yang diperlukan perangkat klien, lalu pilih Buat sesuatu.

      Modal terbuka di mana Anda dapat mengunduh sertifikat dan kunci yang digunakan perangkat untuk terhubung ke AWS Cloud dan inti.

    • Buat dan lampirkan kebijakan baru yang memberikan izin perangkat klien. Lakukan hal-hal berikut:

      1. Pilih Buat kebijakan.

        Halaman Buat kebijakan terbuka di tab baru.

      2. Pada halaman Buat kebijakan, lakukan hal berikut:

        1. Untuk nama Kebijakan, masukkan nama yang menjelaskan kebijakan, sepertiGreengrassV1ClientDevicePolicy.

        2. Pada tab Pernyataan kebijakan, di bawah Dokumen kebijakan, pilih JSON.

        3. Masukkan dokumen kebijakan berikut. Kebijakan ini memungkinkan perangkat klien untuk menemukan inti Greengrass dan berkomunikasi pada semua topik MQTT. Untuk informasi tentang cara membatasi akses kebijakan ini, lihatAutentikasi dan otorisasi perangkat untuk AWS IoT Greengrass.

          { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Connect", "iot:Receive" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "greengrass:*" ], "Resource": [ "*" ] } ] }
        4. Pilih Buat untuk membuat kebijakan.

      3. Kembali ke tab browser dengan halaman Lampirkan kebijakan ke sertifikat terbuka. Lakukan hal-hal berikut:

        1. Dalam daftar Kebijakan, pilih kebijakan yang Anda buat, seperti GreengrassV1ClientDevicePolicy.

          Jika Anda tidak melihat kebijakan, pilih tombol segarkan.

        2. Pilih Buat sesuatu.

          Modal terbuka di mana Anda dapat mengunduh sertifikat dan kunci yang digunakan perangkat untuk terhubung ke AWS Cloud dan inti.

  10. Dalam modal Unduh sertifikat dan kunci, unduh sertifikat perangkat.

    penting

    Sebelum Anda memilih Selesai, unduh sumber daya keamanan.

    Lakukan hal-hal berikut:

    1. Untuk sertifikat Perangkat, pilih Unduh untuk mengunduh sertifikat perangkat.

    2. Untuk file kunci Publik, pilih Unduh untuk mengunduh kunci publik untuk sertifikat.

    3. Untuk file kunci pribadi, pilih Unduh untuk mengunduh file kunci pribadi untuk sertifikat.

    4. Review Autentikasi Server dalam AWS IoT Panduan Developer dan memilih root sertifikat CA yang sesuai. Kami merekomendasikan Anda menggunakan Amazon Trust Services (ATS) titik akhir dan ATS root sertifikat CA. Di bawah sertifikat Root CA, pilih Unduh untuk sertifikat CA root.

    5. Pilih Selesai.

    Catat ID sertifikat yang umum dalam nama file untuk sertifikat dan kunci perangkat. Anda membutuhkannya nanti.

  11. Salin sertifikat dan kunci ke folder yang Anda buat di langkah 1.

Selanjutnya, buat langganan dalam grup. Untuk contoh ini, Anda buat langganan mengizinkan perangkat kontainer Docker untuk menerima pesan MQTT dari layanan bayangan lokal.

catatan

Ukuran maksimum dokumen bayangan adalah 8 KB. Untuk informasi lebih lanjut, lihat AWS IoT kuota dalam AWS IoT Panduan Developer.

Untuk membuat langganan yang mengizinkan perangkat kontainer Docker menerima pesan MQTT dari layanan bayangan lokal
  1. Pada halaman konfigurasi grup, pilih tab Langganan, lalu pilih Tambah Langganan.

  2. Pada halaman Pilih sumber dan target Anda ini, konfigurasikan sumber dan target, sebagai berikut:

    1. Untuk Pilihan sumber, pilih Layanan, dan kemudian pilih Layanan Bayangan Lokal.

    2. Untuk Pilih target, pilih Perangkat, kemudian pilih perangkat Anda.

    3. Pilih Berikutnya.

    4. Pada halaman Filter data Anda dengan topik ini, untuk Filter topik, pilih $aws/things/MyDockerDevice/shadow/update/accepted, kemudian pilih Selanjutnya. Ganti MyDockerDevicedengan nama perangkat yang Anda buat sebelumnya.

    5. Pilih Selesai.

Sertakan potongan kode berikut dalam gambar Docker yang Anda referensi dalam file Compose. Ini adalah kode perangkat Greengrass. Juga, tambahkan kode dalam kontainer Docker Anda memulai perangkat Greengrass dalam kontainer. Ini dapat berjalan sebagai proses terpisah dalam gambar atau dalam thread terpisah.

import os import sys import time import uuid from AWSIoTPythonSDK.core.greengrass.discovery.providers import DiscoveryInfoProvider from AWSIoTPythonSDK.exception.AWSIoTExceptions import DiscoveryInvalidRequestException from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient # Replace thingName with the name you registered for the Docker device. thingName = "MyDockerDevice" clientId = thingName # Replace host with the IoT endpoint for your &AWS-account;. host = "myPrefix.iot.region.amazonaws.com" # Replace topic with the topic where the Docker container subscribes. topic = "$aws/things/MyDockerDevice/shadow/update/accepted" # Replace these paths based on the download location of the certificates for the Docker container. rootCAPath = "/path-accessible-in-container/AmazonRootCA1.pem" certificatePath = "/path-accessible-in-container/certId-certificate.pem.crt" privateKeyPath = "/path-accessible-in-container/certId-private.pem.key" # Discover Greengrass cores. discoveryInfoProvider = DiscoveryInfoProvider() discoveryInfoProvider.configureEndpoint(host) discoveryInfoProvider.configureCredentials(rootCAPath, certificatePath, privateKeyPath) discoveryInfoProvider.configureTimeout(10) # 10 seconds. GROUP_CA_PATH = "./groupCA/" MQTT_QOS = 1 discovered = False groupCA = None coreInfo = None try: # Get discovery info from AWS IoT. discoveryInfo = discoveryInfoProvider.discover(thingName) caList = discoveryInfo.getAllCas() coreList = discoveryInfo.getAllCores() # Use first discovery result. groupId, ca = caList[0] coreInfo = coreList[0] # Save the group CA to a local file. groupCA = GROUP_CA_PATH + groupId + "_CA_" + str(uuid.uuid4()) + ".crt" if not os.path.exists(GROUP_CA_PATH): os.makedirs(GROUP_CA_PATH) groupCAFile = open(groupCA, "w") groupCAFile.write(ca) groupCAFile.close() discovered = True except DiscoveryInvalidRequestException as e: print("Invalid discovery request detected!") print("Type: %s" % str(type(e))) print("Error message: %s" % str(e)) print("Stopping...") except BaseException as e: print("Error in discovery!") print("Type: %s" % str(type(e))) print("Error message: %s" % str(e)) print("Stopping...") myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId) myAWSIoTMQTTClient.configureCredentials(groupCA, privateKeyPath, certificatePath) # Try to connect to the Greengrass core. connected = False for connectivityInfo in coreInfo.connectivityInfoList: currentHost = connectivityInfo.host currentPort = connectivityInfo.port myAWSIoTMQTTClient.configureEndpoint(currentHost, currentPort) try: myAWSIoTMQTTClient.connect() connected = True except BaseException as e: print("Error in connect!") print("Type: %s" % str(type(e))) print("Error message: %s" % str(e)) if connected: break if not connected: print("Cannot connect to core %s. Exiting..." % coreInfo.coreThingArn) sys.exit(-2) # Handle the MQTT message received from GGShadowService. def customCallback(client, userdata, message): print("Received an MQTT message") print(message) # Subscribe to the MQTT topic. myAWSIoTMQTTClient.subscribe(topic, MQTT_QOS, customCallback) # Keep the process alive to listen for messages. while True: time.sleep(1)

Catatan keamanan

Ketika Anda menggunakan konektor deployment aplikasi Docker Greengrass, perhatikan pertimbangan keamanan berikut.

Penyimpanan lokal file Docker Compose

Konektor menyimpan salinan file Compose Anda dalam direktori yang ditentukan untuk DockerComposeFileDestinationPath parameter.

Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Anda harus menggunakan izin sistem file untuk membatasi akses ke direktori.

Penyimpanan lokal kredenal Docker

Jika citra Docker Anda dipertahankan dalam repositori privat, konektor menyimpan kredensial Docker Anda dalam direktori yang ditentukan untuk DockerComposeFileDestinationPath Parameter.

Ini adalah tanggung jawab Anda untuk mengamankan kredensial ini. Sebagai contoh, Anda harus menggunakan pembantu-kredensial pada perangkat core ketika Anda menginstal Docker Engine.

Instal Docker Engine dari sumber tepercaya

Anda bertanggung jawab untuk menginstal Docker Engine dari sumber terpercaya. Konektor ini menggunakan Docker daemon pada perangkat core untuk mengakses aset Docker Anda dan mengelola kontainer Docker.

Lingkup izin peran grup Greengrass

Izin yang Anda tambahkan dalam peran grup Greengrass dapat diasumsikan oleh semua fungsi Lambda dan konektor dalam grup Greengrass. Konektor ini memerlukan akses ke file Docker Anda yang dipertahankan dalam bucket S3. Hal ini juga membutuhkan akses ke token otorisasi Amazon ECR Anda jika gambar Docker Anda dipertahankan dalam repositori pribadi dalam Amazon ECR.

Lisensi

Konektor deployment aplikasi Docker Greengrass termasuk perangkat lunak/lisensi pihak ketiga berikut:

Konektor ini dirilis di bawah Perjanjian Lisensi Perangkat lunak core Greengrass.

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.

Versi

Perubahan

7

Ditambahkan DockerOfflineMode untuk menggunakan file Docker Compose yang ada ketika AWS IoT Greengrass mulai offline. Diimplementasikan coba lagi untuk docker login perintah. Mendukung untuk UID 32-bit.

6

Ditambahkan StopContainersOnNewDeployment untuk menimpa kontainer membersihkan ketika deployment baru dibuat atau GC berhenti. Mekanisme shutdown dan start up yang lebih aman. YAML validation bug fix.

5

Gambar ditarik sebelum menjalankan docker-compose down.

4

Menambahkan pull-before-up perilaku untuk memperbarui gambar Docker.

3

Diperbaiki masalah dengan menemukan variabel lingkungan.

2

Ditambahkan ForceDeploy parameter.

1

Pelepasan awal.

Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat Versi upgrade konektor.

Lihat juga