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 Systems Manager (SSM) Parameter Store atau 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 dengan aman mengambil kredensyal dari variabel lingkungan yang diisi dari Parameter Store atau. AWS Systems Manager AWS Secrets ManagerFitur ini membutuhkan Elastic Beanstalk Docker dan platform Docker yang dikelola ECS yang dirilis pada atau setelah 26 Maret 2025. Untuk detail selengkapnya, lihat konfigurasi variabel lingkungan.
Untuk mengonfigurasi Elastic Beanstalk untuk mengautentikasi ke repositori pribadi Anda dengan Parameter Store atau AWS Systems ManagerAWS Secrets Manager
catatan
Sebelum melanjutkan, pastikan Anda telah menyiapkan kredensyal Anda di AWS Systems Manager Parameter Store atau 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 Systems ManagerParameter Store atau AWS Secrets Manageruntuk menyimpan kredensyal repositori pribadi Anda. Contoh ini menunjukkan AWS Systems Manager Parameter Store dan AWS Secrets Manager tetapi Anda dapat memilih untuk menggunakan hanya salah satu layanan ini.
aws ssm put-parameter --name USER --type SecureString --value "username" aws secretsmanager create-secret --name PASSWD --secret-string "passwd"
-
Membuat file
env.config
berikut dan menempatkannya di direktori.ebextensions
seperti yang ditunjukkan dalam struktur direktori sebelumnya. Konfigurasi ini menggunakan aws:elasticbeanstalk:aplikasi:environmentsecrets namespace untuk menginisialisasi variabel lingkunganPASSWD
ElasticUSER
Beanstalk dan ke nilai-nilai yang disimpan di Systems Manager Parameter Store.catatan
Pastikan nama variabel
USER
danPASSWD
cocokkan nama parameter yang digunakan dalam perintah put-parameter dan create-secret.option_settings: aws:elasticbeanstalk:application:environmentsecrets: USER: arn:aws:ssm:us-east-1:111122223333:parameter/user PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:passwd
-
Membuat file script
01login.sh
berikut dan menempatkan di direktori berikut (juga ditampilkan dalam struktur direktori sebelumnya):-
.platform/confighooks/prebuild
-
.platform/hooks/prebuild
### example 01login.sh #!/bin/bash echo $PASSWD | docker login -u $USER --password-stdin
01login.sh
Skrip menggunakan variabel lingkungan yang dikonfigurasi pada Langkah 3 dan meneruskan kata sandi dengan aman ke docker login viastdin
. Untuk informasi selengkapnya tentang otentikasi Docker, lihat docker login di dokumentasi Docker. Catatan
-
File Hook dapat berupa file biner atau file skrip yang dimulai dengan garis #! yang berisi jalur penerjemah mereka, seperti #!/bin/bash.
-
Untuk informasi lebih lanjut, lihat Hook platform pada Memperluas platform Elastic BeanstalkLinux .
-
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 login
Untuk pendaftar lainnya, sertakan URL server registri:
$
docker login
registry-server-url
catatan
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
.dockercfg
ke 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:GetObject
untuk IAM role di profil instans. Untuk informasi selengkapnya, lihat Mengelola profil instans Elastic Beanstalk.
-
-
Sertakan informasi bucket Amazon S3 di parameter
Authentication
pada fileDockerrun.aws.json
.Contoh berikut menunjukkan penggunaan file otentikasi bernama
mydockercfg
dalam sebuah bucket bernamaamzn-s3-demo-bucket
untuk 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
AWSEBDockerrunVersion
menunjukkan versi fileDockerrun.aws.json
.-
Platform Docker AL2 dan AL2 023 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 di AL2 023 menggunakan file tersebut.
Dockerrun.aws.json v2
Platform 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:tag
Dockerrun.aws.json
file Anda atau Dockerfile.