Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
ECRSampel Amazon untuk CodeBuild
Contoh ini menggunakan image Docker di repositori image Amazon Elastic Container Registry (AmazonECR) untuk membuat proyek Go sampel.
penting
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk AWS CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3,, CloudWatch Log AWS KMS, dan Amazon. ECR Untuk informasi selengkapnya, lihat CodeBuild harga, harga
Jalankan ECR sampel Amazon
Gunakan petunjuk berikut untuk menjalankan ECR sampel Amazon CodeBuild.
Untuk menjalankan sampel ini
-
Untuk membuat dan mendorong gambar Docker ke repositori gambar Anda di AmazonECR, selesaikan langkah-langkah di Jalankan sampel 'Publikasikan gambar Docker ke ECR Amazon' bagian. Contoh 'Publikasikan gambar Docker ke ECR Amazon'
-
Buat proyek Go:
-
Buat file seperti yang dijelaskan di Pergi file proyek bagian Struktur proyek Go dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit GitHub, atau Bitbucket.
penting
Jangan mengunggah
, hanya file di dalamnya(root directory name)
.(root directory name)
Jika Anda menggunakan bucket input S3, pastikan untuk membuat ZIP file yang berisi file, lalu unggah ke bucket input. Jangan tambahkan
ke ZIP file, hanya file di dalamnya(root directory name)
.(root directory name)
-
Buat proyek build, jalankan build, dan lihat informasi build terkait.
Jika Anda menggunakan AWS CLI untuk membuat proyek build, input JSON -format ke
create-project
perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.){ "name": "sample-go-project", "source": { "type": "S3", "location": "codebuild-
region-ID
-account-ID
-input-bucket/GoSample
.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket", "packaging": "ZIP", "name": "GoOutputArtifact
.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID
:role/role-name
", "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:key/key-ID
" } -
Untuk mendapatkan artefak keluaran build, buka bucket keluaran S3 Anda.
-
Unduh
file ke komputer atau instance lokal Anda, lalu ekstrak konten file tersebut. Dalam konten yang diekstraksi, dapatkanGoOutputArtifact
.ziphello
file.
-
-
Jika salah satu dari berikut ini benar, Anda harus menambahkan izin ke repositori gambar Anda di Amazon ECR sehingga AWS CodeBuild dapat menarik gambar Docker-nya ke lingkungan build.
-
Proyek Anda menggunakan CodeBuild kredensi untuk menarik gambar AmazonECR. Ini dilambangkan dengan nilai
CODEBUILD
dalamimagePullCredentialsType
atribut Anda.ProjectEnvironment
-
Proyek Anda menggunakan ECR gambar Amazon lintas akun. Dalam hal ini, proyek Anda harus menggunakan peran layanannya untuk menarik ECR gambar Amazon. Untuk mengaktifkan perilaku ini, setel
imagePullCredentialsType
atribut AndaProjectEnvironment
keSERVICE_ROLE
.
Buka ECR konsol Amazon di https://console.aws.amazon.com/ecr/
. -
Dalam daftar nama repositori, pilih nama repositori yang Anda buat atau pilih.
-
Dari panel navigasi, pilih Izin, pilih Edit, lalu pilih Tambah pernyataan.
-
Untuk nama Pernyataan, masukkan pengenal (misalnya,
CodeBuildAccess
). -
Untuk Efek, biarkan Izinkan dipilih. Ini menunjukkan bahwa Anda ingin mengizinkan akses ke AWS akun lain.
-
Untuk Principal, lakukan salah satu hal berikut:
-
Jika proyek Anda menggunakan CodeBuild kredensi untuk menarik ECR gambar Amazon, di Prinsipal layanan, masukkan.
codebuild.amazonaws.com
-
Jika proyek Anda menggunakan ECR gambar Amazon lintas akun, untuk AWS akun IDs, masukkan IDs AWS akun yang ingin Anda berikan akses.
-
-
Lewati daftar Semua IAM entitas.
-
Untuk Tindakan, pilih tindakan khusus tarik: ecr:, ecr: GetDownloadUrlForLayer, dan ecr: BatchGetImage. BatchCheckLayerAvailability
-
Untuk Ketentuan, tambahkan yang berikut ini:
{ "StringEquals":{ "aws:SourceAccount":"
<AWS-account-ID>
", "aws:SourceArn":"arn:aws:codebuild:<region>
:<AWS-account-ID>
:project/<project-name>
" } } -
Pilih Simpan.
Kebijakan ini ditampilkan di Izin. Kepala sekolah adalah apa yang Anda masukkan untuk Principal pada langkah 3 dari prosedur ini:
-
Jika project Anda menggunakan CodeBuild kredensi untuk menarik ECR gambar Amazon,
"codebuild.amazonaws.com"
muncul di bawah Prinsipal layanan. -
Jika project Anda menggunakan ECR gambar Amazon lintas akun, ID AWS akun yang ingin Anda berikan akses akan muncul di bawah AWS Akun IDs.
Kebijakan contoh berikut menggunakan CodeBuild kredensi dan gambar Amazon ECR lintas akun.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"CodeBuildAccessPrincipal", "Effect":"Allow", "Principal":{ "Service":"codebuild.amazonaws.com" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Condition":{ "StringEquals":{ "aws:SourceArn":"arn:aws:codebuild:
<region>
:<aws-account-id>
:project/<project-name>
", "aws:SourceAccount":"<aws-account-id>
" } } }, { "Sid":"CodeBuildAccessCrossAccount", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS-account-ID>
:root" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] } ] }-
Jika proyek Anda menggunakan CodeBuild kredensi dan Anda ingin CodeBuild proyek Anda memiliki akses terbuka ke ECR repositori Amazon, Anda dapat menghilangkan
Condition
kunci dan menambahkan kebijakan contoh berikut.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"CodeBuildAccessPrincipal", "Effect":"Allow", "Principal":{ "Service":"codebuild.amazonaws.com" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] }, { "Sid":"CodeBuildAccessCrossAccount", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS-account-ID>
:root" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] } ] } -
-
-
Buat proyek build, jalankan build, dan lihat informasi build.
Jika Anda menggunakan AWS CLI untuk membuat proyek build, input JSON -format ke
create-project
perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.){ "name": "amazon-ecr-sample-project", "source": { "type": "S3", "location": "codebuild-
region-ID
-account-ID
-input-bucket/GoSample
.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket", "packaging": "ZIP", "name": "GoOutputArtifact
.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "account-ID
.dkr.ecr.region-ID
.amazonaws.com/your-Amazon-ECR-repo-name
:tag
", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID
:role/role-name
", "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:key/key-ID
" } -
Untuk mendapatkan artefak keluaran build, buka bucket keluaran S3 Anda.
-
Unduh
file ke komputer atau instance lokal Anda, lalu ekstrak kontenGoOutputArtifact
.zip
file tersebut. Dalam konten yang diekstraksi, dapatkanGoOutputArtifact
.ziphello
file.
Struktur proyek Go
Sampel ini mengasumsikan struktur direktori ini.
(root directory name)
├── buildspec.yml
└── hello.go
Pergi file proyek
Sampel ini menggunakan file-file ini.
buildspec.yml
(dalam
)(root directory
name)
version: 0.2 phases: install: runtime-versions: golang: 1.13 build: commands: - echo Build started on `date` - echo Compiling the Go code - go build hello.go post_build: commands: - echo Build completed on `date` artifacts: files: - hello
hello.go
(dalam
)(root directory
name)
package main import "fmt" func main() { fmt.Println("hello world") fmt.Println("1+1 =", 1+1) fmt.Println("7.0/3.0 =", 7.0/3.0) fmt.Println(true && false) fmt.Println(true || false) fmt.Println(!true) }