Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengautentikasi dengan repositori gambar
Topik ini menjelaskan cara mengautentikasi ke repositori gambar online dengan Elastic Beanstalk. Untuk repositori pribadi, Elastic Beanstalk harus mengautentikasi sebelum dapat menarik dan menyebarkan gambar Anda. Untuk Amazon ECR Public, otentikasi bersifat opsional tetapi memberikan batas tarif yang lebih tinggi dan keandalan yang lebih baik.
Menggunakan gambar dari repositori Amazon ECR
Anda dapat menyimpan gambar Docker kustom Anda AWS dengan Amazon Elastic Container Registry
Saat Anda menyimpan gambar Docker di Amazon ECR, Elastic Beanstalk secara otomatis mengautentikasi registri Amazon ECR dengan profil instans lingkungan Anda. Oleh karena itu, Anda harus memberikan izin kepada instans Anda untuk mengakses gambar di repositori Amazon ECR Anda. Untuk melakukannya, tambahkan izin ke profil instans lingkungan Anda dengan melampirkan kebijakan EC2 ContainerRegistryReadOnly terkelola Amazon ke profil instance. Ini menyediakan akses hanya-baca ke semua repositori Amazon ECR di akun Anda. Anda juga memiliki opsi untuk hanya mengakses repositori tunggal dengan menggunakan templat berikut untuk membuat kebijakan khusus:
Ganti Amazon Resource Name (ARN) di kebijakan di atas dengan ARN repositori Anda.
Anda harus menentukan informasi gambar dalam Dockerrun.aws.json file Anda. Konfigurasi akan berbeda tergantung pada platform mana yang Anda gunakan.
Untuk platform Docker yang dikelola ECS, gunakan image kunci dalam objek definisi kontainer:
"containerDefinitions": [
{
"name": "my-image",
"image": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
Untuk platform Docker lihat gambar dengan URL. URL masuk dalam Image definisi Dockerrun.aws.json file Anda:
"Image": {
"Name": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
"Update": "true"
},
Menggunakan AWS Secrets Manager
Konfigurasikan Elastic Beanstalk untuk mengautentikasi dengan repositori pribadi Anda sebelum penerapan untuk mengaktifkan akses ke gambar kontainer Anda.
Pendekatan ini menggunakan fase prebuild dari proses penyebaran Elastic Beanstalk dengan dua komponen:
-
ebextensions untuk menentukan variabel lingkungan yang menyimpan kredensyal repositori
-
skrip kait platform untuk dieksekusi docker login sebelum menarik gambar
Skrip hook mengambil nama pengguna dan kata sandi dari variabel lingkungan yang diisi dari satu AWS Secrets Manager rahasia dalam format JSON. Fitur ini membutuhkan Elastic Beanstalk Docker dan platform Docker yang dikelola ECS yang dirilis pada atau setelah 13 Januari 2026. Untuk detail selengkapnya, lihat rahasia lingkungan.
Untuk mengonfigurasi Elastic Beanstalk untuk mengautentikasi ke repositori pribadi Anda dengan AWS Secrets Manager
catatan
Sebelum melanjutkan, pastikan Anda telah menyiapkan kredensyal Anda AWS Secrets Manager dan mengonfigurasi izin IAM yang diperlukan. Lihat Prasyarat untuk mengonfigurasi rahasia sebagai variabel lingkungan untuk detailnya.
-
Buat struktur direktori berikut untuk proyek Anda:
├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile -
Gunakan AWS Secrets Manageruntuk menyimpan kredensyal repositori pribadi Anda sebagai rahasia berformat JSON.
aws secretsmanager create-secret --name repo-credentials \ --secret-string '{"username":"myuser","password":"mypassword"}' -
Membuat file
env.configberikut dan menempatkannya di direktori.ebextensionsseperti yang ditunjukkan dalam struktur direktori sebelumnya. Konfigurasi ini menggunakan aws:elasticbeanstalk:aplikasi:environmentsecrets namespace dengan ekstraksi kunci JSON untuk menginisialisasi dan variabel lingkungan ElasticUSERBeanstalk dariPASSWDmasing-masing bidang dalam rahasia.option_settings: aws:elasticbeanstalk:application:environmentsecrets: USER: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:username PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:password -
Buat file
01login.shskrip berikut dan letakkan di lokasi berikut (juga ditunjukkan dalam struktur direktori sebelumnya):-
.platform/confighooks/prebuild/01login.sh -
.platform/hooks/prebuild/01login.sh
#!/bin/bash echo $PASSWD | docker login -u $USER --password-stdin01login.shSkrip menggunakan variabel lingkungan yang dikonfigurasi pada Langkah 3 dan meneruskan kata sandi ke docker login viastdin. Untuk informasi selengkapnya tentang otentikasi Docker, lihat docker login di dokumentasi Docker. Catatan
-
Platform Docker yang dikelola ECS menggunakan sintaks ECS asli untuk mereferensikan rahasia. Untuk informasi selengkapnya, lihat Lulus rahasia Secrets Manager melalui variabel lingkungan Amazon ECS di Panduan Pengembang Layanan Kontainer Elastis Amazon.
-
Untuk informasi selengkapnya tentang kait platform, lihat Hook platform di Memperluas platform Linux Elastic Beanstalk.
-
Setelah otentikasi dikonfigurasi, Elastic Beanstalk dapat menarik dan menyebarkan gambar dari repositori pribadi Anda.
Menggunakan file Dockerrun.aws.json
Bagian ini menjelaskan pendekatan lain untuk mengotentikasi Elastic Beanstalk ke repositori pribadi. Dengan pendekatan ini, Anda menghasilkan file otentikasi dengan perintah Docker, dan kemudian mengunggah file otentikasi ke ember Amazon S3. Anda juga harus menyertakan informasi bucket di file Dockerrun.aws.json Anda.
Untuk menghasilkan dan menyediakan file otentikasi ke Elastic Beanstalk
-
Menghasilkan file autentikasi dengan perintah docker login. Untuk repositori di Docker Hub, jalankandocker login:
$docker loginUntuk pendaftar lainnya, sertakan URL server registri:
$docker loginregistry-server-urlcatatan
Jika lingkungan Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI Docker (sebelum Amazon Linux 2), baca informasi yang sesuai di Konfigurasi docker di Amazon Linux AMI (sebelumnya Amazon Linux 2).
Untuk informasi selengkapnya tentang file autentikasi, lihat Simpan gambar di Docker Hub
dan docker login di situs web Docker. -
Unggah salinan file autentikasi yang bernama
.dockercfgke bucket aman Amazon S3 .-
Bucket Amazon S3 harus di-host Wilayah AWS sama dengan lingkungan yang menggunakannya. Elastic Beanstalk tidak dapat men-download file dari bucket Amazon S3 yang di-host di Kawasan lain.
-
Memberikan izin untuk operasi
s3:GetObjectuntuk IAM role di profil instans. Untuk informasi selengkapnya, lihat Mengelola profil instans Elastic Beanstalk.
-
-
Sertakan informasi bucket Amazon S3 di parameter
Authenticationpada fileDockerrun.aws.json.Contoh berikut menunjukkan penggunaan file otentikasi bernama
mydockercfgdalam sebuah bucket bernamaamzn-s3-demo-bucketuntuk menggunakan gambar privat di registri pihak ketiga. Untuk nomor versi yang benarAWSEBDockerrunVersion, lihat catatan yang mengikuti contoh.{ "AWSEBDockerrunVersion": "version-no", "Authentication": { "Bucket": "amzn-s3-demo-bucket", "Key": "mydockercfg" }, "Image": { "Name": "quay.io/johndoe/private-image", "Update": "true" }, "Ports": [ { "ContainerPort": "1234" } ], "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } ], "Logging": "/var/log/nginx" }Versi Dockerrun.aws.json
Parameter
AWSEBDockerrunVersionmenunjukkan versi fileDockerrun.aws.json.-
The Docker AL2 dan AL2023 platform menggunakan versi file berikut.
Dockerrun.aws.json v3— lingkungan yang menggunakan Docker Compose.
Dockerrun.aws.json v1— lingkungan yang tidak menggunakan Docker Compose.
-
ECS yang berjalan di Amazon Linux 2 dan ECS yang berjalan AL2023 menggunakan file.
Dockerrun.aws.json v2Platform pensiunan ECS-Multicontainer Docker Amazon Linux AMI AL1 () juga menggunakan versi yang sama ini.
-
Setelah Elastic Beanstalk dapat mengotentikasi dengan registri online yang host repositori pribadi, gambar Anda dapat digunakan dan ditarik.
Menggunakan gambar dari Amazon ECR Public
Amazon ECR Public adalah registri kontainer publik yang menghosting gambar Docker. Meskipun repositori Publik Amazon ECR dapat diakses publik, autentikasi memberikan batas tarif yang lebih tinggi dan keandalan yang lebih baik untuk penerapan Anda.
catatan
Otentikasi publik Amazon ECR tidak didukung di wilayah (cn-*) dan AWS GovCloud wilayah () Tiongkok. us-gov-* Di wilayah ini, Elastic Beanstalk akan menggunakan tarikan yang tidak diautentikasi.
Untuk mengaktifkan autentikasi Publik Amazon ECR, tambahkan izin berikut ke profil instans lingkungan Anda. Untuk informasi selengkapnya tentang autentikasi Publik Amazon ECR, lihat Autentikasi registri di Amazon ECR publik di Panduan Pengguna Publik Amazon Elastic Container Registry:
Setelah izin ini dilampirkan ke profil instans Anda, Elastic Beanstalk akan otomatis melakukan autentikasi dengan pendaftar Publik Amazon ECR. Anda dapat mereferensikan gambar Amazon ECR Public menggunakan public.ecr.aws/ format standar dalam registry-alias/repository-name:tagDockerrun.aws.json file Anda atau Dockerfile.