Menyediakan AWS Service Catalog produk berdasarkan AWS CloudFormation template dengan menggunakan GitHub Actions - AWS Prescriptive Guidance

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

Menyediakan AWS Service Catalog produk berdasarkan AWS CloudFormation template dengan menggunakan GitHub Actions

Ashish Bhatt dan Ruchika Modi, Amazon Web Services

Ringkasan

Pola ini memberi organisasi pendekatan yang efisien menggunakan AWS Service Catalogproduk dan portofolio untuk penyediaan standar dan kepatuhan di seluruh tim. Layanan AWS AWS CloudFormationmembantu menggabungkan komponen penting dalam produk dan portofolio Service Catalog untuk penyediaan infrastruktur jaringan dasar. AWS CloudPola ini juga mempromosikan DevOps praktik dengan mengintegrasikan infrastruktur sebagai kode (IAc) ke dalam alur kerja pengembangan otomatis dengan menggunakan Tindakan. GitHub

AWS Service Catalog memungkinkan organisasi untuk membuat dan mengelola layanan TI yang disetujui AWS, menawarkan manfaat seperti standardisasi, kontrol terpusat, penyediaan layanan mandiri, dan manajemen biaya. Dengan mengotomatiskan penyebaran portofolio dan produk Service Catalog melalui GitHub Actions, perusahaan dapat melakukan hal berikut:

  • Mencapai penerapan yang konsisten dan berulang.

  • Gunakan kontrol versi untuk IAc.

  • Integrasikan manajemen sumber daya cloud dengan alur kerja pengembangan yang ada.

Kombinasi ini merampingkan operasi cloud, menegakkan kepatuhan, dan mempercepat pengiriman layanan yang disetujui sekaligus mengurangi kesalahan manual dan meningkatkan efisiensi secara keseluruhan.

Prasyarat dan batasan

Prasyarat

  • Aktif Akun AWS

  • Akses ke GitHub repositori

  • Pemahaman dasar AWS CloudFormation dan AWS Service Catalog

  • Bucket Amazon Simple Storage Service (Amazon S3) untuk meng-host template CloudFormation

  • Peran AWS Identity and Access Management (IAM) bernama github-actions yang digunakan untuk konektivitas antara dan GitHub AWS

Keterbatasan

  • Kode pola yang dapat digunakan kembali ini telah diuji hanya dengan GitHub Actions.

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Versi produk

Solusi pola ini dibuat dengan menggunakan tindakan GitHub Marketplace berikut dan versinya masing-masing:

  • actions/checkout@v4

  • aws-actions/configure-aws-credentials@v2

  • aws-actions/aws-cloudformation-github-deploy@v1.2.0

Arsitektur

Diagram berikut menunjukkan arsitektur untuk solusi ini.

Menggunakan GitHub Tindakan untuk menyediakan produk Service Catalog berdasarkan CloudFormation template.
  1. Administrator atau insinyur platform mendorong CloudFormation templat standar ke GitHub repositori, tempat templat dipertahankan. GitHub Repo juga berisi alur kerja yang mengotomatiskan penyediaan menggunakan Tindakan. AWS Service Catalog GitHub

  2. GitHub Tindakan memicu alur kerja yang terhubung ke penyedia AWS Cloud OpenID Connect (OIDC) untuk menyediakan Service Catalog.

  3. Service Catalog berisi portofolio dan produk yang dapat langsung digunakan pengembang untuk menyediakan sumber daya standar AWS . Pola ini menggabungkan AWS sumber daya seperti virtual private cloud (VPCs), subnet, NAT dan gateway internet, dan tabel rute.

  4. Setelah pengembang membuat produk Service Catalog, Service Catalog mengubahnya menjadi sumber daya yang telah dikonfigurasi sebelumnya dan terstandarisasi AWS . Akibatnya, pengembang menghemat waktu karena mereka tidak perlu menyediakan sumber daya individu dan mengonfigurasinya secara manual.

Alat

Layanan AWS

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS Ini adalah layanan infrastruktur sebagai kode (IAc) yang dapat dengan mudah digunakan sebagai salah satu jenis produk dengan AWS Service Catalog.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Service Catalogmembantu Anda mengelola katalog layanan TI secara terpusat yang disetujui. AWS Pengguna akhir dapat dengan cepat men-deploy hanya layanan IT yang disetujui yang mereka butuhkan, mengikuti batasan yang ditetapkan oleh organisasi Anda.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Lainnya

  • GitHub Actions adalah platform integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang terintegrasi erat dengan GitHub repositori. Anda dapat menggunakan GitHub Actions untuk mengotomatiskan pipeline build, test, dan deployment.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub service-catalog-with-github-actions. Repo berisi file-file menarik berikut:

  • github/workflows:

    • e2e-test.yaml— Panggilan file iniworkflow.yaml, yang merupakan alur kerja yang dapat digunakan kembali. Alur kerja ini dipicu segera setelah ada komit dan push pada cabang.

    • workflow.yaml— File ini berisi alur kerja yang dapat digunakan kembali untuk solusi ini dan dikonfigurasi workflow_call sebagai pemicunya. Sebagai alur kerja yang dapat digunakan kembali, workflow.yaml dapat dipanggil dari alur kerja lainnya.

  • templates:

    • servicecatalog-portfolio.yaml— CloudFormation Template ini mencakup sumber daya yang menyediakan portofolio Service Catalog dan produk Service Catalog. Template berisi serangkaian parameter yang digunakan saat menyediakan portofolio dan produk Service Catalog. Satu parameter menerima URL file Amazon S3 tempat vpc.yaml template diunggah. Meskipun pola ini menyertakan vpc.yaml file untuk menyediakan AWS sumber daya, Anda juga dapat menggunakan URL file parameter S3 untuk konfigurasi.

    • vpc.yaml— CloudFormation Template ini berisi AWS sumber daya yang akan ditambahkan dalam produk Service Catalog. AWS sumber daya termasuk VPCs, subnet, gateway internet, gateway NAT, dan tabel rute. vpc.yamlTemplate adalah contoh bagaimana Anda dapat menggunakan CloudFormation template apa pun dengan produk Service Catalog dan template portofolio.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan Git di workstation lokal Anda.

