Jalankan AWS IoT Greengrass dalam kontainer Docker dengan penyediaan sumber daya otomatis - AWS IoT Greengrass

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Jalankan AWS IoT Greengrass dalam kontainer Docker dengan penyediaan sumber daya otomatis

Tutorial ini menunjukkan cara menginstal dan menjalankan perangkat lunak inti AWS IoT Greengrass dalam kontainer Docker dengan sumber daya AWS yang disediakan secara otomatis dan alat pengembangan lokal. Anda dapat menggunakan lingkungan pengembangan ini untuk mengeksplorasi fitur AWS IoT Greengrass dalam kontainer Docker. Perangkat lunak membutuhkanAWSkredensi untuk menyediakan sumber daya ini dan menerapkan alat pengembangan lokal.

Jika Anda tidak dapat memberikanAWSkredensi ke wadah, Anda dapat menyediakanAWSsumber daya yang dibutuhkan perangkat inti untuk beroperasi. Anda juga dapat men-deploy alat pengembangan ke perangkat inti untuk digunakan sebagai perangkat pengembangan. Hal ini memungkinkan Anda untuk memberikan lebih sedikit izin untuk perangkat ketika Anda menjalankan kontainer. Untuk informasi selengkapnya, lihat Jalankan AWS IoT Greengrass dalam kontainer Docker dengan penyediaan sumber daya manual.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut ini:

  • Sebuah Akun AWS. Jika Anda tidak memilikinya, lihat Siapkan Akun AWS.

  • Pengguna IAM AWS dengan izin untuk menyediakan AWS IoT dan sumber daya IAM untuk perangkat inti Greengrass. Penginstal perangkat lunak inti AWS IoT Greengrass menggunakan kredensial AWS Anda untuk secara otomatis menyediakan sumber daya ini. Untuk informasi tentang kebijakan IAM minimal untuk secara otomatis menyediakan sumber daya, lihatKebijakan IAM minimal untuk penginstal untuk menyediakan sumber daya.

  • Citra Docker AWS IoT Greengrass. Tutorial ini menunjukkan cara menarik citra Docker AWS IoT Greengrass dari Docker Hub. Anda juga dapat menarik citra Docker AWS IoT Greengrass dari Amazon Elastic Container Registry (Amazon ECR), atau Anda dapat membangun citra dari Dockerfile AWS IoT Greengrass.

  • Komputer host tempat Anda menjalankan kontainer Docker harus memenuhi persyaratan berikut:

    • Sistem operasi berbasis Linux dengan koneksi internet.

    • Mesin Docker versi 18.09 atau yang lebih baru.

    • (Opsional) Docker Compose versi 1.22 atau yang lebih baru. Docker Compose diperlukan hanya jika Anda ingin menggunakan Docker Compose CLI untuk menjalankan gambar Docker Anda.

Konfigurasikan kredensial AWS Anda

Pada langkah ini, Anda membuat file kredensial pada komputer host yang berisi kredensial keamanan AWS. Ketika Anda menjalankan citra Docker AWS IoT Greengrass, Anda harus memasang folder yang berisi file kredensial ini ke /root/.aws/ di kontainer Docker. Penginstal AWS IoT Greengrass menggunakan kredensial ini untuk menyediakan sumber daya di Akun AWS Anda. Untuk informasi tentang kebijakan IAM minimal yang diperlukan installer untuk secara otomatis menyediakan sumber daya, lihat Kebijakan IAM minimal untuk penginstal untuk menyediakan sumber daya.

  1. Ambil salah satu dari yang berikut ini.

  2. Buat folder tempat Anda menempatkan file kredensial Anda.

    mkdir ./greengrass-v2-credentials
  3. Gunakan editor teks untuk membuat file konfigurasi bernama credentials di folder ./greengrass-v2-credentials.

    Misalnya, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file credentials.

    nano ./greengrass-v2-credentials/credentials
  4. Tambahkan kredensial AWS Anda ke file credentials dalam format berikut:

    [default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token = AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

    Sertakan aws_session_token untuk kredensial sementara saja.

penting

Hapus file kredensial dari komputer host setelah Anda memulai kontainer AWS IoT Greengrass. Jika Anda tidak menghapus file kredensial, maka kredensial AWS akan tetap dipasang di dalam kontainer tersebut. Untuk informasi selengkapnya, lihat Jalankan perangkat lunak inti AWS IoT Greengrass dalam kontainer.

Buat sebuah file lingkungan.

Tutorial ini menggunakan file lingkungan untuk mengatur variabel lingkungan yang akan diteruskan ke penginstal perangkat lunak inti AWS IoT Greengrass di dalam kontainer Docker. Anda juga dapat menggunakan argumen -e atau --env di perintah docker run Anda untuk mengatur variabel lingkungan dalam kontainer Docker atau Anda dapat mengatur variabel dalam sebuah blok environment di file docker-compose.yml.

  1. Gunakan editor teks untuk membuat file lingkungan bernama .env.

    Sebagai contoh, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat .env pada direktori saat ini.

    nano .env
  2. Salin konten berikut ke dalam file tersebut.

    GGC_ROOT_PATH=/greengrass/v2 AWS_REGION=region PROVISION=true THING_NAME=MyGreengrassCore THING_GROUP_NAME=MyGreengrassCoreGroup TES_ROLE_NAME=GreengrassV2TokenExchangeRole TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias COMPONENT_DEFAULT_USER=ggc_user:ggc_group

    Anda harus mengganti nilai berikut.

    • /greengrass/v2. Folder akar Greengrass yang ingin Anda gunakan untuk instalasi. Anda dapat menggunakan variabel lingkungan GGC_ROOT untuk menetapkan nilai ini.

    • region. Wilayah AWS tempat Anda membuat sumber daya.

    • MyGreengrassCore. Nama objek AWS IoT Jika objek itu tidak ada, installer akan membuatnya. Penginstal mengunduh sertifikat tersebut untuk diautentikasi sebagai objek AWS IoT.

    • MyGreengrassCoreGroup. Nama grup objek AWS IoT Jika grup objek tidak ada, installer akan membuatnya dan menambahkan objek itu padanya. Jika grup objek ada dan memiliki deployment yang aktif, perangkat inti akan men-download dan menjalankan perangkat lunak yang ditetapkan oleh deployment.

    • GreenGrassV2TokenExchangeRole. Ganti dengan nama peran pertukaran token IAM yang memungkinkan perangkat inti Greengrass untuk mendapatkan kredensial AWS sementara. Jika peran itu tidak ada, penginstal akan membuatnya dan membuat serta melampirkan kebijakan bernamaGreenGrassV2TokenExchangeRoleMengakses. Untuk informasi selengkapnya, lihat Otorisasi perangkat inti untuk berinteraksi dengan AWS layanan.

    • GreengrassCoreTokenExchangeRoleAlias. Alias peran pertukaran token. Jika alias peran tidak ada, penginstal akan membuatnya dan mengarahkannya ke peran pertukaran token IAM yang Anda tentukan. Untuk informasi selengkapnya, lihat

    catatan

    Anda dapat mengaturDEPLOY_DEV_TOOLSvariabel lingkungan untuktrueuntuk menerapkanKomponen Greengrass CLI, yang memungkinkan Anda untuk mengembangkan komponen kustom di dalam wadah Docker. Kami menyarankan agar Anda menggunakan komponen ini hanya di lingkungan pengembangan, bukan lingkungan produksi. Komponen ini menyediakan akses ke informasi dan operasi yang biasanya tidak Anda perlukan di lingkungan produksi. Ikuti prinsip hak istimewa paling sedikit dengan menerapkan komponen ini ke perangkat inti di mana Anda membutuhkannya.

Jalankan perangkat lunak inti AWS IoT Greengrass dalam kontainer

Tutorial ini menunjukkan cara menarik gambar Docker AWS IoT Greengrass terbaru dari Docker Hub dan memulai kontainer Docker. Anda dapat menggunakan Docker CLI atau Docker Compose CLI untuk menjalankan gambar perangkat lunak inti AWS IoT Greengrass dalam kontainer Docker.

Docker
  1. Jalankan perintah berikut untuk menarik gambar Docker AWS IoT Greengrass dari Docker Hub.

    docker pull amazon/aws-iot-greengrass:latest
  2. Jalankan perintah berikut untuk memulai kontainer Docker. Perintah ini menjalankan gambar Greengrass Docker yang Anda download dari Docker Hub. Jika Anda menggunakan image Docker dari sumber yang berbeda, gantiamazon/aws-iot-greengrass:LATESTdengan nama gambar Docker Anda.

    docker run --rm --init -it --name aws-iot-greengrass \ -v path/to/greengrass-v2-credentials:/root/.aws/:ro \ --env-file .env \ -p 8883 \ amazon/aws-iot-greengrass:latest

    Contoh perintah ini menggunakan argumen berikut untuk docker run:

    • --rm. Membersihkan kontainer saat keluar.

    • --init. Menggunakan proses init dalam kontainer.

      catatan

      Argumen --init diperlukan untuk mematikan perangkat lunak inti AWS IoT Greengrass saat Anda menghentikan kontainer Docker.

    • -it. (Opsional) Menjalankan kontainer Docker di latar depan sebagai proses interaktif. Anda dapat mengganti ini dengan -d untuk menjalankan kontainer Docker dalam mode terpisah sebagai gantinya. Untuk informasi lebih lanjut, lihat: Terpisah vs latar depandalam dokumentasi Docker.

    • --name. Menjalankan kontainer bernama aws-iot-greengrass

    • -v. Memasang volume ke kontainer Docker untuk membuat file konfigurasi dan file sertifikat yang tersedia untuk AWS IoT Greengrass yang berjalan di dalam kontainer tersebut.

    • --env-file. (Opsional) Menentukan file lingkungan untuk mengatur variabel lingkungan yang akan diteruskan keAWS IoT GreengrassPenginstal perangkat lunak inti di dalam kontainer Docker. Argumen ini diperlukan hanya jika Anda membuat sebuahfile lingkunganuntuk mengatur variabel lingkungan. Jika Anda tidak membuat sebuah file lingkungan, Anda dapat menggunakan--envargumen untuk mengatur variabel lingkungan secara langsung di perintah Docker run Anda.

    • -p. (Opsional) Menerbitkan port kontainer 8883 ke mesin host. Argumen ini diperlukan jika Anda ingin terhubung dan berkomunikasi melalui MQTT karenaAWS IoT Greengrassmenggunakan port 8883 untuk lalu lintas MQTT. Untuk membuka port lain, gunakan tambahan-pargumen.

    catatan

    Untuk menjalankan kontainer Docker Anda dengan peningkatan keamanan, Anda dapat menggunakan --cap-drop dan --cap-add untuk secara selektif mengaktifkan kemampuan Linux untuk kontainer Anda. Untuk informasi lebih lanjut, lihat:Keistimewaan waktu aktif dan kemampuan Linux dalam dokumentasi Docker.

  3. Hapus kredensi dari./greengrass-v2-credentialspada perangkat host.

    rm -rf ./greengrass-v2-credentials
    penting

    Anda menghapus kredensi ini, karena mereka memberikan izin luas yang hanya dibutuhkan perangkat inti selama penyiapan. Jika Anda tidak menghapus kredensi ini, komponen Greengrass dan proses lain yang berjalan di wadah dapat mengaksesnya. Jika Anda perlu menyediakanAWSkredensi ke komponen Greengrass, gunakan layanan pertukaran token. Untuk informasi selengkapnya, lihat Berinteraksilah dengan layanan AWS.

Docker Compose
  1. Gunakan editor teks untuk membuat file Docker Compose dengan nama docker-compose.yml.

    Sebagai contoh, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat docker-compose.yml pada direktori saat ini.

    nano docker-compose.yml
    catatan

    Anda juga dapat mengunduh dan menggunakan versi terbaruAWS-provided Tulis file dariGitHub.

  2. Tambahkan konten berikut ini ke file Compose. File Anda akan terlihat seperti contoh berikut. Contoh ini menentukan gambar Greengrass Docker yang Anda download dari Docker Hub. Jika Anda menggunakan image Docker dari sumber yang berbeda, gantiamazon/aws-iot-greengrass:LATESTdengan nama gambar Docker Anda.

    version: '3.7' services: greengrass: init: true container_name: aws-iot-greengrass image: amazon/aws-iot-greengrass:latest volumes: - ./greengrass-v2-credentials:/root/.aws/:ro env_file: .env ports: - "8883:8883"

    Parameter berikut dalam contoh ini Menulis file adalah opsional:

    • ports—Menerbitkan 8883 port kontainer ke mesin host. Parameter ini diperlukan jika Anda ingin terhubung dan berkomunikasi melalui MQTT karenaAWS IoT Greengrassmenggunakan port 8883 untuk lalu lintas MQTT.

    • env_file—Menentukan file lingkungan untuk mengatur variabel lingkungan yang akan diteruskan keAWS IoT GreengrassPenginstal perangkat lunak inti di dalam kontainer Docker. Parameter ini diperlukan hanya jika Anda membuatfile lingkunganuntuk mengatur variabel lingkungan. Jika Anda tidak membuat file lingkungan, Anda dapat menggunakan filelingkunganparameter untuk mengatur variabel langsung di file Compose Anda.

    catatan

    Untuk menjalankan kontainer Docker Anda dengan peningkatan keamanan, Anda dapat menggunakan cap_drop dan cap_add dalam file Compose Anda untuk secara selektif mengaktifkan kemampuan Linux untuk kontainer Anda. Untuk informasi lebih lanjut, lihat: Keistimewaan waktu aktif dan kemampuan Linux dalam dokumentasi Docker.

  3. Jalankan perintah berikut untuk memulai kontainer Docker.

    docker-compose -f docker-compose.yml up
  4. Hapus kredensi dari./greengrass-v2-credentialspada perangkat host.

    rm -rf ./greengrass-v2-credentials
    penting

    Anda menghapus kredensi ini, karena mereka memberikan izin luas yang hanya dibutuhkan perangkat inti selama penyiapan. Jika Anda tidak menghapus kredensi ini, komponen Greengrass dan proses lain yang berjalan di wadah dapat mengaksesnya. Jika Anda perlu menyediakanAWSkredensi ke komponen Greengrass, gunakan layanan pertukaran token. Untuk informasi selengkapnya, lihat Berinteraksilah dengan layanan AWS.

Langkah selanjutnya

Perangkat lunak inti AWS IoT Greengrass sekarang berjalan dalam kontainer Docker Jalankan perintah berikut untuk mengambil ID kontainer untuk kontainer yang sedang berjalan.

docker ps

Anda kemudian dapat menjalankan perintah berikut untuk mengakses kontainer dan menjelajahi perangkat lunak inti AWS IoT Greengrass yang berjalan di dalam kontainer tersebut.

docker exec -it container-id /bin/bash

Untuk informasi tentang membuat komponen sederhana, lihat Langkah 4: Mengembangkan dan menguji komponen di perangkat Anda di Tutorial: Memulai dengan AWS IoT Greengrass V2

catatan

Saat Anda menggunakan docker exec untuk menjalankan perintah di dalam kontainer Docker, perintah tersebut tidak tercatat di log Docker. Untuk mencatat perintah Anda di log Docker, lampirkan shell interaktif ke kontainer Docker. Untuk informasi selengkapnya, lihat Lampirkan shell interaktif ke kontainer Docker.

Berkas log inti AWS IoT Greengrass disebut greengrass.log dan terletak di /greengrass/v2/logs. File log komponen juga terletak di direktori yang sama. Untuk menyalin log Greengrass ke direktori sementara pada host, jalankan perintah berikut:

docker cp container-id:/greengrass/v2/logs /tmp/logs

Jika Anda ingin mempertahankan log setelah keluar kontainer atau telah dihapus, kami sarankan Anda hanya melakukan bind-mount pada direktori /greengrass/v2/logs ke direktori log sementara pada host dan bukan memasang seluruh direktori Greengrass. Untuk informasi selengkapnya, lihat Pertahankan log Greengrass di luar kontainer Docker.

Untuk berhenti menjalankan kontainer Docker AWS IoT Greengrass, jalankan docker stop atau docker-compose -f docker-compose.yml stop. Tindakan ini akan mengirimkan SIGTERM ke proses Greengrass dan menutup semua proses terkait yang dimulai dalam kontainer tersebut. Kontainer Docker diinisialisasi dengan executable docker-init sebagai proses PID 1, yang membantu dalam menghapus proses zombie sisa. Untuk informasi selengkapnya, lihat Dokumentasi Docker.

Untuk informasi tentang pemecahan masalah dengan menjalankan AWS IoT Greengrass dalam kontainer Docker, lihat Penyelesaian masalah AWS IoT Greengrass di kontainer Docker.