View a markdown version of this page

Tutorial: Penyebaran Standar Amazon ECS dengan CodePipeline - AWS CodePipeline

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Penyebaran Standar Amazon ECS dengan CodePipeline

Tutorial ini membantu Anda membuat pipeline penyebaran berkelanjutan (CD) ujung ke ujung yang lengkap dengan Amazon ECS dengan CodePipeline.

penting

Sebagai bagian dari pembuatan pipeline di konsol, bucket artefak S3 akan digunakan oleh CodePipeline untuk artefak. (Ini berbeda dari bucket yang digunakan untuk aksi sumber S3.) Jika bucket artefak S3 berada di akun yang berbeda dari akun untuk pipeline Anda, pastikan bucket artefak S3 dimiliki oleh Akun AWS itu aman dan dapat diandalkan.

catatan

Tutorial ini untuk tindakan penerapan standar Amazon ECS untuk CodePipeline. Untuk tutorial yang menggunakan tindakan Amazon ECS untuk CodeDeploy blue/green menerapkan CodePipeline, lihatTutorial: Buat pipeline dengan sumber dan ECS-to-CodeDeploy penerapan Amazon ECR.

catatan

Tutorial ini adalah untuk tindakan penerapan standar Amazon ECS CodePipeline dengan tindakan sumber. Untuk tutorial yang menggunakan tindakan penerapan standar Amazon ECS bersama dengan tindakan ECRBuildAndPublish build CodePipeline untuk mendorong gambar Anda, lihatTutorial: Membangun dan mendorong gambar Docker ke Amazon ECR dengan CodePipeline (tipe V2).

Prasyarat

Ada beberapa sumber daya yang harus Anda miliki sebelum Anda dapat menggunakan tutorial ini untuk membuat pipeline CD Anda. Berikut adalah hal-hal yang Anda butuhkan untuk memulai:

catatan

