Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat mengonfigurasi AWS IoT Greengrass komponen untuk menjalankan wadah Docker
-
Repositori gambar publik dan pribadi di Amazon Elastic Container Registry (Amazon ECR)
-
Repositori Hub Docker publik
-
Registri Terpercaya Docker publik
-
Bucket S3
Dalam komponen kustom Anda, sertakan URI gambar Docker sebagai artefak untuk mengambil gambar dan menjalankannya pada perangkat inti. Untuk gambar Amazon ECR dan Hub Docker, Anda dapat menggunakan komponen Manajer aplikasi Docker untuk men-download gambar dan mengelola kredensial untuk repositori Amazon ECR privat.
Topik
Persyaratan
Untuk menjalankan kontainer Docker dalam komponen, Anda memerlukan hal berikut:
-
Sebuah perangkat inti Greengrass. Jika Anda tidak memilikinya, lihat Tutorial: Memulai dengan AWS IoT Greengrass V2.
-
Docker Engine
1.9.1 atau yang lebih baru diinstal pada perangkat inti Greengrass. Versi 20.10 adalah versi terbaru yang diverifikasi untuk bekerja dengan perangkat lunak AWS IoT Greengrass Core. Anda harus menginstal Docker langsung pada perangkat inti sebelum Anda menyebarkan komponen yang menjalankan kontainer Docker. Tip
Anda juga dapat mengonfigurasi perangkat inti untuk menginstal Docker Engine saat komponen diinstal. Sebagai contoh, script install berikut menginstal Docker Engine sebelum memuat gambar Docker. Skrip install ini bekerja pada distribusi Linux berbasis Debian, seperti Ubuntu. Jika Anda mengonfigurasi komponen untuk menginstal Docker Engine dengan perintah ini, Anda mungkin perlu mengatur
RequiresPrivilege
ketrue
dalam skrip siklus hidup untuk menjalankan instalasi dan perintah.docker
Untuk informasi selengkapnya, lihat AWS IoT Greengrass referensi resep komponen.apt-get install docker-ce docker-ce-cli containerd.io && docker load -i {artifacts:path}/
hello-world.tar
-
Pengguna sistem yang menjalankan komponen kontainer Docker harus memiliki izin root atau administrator, atau Anda harus mengonfigurasi Docker untuk menjalankannya sebagai pengguna non-root atau non-admistrator.
-
Pada perangkat Linux, Anda dapat menambahkan pengguna ke
docker
grup untuk memanggildocker
perintah tanpasudo
. -
Pada perangkat Windows, Anda dapat menambahkan pengguna ke
docker-users
grup untuk memanggildocker
perintah tanpa hak istimewa adminstrator.
Untuk menambahkan
ggc_user
, atau pengguna non-root yang Anda gunakan untuk menjalankan komponen kontainer Docker, kedocker
grup, jalankan perintah berikut.sudo usermod -aG docker
ggc_user
Untuk informasi selengkapnya, lihat Mengelola Docker sebagai pengguna non-root
. -
-
File diakses oleh komponen kontainer Docker yang dipasang sebagai volume
dalam kontainer Docker. -
Jika Anda mengkonfigurasi perangkat lunak AWS IoT Greengrass Core untuk menggunakan proxy jaringan, Anda harus mengkonfigurasi Docker untuk menggunakan server proxy yang sama
.
Selain persyaratan ini, Anda juga harus memenuhi persyaratan berikut jika hal itu berlaku pada lingkungan Anda:
-
Untuk menggunakan Docker Compose
untuk membuat dan memulai kontainer Docker Anda, instal Docker Compose pada perangkat inti Greengrass Anda, dan upload file Docker Compose ke bucket S3. Anda harus menyimpan file Compose Anda dalam bucket S3 yang sama Akun AWS dan Wilayah AWS sebagai komponen. Untuk contoh yang menggunakan perintah docker-compose up
dalam komponen kustom, lihat Jalankan kontainer Docker dari gambar publik di Amazon ECR atau Docker Hub. -
Jika gambar Docker Anda disimpan di Amazon ECR atau Docker Hub, sertakan komponen manajer komponen Docker sebagai dependensi dalam komponen kontainer Docker Anda. Anda harus memulai daemon Docker pada perangkat inti sebelum Anda men-deploy komponen Anda.
Juga, sertakan gambar URIs sebagai artefak komponen. Gambar URIs harus dalam format
docker:
seperti yang ditunjukkan pada contoh berikut:registry
/image
[:tag|@digest
]-
Gambar Amazon ECR privat:
docker:
account-id
.dkr.ecr.region
.amazonaws.com/repository
/image
[:tag|@digest
] -
Citra Amazon ECR publik:
docker:public.ecr.aws/
repository
/image
[:tag|@digest
] -
Citra Hub Docker publik:
docker:
name
[:tag|@digest
]
Untuk informasi selengkapnya tentang menjalankan kontainer Docker dari gambar yang disimpan di repositori publik, lihat. Jalankan kontainer Docker dari gambar publik di Amazon ECR atau Docker Hub
-
-
Jika gambar Docker Anda disimpan dalam repositori privat Amazon ECR, maka Anda harus menyertakan komponen layanan pertukaran token sebagai dependensi dalam komponen kontainer Docker. Juga, Peran perangkat Greengrass harus mengizinkan tindakan
ecr:GetAuthorizationToken
,ecr:BatchGetImage
, danecr:GetDownloadUrlForLayer
, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
Untuk informasi tentang cara menjalankan kontainer Docker dari gambar yang disimpan dalam repositori privat Amazon ECR, lihat Jalankan kontainer Docker dari gambar privat di Amazon ECR.
-
Untuk menggunakan gambar Docker yang disimpan dalam repositori pribadi Amazon ECR, repositori pribadi harus sama dengan perangkat inti. Wilayah AWS
-
Jika citra Docker atau file Compose disimpan dalam bucket S3, peran perangkat Greengrass harus memungkinkan izin
s3:GetObject
untuk memungkinkan perangkat inti mengunduh citra tersebut sebagai artefak komponen, seperti yang ditunjukkan dalam kebijakan IAM contoh berikut.{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
Untuk informasi tentang cara menjalankan kontainer Docker dari gambar yang disimpan dalam Amazon S3, lihat Jalankan kontainer Docker dari gambar di Amazon S3.
-
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager di komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
Jalankan kontainer Docker dari gambar publik di Amazon ECR atau Docker Hub
Bagian ini menjelaskan bagaimana Anda dapat membuat komponen kustom yang menggunakan Docker Compose untuk menjalankan kontainer Docker dari gambar Docker yang disimpan di Amazon ECR dan Docker Hub.
Untuk menjalankan kontainer Docker menggunakan Docker Compose
-
Buat dan unggah file Docker Compose ke bucket Amazon S3. Pastikan bahwa peran perangkat Greengrass memungkinkan izin
s3:GetObject
untuk mengaktifkan perangkat untuk mengakses file Compose. Contoh file Compose yang ditampilkan dalam contoh berikut mencakup image Amazon CloudWatch Agent dari Amazon ECR dan image MySQL dari Docker Hub.version: "3" services: cloudwatchagent: image: "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest" mysql: image: "mysql:8.0"
-
Buat komponen khusus di perangkat AWS IoT Greengrass inti Anda. Contoh resep yang ditunjukkan dalam contoh berikut memiliki sifat berikut:
-
Komponen manajer aplikasi Docker sebagai dependensi. Komponen ini memungkinkan AWS IoT Greengrass untuk mengunduh gambar dari repositori Amazon ECR dan Docker Hub publik.
-
Artefak komponen yang menentukan gambar Docker dalam repositori Amazon ECR publik.
-
Artefak komponen yang menentukan gambar Docker dalam repositori Docker Hub publik.
-
Komponen artefak yang menentukan file Docker Compose yang mencakup kontainer untuk gambar Docker yang ingin Anda jalankan.
-
Skrip lifecycle run yang menggunakan docker-compose up
untuk membuat dan memulai sebuah kontainer dari citra yang ditentukan.
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.MyDockerComposeComponent", "ComponentVersion": "1.0.0", "ComponentDescription": "A component that uses Docker Compose to run images from public Amazon ECR and Docker Hub.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.DockerApplicationManager": { "VersionRequirement": "~2.0.0" } }, "Manifests": [ { "Platform": { "os": "all" }, "Lifecycle": { "Run": "docker-compose -f {artifacts:path}/docker-compose.yaml up" }, "Artifacts": [ { "URI": "docker:public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest" }, { "URI": "docker:mysql:8.0" }, { "URI": "s3://amzn-s3-demo-bucket
/folder
/docker-compose.yaml" } ] } ] }catatan
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager di komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
-
-
Uji komponen untuk memverifikasi bahwa ia bekerja seperti yang diharapkan.
penting
Anda harus memulai daemon Docker sebelum Anda men-deploy komponen.
Setelah Anda men-deploy komponen lokal, Anda dapat menjalankan perintah kontainer docker ls
untuk memverifikasi bahwa kontainer Anda berjalan. docker container ls
-
Saat komponen sudah siap, unggah komponen untuk digunakan AWS IoT Greengrass ke perangkat inti lainnya. Untuk informasi selengkapnya, lihat Publikasikan komponen untuk diterapkan ke perangkat inti Anda.
Jalankan kontainer Docker dari gambar privat di Amazon ECR
Bagian ini menjelaskan bagaimana Anda dapat membuat komponen kustom yang menjalankan kontainer Docker dari gambar Docker yang disimpan dalam repositori privat di Amazon ECR.
Untuk menjalankan kontainer Docker
-
Buat komponen khusus di perangkat AWS IoT Greengrass inti Anda. Gunakan contoh berikut resep, yang memiliki properti berikut:
-
Komponen manajer aplikasi Docker sebagai dependensi. Komponen ini memungkinkan AWS IoT Greengrass untuk mengelola kredensial untuk mengunduh gambar dari repositori privat.
-
Komponen layanan pertukaran token sebagai dependensi. Komponen ini memungkinkan AWS IoT Greengrass untuk mengambil AWS kredensil untuk berinteraksi dengan Amazon ECR.
-
Artefak komponen yang menentukan gambar Docker dalam repositori Amazon ECR privat.
-
Skrip lifecycle run yang menggunakan docker run
untuk membuat dan memulai sebuah kontainer dari gambar.
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.MyPrivateDockerComponent", "ComponentVersion": "1.0.0", "ComponentDescription": "A component that runs a Docker container from a private Amazon ECR image.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.DockerApplicationManager": { "VersionRequirement": "~2.0.0" }, "aws.greengrass.TokenExchangeService": { "VersionRequirement": "~2.0.0" } }, "Manifests": [ { "Platform": { "os": "all" }, "Lifecycle": { "Run": "docker run
account-id
.dkr.ecr.region
.amazonaws.com/repository
[:tag|@digest
]" }, "Artifacts": [ { "URI": "docker:account-id
.dkr.ecr.region
.amazonaws.com/repository
[:tag|@digest
]" } ] } ] }catatan
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager di komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
-
-
Uji komponen untuk memverifikasi bahwa ia bekerja seperti yang diharapkan.
penting
Anda harus memulai daemon Docker sebelum Anda men-deploy komponen.
Setelah Anda men-deploy komponen lokal, Anda dapat menjalankan perintah kontainer docker ls
untuk memverifikasi bahwa kontainer Anda berjalan. docker container ls
-
Unggah komponen AWS IoT Greengrass untuk disebarkan ke perangkat inti lainnya. Untuk informasi selengkapnya, lihat Publikasikan komponen untuk diterapkan ke perangkat inti Anda.
Jalankan kontainer Docker dari gambar di Amazon S3
Bagian ini menjelaskan bagaimana Anda dapat menjalankan kontainer Docker dalam komponen dari gambar Docker yang disimpan di Amazon S3.
Jalankan kontainer Docker dalam komponen dari gambar di Amazon S3
-
Jalankan perintah docker save
untuk membuat cadangan kontainer Docker. Anda menyediakan cadangan ini sebagai artefak komponen untuk menjalankan kontainer pada AWS IoT Greengrass. Ganti hello-world
dengan nama gambar, dan gantihello-world.tar
dengan nama file arsip yang akan dibuat.docker save
hello-world
>artifacts/com.example.MyDockerComponent/1.0.0/hello-world.tar
-
Buat komponen khusus di perangkat AWS IoT Greengrass inti Anda. Gunakan contoh resep berikut, yang memiliki properti berikut:
-
Skrip lifecycle install yang menggunakan docker load
untuk memuat gambar Docker dari arsip. -
Skrip lifecycle run yang menggunakan docker run
untuk membuat dan memulai sebuah kontainer dari gambar. Opsi --rm
membersihkan kontainer ketika keluar.
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.MyS3DockerComponent", "ComponentVersion": "1.0.0", "ComponentDescription": "A component that runs a Docker container from an image in an S3 bucket.", "ComponentPublisher": "Amazon", "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": { "Script": "docker load -i {artifacts:path}/
hello-world.tar
" }, "Run": { "Script": "docker run --rmhello-world
" } } } ] }catatan
Untuk menggunakan interprocess communication (IPC), AWS credentials, atau stream manager di komponen container Docker Anda, Anda harus menentukan opsi tambahan saat menjalankan container Docker. Untuk informasi selengkapnya, lihat berikut ini:
-
-
Uji komponen untuk memverifikasi bahwa ia bekerja seperti yang diharapkan.
Setelah Anda men-deploy komponen lokal, Anda dapat menjalankan perintah kontainer docker ls
untuk memverifikasi bahwa kontainer Anda berjalan. docker container ls
-
Ketika komponen sudah siap, unggah arsip gambar Docker ke bucket S3, dan tambahkan URI ke resep komponen. Kemudian, Anda dapat mengunggah komponen AWS IoT Greengrass untuk menyebarkan ke perangkat inti lainnya. Untuk informasi selengkapnya, lihat Publikasikan komponen untuk diterapkan ke perangkat inti Anda.
Setelah selesai, resep komponen akan terlihat seperti contoh berikut.
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.MyS3DockerComponent", "ComponentVersion": "1.0.0", "ComponentDescription": "A component that runs a Docker container from an image in an S3 bucket.", "ComponentPublisher": "Amazon", "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": { "Script": "docker load -i {artifacts:path}/
hello-world.tar
" }, "Run": { "Script": "docker run --rmhello-world
" } }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.MyDockerComponent/1.0.0/hello-world.tar
" } ] } ] }
Gunakan interprocess communication dalam komponen kontainer Docker
Anda dapat menggunakan perpustakaan Greengrass interprocess communication (IPC) AWS IoT Device SDK untuk berkomunikasi dengan inti Greengrass, komponen Greengrass lainnya, dan. AWS IoT Core Untuk informasi selengkapnya, lihat Gunakan AWS IoT Device SDK untuk berkomunikasi dengan inti Greengrass, komponen lain, dan AWS IoT Core.
Untuk menggunakan IPC dalam komponen kontainer Docker, Anda harus menjalankan wadah Docker dengan parameter berikut:
-
Pasang soket IPC di wadah. Inti Greengrass menyediakan jalur file soket IPC dalam variabel lingkungan.
AWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT
-
Atur variabel
SVCUID
danAWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT
lingkungan ke nilai yang disediakan oleh inti Greengrass ke komponen. Komponen Anda menggunakan variabel lingkungan ini untuk mengautentikasi koneksi ke inti Greengrass.
contoh Contoh resep: Publikasikan pesan MQTT ke (Python) AWS IoT Core
Resep berikut mendefinisikan contoh komponen kontainer Docker yang menerbitkan pesan MQTT ke. AWS IoT Core Resep ini memiliki sifat sebagai berikut:
-
Kebijakan otorisasi (
accessControl
) yang memungkinkan komponen untuk mempublikasikan pesan MQTT pada semua topik. AWS IoT Core Untuk informasi lebih lanjut, lihat Otorisasi komponen untuk melakukan operasi IPC dan otorisasi AWS IoT Core MQTT IPC. -
Artefak komponen yang menentukan image Docker sebagai arsip TAR di Amazon S3.
-
Skrip penginstalan siklus hidup yang memuat gambar Docker dari arsip TAR.
-
Skrip proses siklus hidup yang menjalankan wadah Docker dari gambar. Perintah Docker run
memiliki argumen berikut: -
-v
Argumen memasang soket Greengrass IPC di wadah. -
Dua
-e
argumen pertama mengatur variabel lingkungan yang diperlukan dalam wadah Docker. -
-e
Argumen tambahan mengatur variabel lingkungan yang digunakan oleh contoh ini. -
--rm
Argumen membersihkan wadah saat keluar.
-
{
"RecipeFormatVersion": "2020-01-25",
"ComponentName": "com.example.python.docker.PublishToIoTCore",
"ComponentVersion": "1.0.0",
"ComponentDescription": "Uses interprocess communication to publish an MQTT message to IoT Core.",
"ComponentPublisher": "Amazon",
"ComponentConfiguration": {
"DefaultConfiguration": {
"topic": "test/topic/java",
"message": "Hello, World!",
"qos": "1",
"accessControl": {
"aws.greengrass.ipc.mqttproxy": {
"com.example.python.docker.PublishToIoTCore:pubsub:1": {
"policyDescription": "Allows access to publish to IoT Core on all topics.",
"operations": [
"aws.greengrass#PublishToIoTCore"
],
"resources": [
"*"
]
}
}
}
}
},
"Manifests": [
{
"Platform": {
"os": "all"
},
"Lifecycle": {
"install": "docker load -i {artifacts:path}/publish-to-iot-core.tar",
"Run": "docker run -v $AWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT:$AWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT -e SVCUID -e AWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT -e MQTT_TOPIC=\"{configuration:/topic}\" -e MQTT_MESSAGE=\"{configuration:/message}\" -e MQTT_QOS=\"{configuration:/qos}\" --rm publish-to-iot-core"
},
"Artifacts": [
{
"URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.python.docker.PublishToIoTCore/1.0.0/publish-to-iot-core.tar"
}
]
}
]
}
Gunakan AWS kredensil dalam komponen wadah Docker (Linux)
Anda dapat menggunakan komponen layanan pertukaran token untuk berinteraksi dengan AWS layanan di komponen Greengrass. Komponen ini menyediakan AWS kredensyal dari peran pertukaran token perangkat inti menggunakan server kontainer lokal. Untuk informasi selengkapnya, lihat Berinteraksi dengan AWS layanan.
catatan
Contoh di bagian ini hanya berfungsi pada perangkat inti Linux.
Untuk menggunakan AWS kredensyal dari layanan pertukaran token dalam komponen kontainer Docker, Anda harus menjalankan container Docker dengan parameter berikut:
-
Berikan akses ke jaringan host menggunakan
--network=host
argumen. Opsi ini memungkinkan kontainer Docker untuk terhubung ke layanan pertukaran token lokal untuk mengambil kredensyal AWS . Argumen ini hanya berfungsi pada Docker untuk Linux.Awas
Opsi ini memberikan akses kontainer ke semua antarmuka jaringan lokal pada host, jadi opsi ini kurang aman daripada jika Anda menjalankan kontainer Docker tanpa akses ini ke jaringan host. Pertimbangkan ini saat Anda mengembangkan dan menjalankan komponen kontainer Docker yang menggunakan opsi ini. Untuk informasi selengkapnya, lihat Jaringan: host
di Dokumentasi Docker. -
Atur variabel
AWS_CONTAINER_CREDENTIALS_FULL_URI
danAWS_CONTAINER_AUTHORIZATION_TOKEN
lingkungan ke nilai yang disediakan oleh inti Greengrass ke komponen. AWS SDKs gunakan variabel lingkungan ini untuk mengambil AWS kredensil.
contoh Contoh resep: Daftar bucket S3 dalam komponen wadah Docker (Python)
Resep berikut mendefinisikan contoh komponen kontainer Docker yang mencantumkan bucket S3 di bucket Anda. Akun AWS Resep ini memiliki sifat sebagai berikut:
-
Komponen layanan pertukaran token sebagai dependensi. Ketergantungan ini memungkinkan komponen untuk mengambil AWS kredensi untuk berinteraksi dengan layanan lain. AWS
-
Artefak komponen yang menentukan image Docker sebagai arsip tar di Amazon S3.
-
Skrip penginstalan siklus hidup yang memuat gambar Docker dari arsip TAR.
-
Skrip proses siklus hidup yang menjalankan wadah Docker dari gambar. Perintah Docker run
memiliki argumen berikut: -
--network=host
Argumen menyediakan akses kontainer ke jaringan host, sehingga wadah dapat terhubung ke layanan pertukaran token. -
-e
Argumen menetapkan variabel lingkungan yang diperlukan dalam wadah Docker. -
--rm
Argumen membersihkan wadah saat keluar.
-
{
"RecipeFormatVersion": "2020-01-25",
"ComponentName": "com.example.python.docker.ListS3Buckets",
"ComponentVersion": "1.0.0",
"ComponentDescription": "Uses the token exchange service to lists your S3 buckets.",
"ComponentPublisher": "Amazon",
"ComponentDependencies": {
"aws.greengrass.TokenExchangeService": {
"VersionRequirement": "^2.0.0",
"DependencyType": "HARD"
}
},
"Manifests": [
{
"Platform": {
"os": "linux"
},
"Lifecycle": {
"install": "docker load -i {artifacts:path}/list-s3-buckets.tar",
"Run": "docker run --network=host -e AWS_CONTAINER_AUTHORIZATION_TOKEN -e AWS_CONTAINER_CREDENTIALS_FULL_URI --rm list-s3-buckets"
},
"Artifacts": [
{
"URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.python.docker.ListS3Buckets/1.0.0/list-s3-buckets.tar"
}
]
}
]
}
Gunakan pengelola aliran di komponen wadah Docker (Linux)
Anda dapat menggunakan komponen pengelola aliran untuk mengelola aliran data di komponen Greengrass. Komponen ini memungkinkan Anda untuk memproses aliran data dan mentransfer data IoT volume tinggi ke file. AWS Cloud AWS IoT Greengrass menyediakan SDK manajer aliran yang Anda gunakan untuk berinteraksi dengan komponen pengelola aliran. Untuk informasi selengkapnya, lihat Kelola aliran data di perangkat inti Greengrass.
catatan
Contoh di bagian ini hanya berfungsi pada perangkat inti Linux.
Untuk menggunakan SDK manajer aliran dalam komponen kontainer Docker, Anda harus menjalankan container Docker dengan parameter berikut:
-
Berikan akses ke jaringan host menggunakan
--network=host
argumen. Opsi ini memungkinkan wadah Docker untuk berinteraksi dengan komponen pengelola aliran melalui koneksi TLS lokal. Argumen ini hanya berfungsi pada Docker untuk LinuxAwas
Opsi ini memberikan akses kontainer ke semua antarmuka jaringan lokal pada host, jadi opsi ini kurang aman daripada jika Anda menjalankan kontainer Docker tanpa akses ini ke jaringan host. Pertimbangkan ini saat Anda mengembangkan dan menjalankan komponen kontainer Docker yang menggunakan opsi ini. Untuk informasi selengkapnya, lihat Jaringan: host
di Dokumentasi Docker. -
Jika Anda mengonfigurasi komponen pengelola aliran agar memerlukan otentikasi, yang merupakan perilaku default, setel variabel
AWS_CONTAINER_CREDENTIALS_FULL_URI
lingkungan ke nilai yang disediakan inti Greengrass ke komponen. Untuk informasi selengkapnya, lihat konfigurasi manajer aliran. -
Jika Anda mengonfigurasi komponen pengelola aliran untuk menggunakan port non-default, gunakan komunikasi antarproses (IPC) untuk mendapatkan port dari konfigurasi komponen manajer aliran. Anda harus menjalankan wadah Docker dengan opsi tambahan untuk menggunakan IPC. Untuk informasi selengkapnya, lihat berikut ini:
contoh Contoh resep: Streaming file ke bucket S3 dalam komponen wadah Docker (Python)
Resep berikut mendefinisikan contoh komponen kontainer Docker yang membuat file dan mengalirkannya ke bucket S3. Resep ini memiliki sifat sebagai berikut:
-
Komponen stream manager sebagai dependensi. Ketergantungan ini memungkinkan komponen menggunakan SDK manajer aliran untuk berinteraksi dengan komponen pengelola aliran.
-
Artefak komponen yang menentukan image Docker sebagai arsip TAR di Amazon S3.
-
Skrip penginstalan siklus hidup yang memuat gambar Docker dari arsip TAR.
-
Skrip proses siklus hidup yang menjalankan wadah Docker dari gambar. Perintah Docker run
memiliki argumen berikut: -
--network=host
Argumen menyediakan akses kontainer ke jaringan host, sehingga kontainer dapat terhubung ke komponen manajer aliran. -
-e
Argumen pertama menetapkan variabelAWS_CONTAINER_AUTHORIZATION_TOKEN
lingkungan yang diperlukan dalam wadah Docker. -
-e
Argumen tambahan mengatur variabel lingkungan yang digunakan oleh contoh ini. -
-v
Argumen memasang folder kerja komponen di wadah. Contoh ini membuat file di folder kerja untuk mengunggah file itu ke Amazon S3 menggunakan pengelola aliran. -
--rm
Argumen membersihkan wadah saat keluar.
-
{
"RecipeFormatVersion": "2020-01-25",
"ComponentName": "com.example.python.docker.StreamFileToS3",
"ComponentVersion": "1.0.0",
"ComponentDescription": "Creates a text file and uses stream manager to stream the file to S3.",
"ComponentPublisher": "Amazon",
"ComponentDependencies": {
"aws.greengrass.StreamManager": {
"VersionRequirement": "^2.0.0",
"DependencyType": "HARD"
}
},
"ComponentConfiguration": {
"DefaultConfiguration": {
"bucketName": ""
}
},
"Manifests": [
{
"Platform": {
"os": "linux"
},
"Lifecycle": {
"install": "docker load -i {artifacts:path}/stream-file-to-s3.tar",
"Run": "docker run --network=host -e AWS_CONTAINER_AUTHORIZATION_TOKEN -e BUCKET_NAME=\"{configuration:/bucketName}\" -e WORK_PATH=\"{work:path}\" -v {work:path}:{work:path} --rm stream-file-to-s3"
},
"Artifacts": [
{
"URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.python.docker.StreamFileToS3/1.0.0/stream-file-to-s3.tar"
}
]
}
]
}