Untuk menginstal dan mengkonfigurasi Git di workstation lokal Anda, gunakan instruksi Memulai — Menginstal Git dalam dokumentasi Git.

Pengembang aplikasi

Kloning repo GitHub proyek.

Untuk mengkloning repo GitHub proyek, lakukan hal berikut:

  1. Buka GitHub repo untuk pola ini

  2. Pilih Kode untuk melihat opsi kloning, dan salin URL yang disediakan di tab HTTPS.

  3. Buat folder untuk proyek Anda di workstation Anda.

  4. Buka terminal, dan arahkan ke folder ini

  5. Untuk mengkloning GitHub repo, jalankan perintah berikut menggunakan URL yang Anda salin di langkah 2:

    git clone https://github.com/aws-samples/service-catalog-with-github-actions.git
  6. Saat kloning selesai, untuk mengubah repo kloning di folder proyek Anda, jalankan perintah berikut:

    cd <folder-name>/service-catalog-with-github-actions
  7. Buka proyek di lingkungan pengembangan terintegrasi (IDE) pilihan Anda.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan penyedia OIDC.

Buat penyedia OpenID Connect (OIDC) yang memungkinkan alur kerja GitHub Actions mengakses sumber daya AWS, tanpa perlu menyimpan kredensialnya sebagai rahasia yang berumur panjang. AWS GitHub Untuk petunjuk, lihat Mengonfigurasi OpenID Connect di Amazon Web Services GitHub dalam dokumentasi.

Setelah penyedia OIDC dikonfigurasi, kebijakan kepercayaan peran IAMgithub-actions, yang disebutkan sebelumnya dalam Prasyarat, akan diperbarui.

Administrator AWS, AWS DevOps, AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

Perbaruie2e-test.yaml.

e2e-test.yamlFile memicu alur kerja yang dapat digunakan kembali di. workflow.yaml Perbarui dan validasi nilai untuk parameter input berikut die2e-test.yaml:

  • aws_account_id— Tentukan yang benar Akun AWS.

  • aws_region— Tentukan yang benar Wilayah AWS.

  • s3BucketName— Tentukan bucket Amazon S3 untuk menampung template. CloudFormation

  • File alur kerja membutuhkan dua peran IAM sebagai masukan:

    • LaunchConstraintRole- Peran IAM yang AWS Service Catalog mengasumsikan ketika pengguna akhir meluncurkan, memperbarui, atau mengakhiri suatu produk.

    • PrincipalArn- Nama Sumber Daya Amazon (ARN) dari prinsipal (pengguna, peran, atau grup IAM) yang akan dikaitkan dengan Portofolio Service Catalog. Jika yaIAM, nilai yang didukung adalah Nama Sumber Daya Amazon IAM (ARN) yang ditentukan sepenuhnya. PrincipalType Jika yaIAM_PATTERN, nilai yang didukung adalah ARN IAM tanpa dalam AccountID format berikut: PrincipalType arn:partition:iam:::resource-type/resource-id

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Validasi sumber daya Service Catalog.

Untuk memvalidasi sumber daya Service Catalog, lakukan hal berikut:

  1. Masuk ke bagian AWS Management Console dari Akun AWS, dan verifikasi bahwa Wilayah AWS sudah benar.

  2. Arahkan ke AWS Service Catalogdan validasi bahwa portofolio hadir di bawah Administrasi, Portofolio.

  3. Pilih portofolio, dan validasi informasi pada tab Produk, Kendala, dan Akses.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus CloudFormation tumpukan.

Untuk menghapus CloudFormation tumpukan, lakukan hal berikut:

  1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pada bilah navigasi di bagian atas layar, pilih Wilayah AWS tempat tumpukan berada.

  3. Pada halaman Stacks, pilih tumpukan yang ingin Anda hapus. Tumpukan pasti sedang berjalan.

  4. Di panel detail tumpukan, pilih Hapus.

  5. Pilih Hapus tumpukan saat diminta.

Untuk informasi selengkapnya, lihat Menghapus tumpukan dari CloudFormation konsol di CloudFormation dokumentasi

DevOps insinyur, administrator AWS

Pemecahan Masalah

IsuSolusi

e2e-test

Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '*/home/runner/work/service-catalog-with-github-actions/service-catalog-with-github-actions

Did you forget to run actions/checkout before running your local action?

Untuk memastikan bahwa Anda mengaktifkan pengaturan repositori yang benar, lakukan hal berikut:

  1. Arahkan ke repositori Github, tab Pengaturan.

  2. Pilih Tindakan, Umum dari menu di sisi kiri

  3. Buka bagian Akses, dan pilih opsi Dapat diakses dari repositori di organisasi 'XXX'.

Sumber daya terkait

AWS dokumentasi

Sumber daya lainnya

Informasi tambahan

Untuk melihat tangkapan layar yang terkait dengan Epik, buka folder Gambar di repo pola ini. GitHub Tangkapan layar berikut tersedia: