Jalankan AWS IoT Greengrass dalam kontainer Docker dengan penyediaan sumber daya manual - 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 manual

Tutorial ini menunjukkan cara menginstal dan menjalankan perangkat lunak inti AWS IoT Greengrass dalam kontainer Docker dengan sumber daya AWS yang disediakan secara manual.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:

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

  • 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.

Ambil titik akhir AWS IoT

Dapatkan titik akhir AWS IoT untuk Akun AWS, dan simpan untuk digunakan nanti. Perangkat Anda menggunakan titik akhir ini untuk tersambung ke AWS IoT. Lakukan hal berikut:

  1. Dapatkan titik akhir data AWS IoT untuk perangkat Akun AWS Anda.

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

    { "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com" }
  2. Dapatkan titik akhir kredensial AWS IoT untuk Akun AWS Anda.

    aws iot describe-endpoint --endpoint-type iot:CredentialProvider

    Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

    { "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com" }

Buat objek AWS IoT

Objek AWS IoT mewakili perangkat dan entitas logis yang terhubung ke AWS IoT. Perangkat inti Greengrass merupakan objek AWS IoT. Saat Anda mendaftarkan suatu perangkat sebagai objek AWS IoT, perangkat itu dapat menggunakan sertifikat digital untuk diautentikasi dengan AWS.

Di bagian ini, Anda akan membuatAWS IoThal yang mewakili perangkat Anda.

Untuk membuat objek AWS IoT

  1. Buat objek AWS IoT untuk perangkat Anda. Pada komputer pengembangan Anda, jalankan perintah berikut.

    • Ganti MyGreengrassCore dengan nama objek yang akan digunakan. Nama ini juga merupakan nama perangkat inti Greengrass Anda.

      catatan

      Nama objek tidak dapat berisi karakter titik dua (:).

    aws iot create-thing --thing-name MyGreengrassCore

    Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

    { "thingName": "MyGreengrassCore", "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42" }
  2. (Opsional) Tambahkan AWS IoT pada grup objek baru atau yang sudah ada. Anda menggunakan grup objek untuk mengelola armada perangkat inti Greengrass. Saat men-deploy komponen perangkat lunak ke perangkat, Anda dapat menargetkan perangkat atau grup perangkat. Anda dapat menambahkan suatu perangkat ke grup objek dengan deployment Greengrass aktif untuk men-deploy komponen perangkat lunak grup objek tersebut ke perangkat. Lakukan hal berikut:

    1. (Opsional) Buat grup objek AWS IoT.

      • Ganti MyGreengrassCoreGroup dengan nama kebijakan yang akan dibuat.

        catatan

        Nama grup objek tidak dapat berisi karakter titik dua (:).

      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup

      Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

      { "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" }
    2. Tambahkan objek AWS IoT pada grup objek.

      • Ganti MyGreengrassCore dengan nama objek AWS IoT Anda.

      • Ganti MyGreengrassCoreGroup dengan nama grup objek.

      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup

      Perintah tersebut tidak memiliki output apa pun jika permintaan berhasil.

Buat sertifikat

Saat Anda mendaftarkan perangkat sebagai objek AWS IoT, perangkat itu dapat menggunakan sertifikat digital untuk diautentikasi dengan AWS. Sertifikat ini memungkinkan perangkat untuk berkomunikasi dengan AWS IoT dan AWS IoT Greengrass.

Di bagian ini, Anda akan membuat dan mengunduh sertifikat yang dapat digunakan oleh perangkat untuk tersambung keAWS.

Untuk membuat sertifikat hal

  1. Buat folder di mana Anda mengunduh sertifikat untuk objek AWS IoT.

    mkdir greengrass-v2-certs
  2. Buat dan unduh sertifikat tersebut untuk objek AWS IoT.

    aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key

    Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

    { "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security reasons\n-----END RSA PRIVATE KEY-----\n" } }

    Simpan Amazon Resource Name (ARN) sertifikat untuk digunakan untuk mengonfigurasi sertifikat nanti.

Konfigurasikan sertifikat hal

Lampirkan sertifikat hal keAWS IoThal yang Anda buat sebelumnya, dan menambahkanAWS IoTkebijakan untuk sertifikat untuk menentukanAWS IoTizin untuk perangkat inti.

Untuk mengkonfigurasi sertifikat hal

  1. Lampirkan sertifikat pada objek AWS IoT.

    • Ganti MyGreengrassCore dengan nama objek AWS IoT Anda.

    • Ganti Amazon Resource Name (ARN) sertifikat dengan ARN sertifikat yang Anda buat pada langkah sebelumnya.

    aws iot attach-thing-principal --thing-name MyGreengrassCore --principal arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    Perintah tersebut tidak memiliki output apa pun jika permintaan berhasil.

  2. Buat dan lampirkan kebijakan AWS IoT yang menentukan izin AWS IoT untuk perangkat inti Greengrass Anda. Kebijakan berikut memungkinkan akses ke semua topik MQTT dan operasi Greengrass, sehingga perangkat Anda bekerja dengan aplikasi kustom dan perubahan di masa mendatang yang memerlukan operasi Greengrass baru. Anda dapat membatasi kebijakan ini berdasarkan kasus penggunaan Anda. Untuk informasi selengkapnya, lihat Kebijakan AWS IoT minimal untuk perangkat inti AWS IoT Greengrass V2.

    Jika Anda telah menyiapkan perangkat inti Greengrass sebelumnya, Anda dapat melampirkan kebijakan AWS IoT alih-alih menciptakan kebijakan baru.

    Lakukan hal berikut:

    1. Buat file yang berisiAWS IoTdokumen kebijakan yang diperlukan oleh perangkat inti Greengrass.

      Sebagai contoh, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

      nano greengrass-v2-iot-policy.json

      Salin JSON berikut ke dalam file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] } ] }
    2. BuatAWS IoTkebijakan dari dokumen kebijakan.

      • Ganti GreengrassV2IoTThingPolicy dengan nama kebijakan yang akan dibuat.

      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json

      Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

      { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] } ] }", "policyVersionId": "1" }
    3. Lampirkan kebijakan AWS IoT ke sertifikat objek AWS IoT.

      • Ganti GreengrassV2IoTThingPolicy dengan nama kebijakan yang akan dibuat.

      • Ganti ARN target dengan ARN sertifikat untuk objek AWS IoT Anda.

      aws iot attach-policy --policy-name GreengrassV2IoTThingPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

      Perintah tersebut tidak memiliki output apa pun jika permintaan berhasil.

Buat peran pertukaran token

Perangkat inti Greengrass menggunakan peran layanan IAM, yang disebut peran pertukaran token, untuk mengotorisasi panggilan ke layanan AWS. Perangkat menggunakanAWS IoTpenyedia kredensi untuk mendapatkan sementaraAWSkredensi untuk peran ini, yang memungkinkan perangkat untuk berinteraksi denganAWS IoT, kirim log ke Amazon CloudWatch Log, dan download artefak komponen khusus dari Amazon S3. Untuk informasi selengkapnya, lihat Otorisasi perangkat inti untuk berinteraksi dengan AWS layanan.

Anda menggunakanAWS IoT alias peranuntuk mengonfigurasi peran pertukaran token untuk perangkat inti Greengrass. Alias peran memungkinkan Anda mengubah peran pertukaran token untuk suatu perangkat tetapi menjaga konfigurasi perangkat tetap sama. Untuk informasi selengkapnya, lihat Mengotorisasi panggilan langsung ke layanan AWS di Panduan Developer AWS IoT Core.

Pada bagian ini, Anda membuat pertukaran token IAM role dan alias peran AWS IoT yang menunjuk ke peran tersebut. Jika Anda telah menyiapkan perangkat inti Greengrass, Anda dapat menggunakan peran pertukaran token dan alias peran alih-alih membuat yang baru. Kemudian, Anda mengonfigurasi objek AWS IoT untuk menggunakan peran dan alias itu.

Buat peran pertukaran token IAM role

  1. Buat peran IAM yang dapat digunakan oleh perangkat Anda sebagai peran pertukaran token. Lakukan hal berikut:

    1. Buat file yang berisi dokumen kebijakan kepercayaan yang memerlukan peran pertukaran token.

      Sebagai contoh, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

      nano device-role-trust-policy.json

      Salin JSON berikut ke dalam file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Buat peran pertukaran token dengan dokumen kebijakan kepercayaan.

      • Ganti GreengrassV2TokenExchangeRole dengan nama IAM role yang akan dibuat.

      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json

      Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

      { "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
    3. Buat file yang berisi dokumen kebijakan akses yang diperlukan oleh peran pertukaran token.

      Sebagai contoh, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

      nano device-role-access-policy.json

      Salin JSON berikut ke dalam file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
      catatan

      Kebijakan akses ini tidak mengizinkan akses ke artefak komponen dalam bucket S3. Untuk men-deploy komponen kustom yang menentukan artefak di Amazon S3, Anda harus menambahkan izin untuk peran tersebut untuk memungkinkan perangkat inti Anda untuk mengambil artefak komponen. Untuk informasi selengkapnya, lihat Izinkan akses ke bucket S3 untuk artefak komponen.

      Jika Anda belum memiliki bucket S3 untuk artefak komponen, Anda dapat menambahkan izin ini nanti setelah membuat bucket.

    4. Buat kebijakan IAM dari dokumen kebijakan.

      • Ganti GreengrassV2TokenExchangeRoleAccess dengan nama kebijakan IAM yang akan dibuat.

      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json

      Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

      { "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
    5. Lampirkan kebijakan IAM untuk peran pertukaran token.

      • Ganti GreengrassV2TokenExchangeRole dengan nama IAM role.

      • Ganti ARN peran dengan ARN dari kebijakan IAM yang Anda buat di langkah sebelumnya.

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      Perintah tersebut tidak memiliki output apa pun jika permintaan berhasil.

  2. BuatAWS IoTalias peran yang menunjuk ke peran pertukaran token.

    • Ganti GreengrassCoreTokenExchangeRoleAlias dengan nama alias peran yang akan dibuat.

    • Ganti ARN peran dengan ARN dari IAM role yang Anda buat di langkah sebelumnya.

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

    Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    catatan

    Untuk membuat alias peran, Anda harus memiliki izin untuk melewati IAM role pertukaran token ke AWS IoT. Jika Anda menerima pesan kesalahan saat Anda mencoba membuat alias peran, periksa apakahAWSpengguna memiliki izin ini. Untuk informasi lebih lanjut, lihat Memberikan izin pengguna untuk meneruskan peran ke layanan AWS di Panduan Pengguna AWS Identity and Access Management.

  3. Buat dan lampirkan kebijakan AWS IoT yang memungkinkan perangkat inti Greengrass Anda untuk menggunakan alias peran untuk meneruskan peran pertukaran token. Jika Anda telah menyiapkan perangkat inti Greengrass sebelumnya, Anda dapat melampirkan kebijakan AWS IoT pada alias perannya alih-alih menciptakan kebijakan baru. Lakukan hal berikut:

    1. (Opsional) Buat file yang berisi dokumen kebijakan AWS IoT yang diperlukan oleh alias peran tersebut.

      Sebagai contoh, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

      nano greengrass-v2-iot-role-alias-policy.json

      Salin JSON berikut ke dalam file.

      • Ganti ARN sumber daya dengan ARN alias peran Anda.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. BuatAWS IoTkebijakan dari dokumen kebijakan.

      • Ganti GreengrassCoreTokenExchangeRoleAliasPolicy dengan nama kebijakan AWS IoT yang akan dibuat.

      aws iot create-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --policy-document file://greengrass-v2-iot-role-alias-policy.json

      Respons tersebut serupa dengan contoh berikut ini, jika permintaannya berhasil.

      { "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy", "policyDocument": "{ \"Version\":\"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\" } ] }", "policyVersionId": "1" }
    3. Lampirkan kebijakan AWS IoT ke sertifikat objek AWS IoT.

      • Ganti GreengrassCoreTokenExchangeRoleAliasPolicy dengan nama kebijakan AWS IoT yang akan dibuat.

      • Ganti ARN target dengan ARN sertifikat untuk objek AWS IoT Anda.

      aws iot attach-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

      Perintah tersebut tidak memiliki output apa pun jika permintaan berhasil.

Unduh sertifikat ke perangkat

Sebelumnya, Anda telah mengunduh sertifikat perangkat ke komputer pengembangan. Pada bagian ini, Anda akan mengunduh sertifikat otoritas sertifikat (CA) akar. Kemudian, jika Anda berencana untuk menjalankanAWS IoT GreengrassPerangkat lunak inti di Docker pada komputer yang berbeda dari komputer pengembangan Anda, Anda menyalin sertifikat ke komputer host itu. ParameterAWS IoT GreengrassPerangkat lunak inti menggunakan sertifikat ini untuk terhubung keAWS IoTlayanan cloud.

Untuk mengunduh sertifikat ke perangkat

  1. Pada komputer pengembangan, download sertifikat otoritas sertifikat (CA) akar.AWS IoTSertifikat terkait dengan sertifikat CA akar Amazon secara default.

    Linux or Unix
    sudo curl -o ./greengrass-v2-certs/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    Windows Command Prompt (CMD)
    curl -o .\greengrass-v2-certs\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    PowerShell
    iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile .\greengrass-v2-certs\AmazonRootCA1.pem
  2. Jika Anda berencana untuk menjalankanAWS IoT GreengrassPerangkat lunak inti di Docker pada perangkat yang berbeda dari komputer pengembangan Anda, salin sertifikat ke komputer host. Jika SSH dan SCP diaktifkan pada komputer pengembangan dan komputer host, Anda dapat menggunakanscpperintah pada komputer pengembangan Anda untuk mentransfer sertifikat. Gantiperangkat-addressdengan alamat IP komputer host Anda.

    scp -r greengrass-v2-certs/ device-ip-address:~

Buat file konfigurasi

  1. Pada komputer host, buat folder tempat Anda menempatkan file konfigurasi.

    mkdir ./greengrass-v2-config
  2. Gunakan editor teks untuk membuat file konfigurasi bernama config.yaml di folder ./greengrass-v2-config.

    Misalnya, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat config.yaml.

    nano ./greengrass-v2-config/config.yaml
  3. Salin konten YAML berikut ke dalam file tersebut. File konfigurasi parsial ini menentukan parameter sistem dan parameter inti Greengrass.

    --- system: certificateFilePath: "/tmp/certs/device.pem.crt" privateKeyPath: "/tmp/certs/private.pem.key" rootCaPath: "/tmp/certs/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "nucleus-version" configuration: awsRegion: "region" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" iotDataEndpoint: "device-data-prefix-ats.iot.region.amazonaws.com" iotCredEndpoint: "device-credentials-prefix.credentials.region.amazonaws.com"

    Kemudian, ganti nilai berikut:

    • /tmp/certs. Direktori dalam kontainer Docker yang padanya Anda pasang sertifikat yang diunduh ketika Anda memulai kontainer.

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

    • MyGreengrassCore. Nama objek AWS IoT

    • nucleus-version. Versi perangkat lunak inti AWS IoT Greengrass yang akan diinstal. Nilai ini harus sesuai dengan versi gambar Docker atau Dockerfile yang telah Anda download. Jika Anda telah mengunduh citra Docker Greengrass dengan tanda latest, gunakan docker inspect image-id untuk melihat versi citra tersebut.

    • region. Wilayah AWS tempat Anda membuat sumber daya AWS IoT Anda. Anda juga harus menentukan nilai yang sama untuk variabel lingkungan AWS_REGION di file lingkungan.

    • GreengrassCoreTokenExchangeRoleAlias. Alias peran pertukaran token.

    • device-data-prefix. Awalan untuk titik akhir data AWS IoT Anda.

    • device-credentials-prefix. Awalan untuk Titik akhir kredensial AWS IoT Anda.

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=false COMPONENT_DEFAULT_USER=ggc_user:ggc_group INIT_CONFIG=/tmp/config/config.yaml

    Anda harus mengganti nilai berikut.

    • /greengrass/v2. Path ke folder akar yang akan digunakan untuk menginstal perangkat lunak inti AWS IoT Greengrass.

    • region. Wilayah AWS tempat Anda membuat sumber daya AWS IoT Anda. Anda harus menentukan nilai yang sama untuk parameter konfigurasi awsRegion di file konfigurasi Anda.

    • /tmp/config/. Folder tempat Anda memasang file konfigurasi saat Anda memulai kontainer Docker.

    catatan

    Anda dapat mengaturDEPLOY_DEV_TOOLSvariabel lingkungantrueuntuk menyebarkanKomponen Greengrass, yang memungkinkan Anda untuk mengembangkan komponen kustom di dalam wadah Docker. Kami menyarankan agar Anda menggunakan komponen ini hanya pada lingkungan pengembangan, bukan lingkungan produksi. Komponen ini menyediakan akses ke informasi dan operasi yang biasanya tidak Anda butuhkan di lingkungan produksi. Ikuti prinsip hak istimewa paling sedikit dengan menerapkan komponen ini ke perangkat inti yang 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 ini untuk menarikAWS IoT GreengrassGambar Docker dari Amazon ECR Publik.

    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 gambar Docker dari sumber yang berbeda, ganti amazon/aws-iot-greengrass:latest dengan nama gambar Docker Anda.

    docker run --rm --init -it --name aws-iot-greengrass \ -v path/to/greengrass-v2-config:/tmp/config/:ro \ -v path/to/greengrass-v2-certs:/tmp/certs: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 membuatFile lingkunganuntuk mengatur variabel lingkungan. Jika Anda tidak membuat file lingkungan, Anda dapat menggunakan--envargumen untuk mengatur variabel lingkungan langsung dalam 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.

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 terbaru file Compose yang disediakan oleh AWS dari GitHub.

  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 gambar Docker dari sumber yang berbeda, ganti amazon/aws-iot-greengrass:latest dengan nama gambar Docker Anda.

    version: '3.7' services: greengrass: init: true build: context: . container_name: aws-iot-greengrass image: amazon/aws-iot-greengrass:latest volumes: - /path/to/greengrass-v2-config:/tmp/config/:ro - /path/to/greengrass-v2-certs:/tmp/certs:ro env_file: .env ports: - "8883:8883"

    Parameter berikut dalam contoh ini Menulis file adalah opsional:

    • ports—Menerbitkan port kontainer 8883 ke mesin host. Parameter ini diperlukan jika Anda ingin menghubungkan 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 file lingkungan.lingkunganparameter untuk mengatur variabel langsung dalam 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-compose -f docker-compose.yml up

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.