Semua sumber daya ini harus dibuat dalam Wilayah yang sama AWS .

  • Repositori kontrol sumber (tutorial ini menggunakan CodeCommit) dengan Dockerfile dan sumber aplikasi Anda. Untuk informasi selengkapnya, lihat Membuat CodeCommit Repositori di Panduan AWS CodeCommit Pengguna.

  • Repositori gambar Docker (tutorial ini menggunakan Amazon ECR) yang berisi gambar yang telah Anda buat dari Dockerfile dan sumber aplikasi Anda. Untuk informasi selengkapnya, lihat Membuat Repositori dan Mendorong Gambar di Panduan Pengguna Amazon Elastic Container Registry.

  • Definisi tugas Amazon ECS yang mereferensikan gambar Docker yang dihosting di repositori gambar Anda. Untuk informasi selengkapnya, lihat Membuat Definisi Tugas di Panduan Pengembang Amazon Elastic Container Service.

    penting

    Tindakan penerapan standar Amazon EC CodePipeline S untuk membuat revisi definisi tugas sendiri berdasarkan revisi yang digunakan oleh layanan Amazon ECS. Jika Anda membuat revisi baru untuk definisi tugas tanpa memperbarui layanan Amazon ECS, tindakan penerapan akan mengabaikan revisi tersebut.

    Di bawah ini adalah contoh definisi tugas yang digunakan untuk tutorial ini. Nilai yang Anda gunakan untuk name dan family akan digunakan pada langkah berikutnya untuk file spesifikasi build Anda.

    { "ipcMode": null, "executionRoleArn": "role_ARN", "containerDefinitions": [ { "dnsSearchDomains": null, "environmentFiles": null, "logConfiguration": { "logDriver": "awslogs", "secretOptions": null, "options": { "awslogs-group": "/ecs/hello-world", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "ecs" } }, "entryPoint": null, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": null, "linuxParameters": null, "cpu": 0, "environment": [], "resourceRequirements": null, "ulimits": null, "dnsServers": null, "mountPoints": [], "workingDirectory": null, "secrets": null, "dockerSecurityOptions": null, "memory": null, "memoryReservation": 128, "volumesFrom": [], "stopTimeout": null, "image": "image_name", "startTimeout": null, "firelensConfiguration": null, "dependsOn": null, "disableNetworking": null, "interactive": null, "healthCheck": null, "essential": true, "links": null, "hostname": null, "extraHosts": null, "pseudoTerminal": null, "user": null, "readonlyRootFilesystem": null, "dockerLabels": null, "systemControls": null, "privileged": null, "name": "hello-world" } ], "placementConstraints": [], "memory": "2048", "taskRoleArn": null, "compatibilities": [ "EC2", "FARGATE" ], "taskDefinitionArn": "ARN", "family": "hello-world", "requiresAttributes": [], "pidMode": null, "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "1024", "revision": 1, "status": "ACTIVE", "inferenceAccelerators": null, "proxyConfiguration": null, "volumes": [] }
  • Cluster Amazon ECS yang menjalankan layanan yang menggunakan definisi tugas yang Anda sebutkan sebelumnya. Untuk informasi selengkapnya, lihat Membuat Cluster dan Membuat Layanan di Panduan Pengembang Amazon Elastic Container Service.

Setelah Anda memenuhi prasyarat ini, Anda dapat melanjutkan dengan tutorial dan membuat pipeline CD Anda.

Langkah 1: Tambahkan File Spesifikasi Bangun ke Repositori Sumber Anda

Tutorial ini CodeBuild digunakan untuk membangun image Docker Anda dan mendorong gambar ke Amazon ECR. Tambahkan buildspec.yml file ke repositori kode sumber Anda untuk memberi tahu CodeBuild cara melakukannya. Contoh spesifikasi build di bawah ini melakukan hal berikut:

  • Pre-build tahap:

    • Masuk ke Amazon ECR.

    • Atur URI repositori ke gambar ECR Anda dan tambahkan tag gambar dengan tujuh karakter pertama dari ID komit Git dari sumber.

  • Membangun tahap:

    • Bangun gambar Docker dan beri tag gambar baik sebagai latest dan dengan Git commit ID.

  • Post-build tahap:

    • Dorong gambar ke repositori ECR Anda dengan kedua tag.

    • Tulis file yang imagedefinitions.json dipanggil di root build yang memiliki nama wadah layanan Amazon ECS Anda dan gambar serta tag. Tahap penyebaran pipeline CD Anda menggunakan informasi ini untuk membuat revisi baru definisi tugas layanan Anda, dan kemudian memperbarui layanan untuk menggunakan definisi tugas baru. imagedefinitions.jsonFile diperlukan untuk pekerja pekerjaan ECS.

Tempelkan teks sampel ini untuk membuat buildspec.yml file Anda, dan ganti nilai untuk definisi gambar dan tugas Anda. Teks ini menggunakan contoh akun ID 111122223333.

version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws --version - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com - REPOSITORY_URI=012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) - IMAGE_TAG=${COMMIT_HASH:=latest} build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $REPOSITORY_URI:latest . - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker images... - docker push $REPOSITORY_URI:latest - docker push $REPOSITORY_URI:$IMAGE_TAG - echo Writing image definitions file... - printf '[{"name":"hello-world","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json artifacts: files: imagedefinitions.json

Spesifikasi build ditulis untuk definisi tugas sampel yang disediakan diPrasyarat, digunakan oleh layanan Amazon ECS untuk tutorial ini. REPOSITORY_URINilai sesuai dengan image repositori (tanpa tag gambar), dan hello-world nilai di dekat akhir file sesuai dengan nama wadah dalam definisi tugas layanan.

Untuk menambahkan buildspec.yml berkas ke repositori sumber Anda
  1. Buka editor teks dan kemudian salin dan tempel spesifikasi build di atas ke file baru.

  2. Ganti REPOSITORY_URI value (012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world) dengan URI repositori Amazon ECR Anda (tanpa tag gambar apa pun) untuk gambar Docker Anda. Ganti hello-world dengan nama wadah dalam definisi tugas layanan Anda yang mereferensikan image Docker Anda.

  3. Komit dan dorong buildspec.yml file Anda ke repositori sumber Anda.

    1. Tambahkan file.

      git add .
    2. Lakukan perubahan.

      git commit -m "Adding build specification."
    3. Dorong komit.

      git push

Langkah 2: Membuat Pipeline Penerapan Berkelanjutan

Gunakan CodePipeline wizard untuk membuat tahapan pipeline Anda dan menghubungkan repositori sumber Anda ke layanan ECS Anda.

Untuk membuat alur Anda
  1. Buka CodePipeline konsol di https://console.aws.amazon.com/codepipeline/.

  2. Pada halaman Selamat Datang, pilih Buat pipeline.

    Jika ini adalah pertama kalinya Anda menggunakan CodePipeline, halaman pengantar muncul alih-alih Selamat Datang. Pilih Mulai Sekarang.

  3. Pada Langkah 1: Pilih halaman opsi pembuatan, di bawah Opsi pembuatan, pilih opsi Build custom pipeline. Pilih Berikutnya.

  4. Pada Langkah 2: Pilih pengaturan pipeline, di Nama Pipeline, ketik nama untuk pipeline Anda. Untuk tutorial ini, nama pipeline adalah hello-world.

  5. Dalam tipe Pipeline, pertahankan pilihan default di V2. Jenis pipa berbeda dalam karakteristik dan harga. Untuk informasi selengkapnya, lihat Jenis pipa. Pilih Berikutnya.

  6. Pada Langkah 3: Tambahkan halaman tahap sumber, untuk Penye dia Sumber, pilih AWS CodeCommit.

    1. Untuk Nama Repositori, pilih nama CodeCommit repositori yang akan digunakan sebagai lokasi sumber untuk pipeline Anda.

    2. Untuk Nama cabang, pilih cabang yang akan digunakan dan pilih Ber ikutnya.

  7. Pada Langkah 4: Tambahkan halaman tahap build, untuk Build provider pilih AWS CodeBuild, lalu pilih Buat proyek.

    1. Untuk Nama Proyek, pilih nama unik untuk proyek build Anda. Untuk tutorial ini, nama proyeknya adalah hello-world.

    2. Untuk gambar Lingkungan, pilih Gambar terkelola.

    3. Untuk Sistem operasi, pilih Amazon Linux 2.

    4. Untuk Runtime (s), pilih Standar.

    5. Untuk Gambar, pilih aws/codebuild/amazonlinux2-x86_64-standard:3.0.

    6. Untuk versi Gambar dan tipe Lingkungan, gunakan nilai default.

    7. Pilih Aktifkan tanda ini jika Anda ingin membuat gambar Docker atau ingin build Anda mendapatkan hak istimewa yang ditingkatkan.

    8. Hapus pilihan CloudWatch log. Anda mungkin perlu memperluas Advanced.

    9. Pilih Lanjutkan ke CodePipeline.

    10. Pilih Berikutnya.

      catatan

      Wizard membuat peran CodeBuild layanan untuk proyek build Anda, yang disebut codebuild- build-project-name - service-role. Perhatikan nama peran ini, saat Anda menambahkan izin Amazon ECR ke dalamnya nanti.

  8. Pada halaman Langkah 5: Tambahkan tahap penerapan, untuk Penyedia Deployment, pilih Amazon ECS.

    1. Untuk Nama Cluster, pilih cluster Amazon ECS tempat layanan Anda berjalan. Untuk tutorial ini, cluster adalah default.

    2. Untuk Nama layanan, pilih layanan yang akan diperbarui dan pilih Ber ikutnya. Untuk tutorial ini, nama layanannya adalah hello-world.

  9. Pada halaman Langkah 6: Tinjau, tinjau konfigurasi pipeline Anda dan pilih Buat pipeline untuk membuat pipeline.

    catatan

    Sekarang pipa telah dibuat, ia mencoba untuk berjalan melalui tahapan pipa yang berbeda. Namun, CodeBuild peran default yang dibuat oleh wizard tidak memiliki izin untuk menjalankan semua perintah yang terkandung dalam buildspec.yml file, sehingga tahap pembuatan gagal. Bagian selanjutnya menambahkan izin untuk tahap build.

Langkah 3: Tambahkan Izin Amazon ECR ke CodeBuild Peran

CodePipeline Wizard membuat peran IAM untuk proyek build, yang CodeBuild disebut codebuild- - build-project-name service-role. Untuk tutorial ini, namanya adalah codebuil d-hello-world-service-role. Karena buildspec.yml file melakukan panggilan ke operasi Amazon ECR API, peran tersebut harus memiliki kebijakan yang memungkinkan izin untuk melakukan panggilan Amazon ECR ini. Prosedur berikut membantu Anda melampirkan izin yang tepat ke peran tersebut.

Untuk menambahkan izin Amazon ECR ke CodeBuild peran
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi sebelah kiri, pilih Peran.

  3. Di kotak pencarian, ketik codebuild- dan pilih peran yang dibuat oleh CodePipeline wizard. Untuk tutorial ini, nama peran adalah codebuil d-hello-world-service-role.

  4. Pada halaman Ringkasan, pilih Lamp irkan kebijakan.

  5. Pilih kotak di sebelah kiri AmazonEC2ContainerRegistryPowerUser kebijakan, lalu pilih Lamp irkan kebijakan.

Langkah 4: Uji Pipeline Anda

Pipeline Anda harus memiliki segalanya untuk menjalankan penerapan AWS berkelanjutan asli end-to-end. Sekarang, uji fungsinya dengan mendorong perubahan kode ke repositori sumber Anda.

Untuk menguji pipeline Anda
  1. Buat perubahan kode ke repositori sumber yang dikonfigurasi, komit, dan dorong perubahan.

  2. Buka CodePipeline konsol di https://console.aws.amazon.com/codepipeline/.

  3. Pilih pipeline Anda dari daftar.

  4. Perhatikan kemajuan pipa melalui tahapannya. Pipeline Anda harus selesai dan layanan Amazon ECS Anda menjalankan image Docker yang dibuat dari perubahan kode Anda.