Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai dengan AWS DevOps Agen menggunakan AWS CDK
Gambaran umum
Panduan ini menunjukkan cara menggunakan AWS Cloud Development Kit (AWS CDK) untuk membuat dan menyebarkan sumber daya AWS DevOps Agen. Aplikasi AWS CDK mengotomatiskan pembuatan ruang agen, peran AWS Identitas dan Manajemen Akses (IAM), aplikasi operator, dan asosiasi AWS akun melalui. AWS CloudFormation
Pendekatan AWS CDK mengotomatiskan langkah-langkah manual yang dijelaskan dalam panduan onboarding CLI dengan mendefinisikan semua sumber daya yang diperlukan sebagai infrastruktur sebagai kode.
AWS DevOps Agen tersedia di beberapa Wil AWS ayah. Untuk daftar lengkapnya, lihat Wilayah yang Didukung.
Prasyarat
Sebelum Anda mulai, pastikan Anda memiliki yang berikut:
AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi dengan kredenSIAL yang sesuai
Node.js versi 18 atau yang lebih baru
AWS Antarmuka baris perintah CDK (CLI) diinstal secara global. Untuk menginstal AWS CDK CLI, jalankan perintah berikut:
npm install -g aws-cdk
Satu AWS akun untuk akun pemantauan (primer)
(Opsional) AWS Akun kedua jika Anda ingin mengatur pemantauan lintas akun
(Untuk Bagian 3)
aws-cdk-libversi 2.268.0 atau yang lebih baru.CfnTriggerKonstrukCfnAssetsi dan yang digunakan di Bagian 3 ditambahkan dalam versi itu. Untuk memeriksa versi dalam proyek Anda, jalankannpm list aws-cdk-lib.
Apa yang dicakup panduan ini
Panduan ini dibagi menjadi beberapa bagian berikut:
Bagian 1 - Menyebarkan ruang agen dengan aplikasi operator dan asosi AWS asi di akun pemantauan Anda. Setelah Anda menyelesaikan bagian ini, agen dapat memantau masalah di akun tersebut.
Bagian 2 (Opsional) — Tambahkan as AWS osiasi sumber untuk akun layanan dan menerapkan peran IAM lintas-akun ke akun tersebut. Konfigurasi ini memungkinkan ruang agen untuk memantau sumber daya di seluruh akun.
Bagian 3 (Opsional) — Tambahkan skill, agen kustom, dan pemicu terjadwal ke ruang agen, sehingga agen memiliki pengetahuan khusus dan pemicu terjadwal menjalankan agen kustom tersebut secara otomatis.
Sumber daya yang dibuat
Bagian 1: DevOpsAgentStack (akun pemantauan)
IAM role (
DevOpsAgentRole-AgentSpace) — Diasumsikan oleh layanan DevOps Agen untuk memantau akun. TermasukAIDevOpsAgentAccessPolicykebijakan terkelola dan kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer.IAM role (
DevOpsAgentRole-WebappAdmin) — Peran aplikasi operator dengan kebijakan terAIDevOpsOperatorAppAccessPolicykelola untuk operasi agen.Agent space (
MyCDKAgentSpace) — Ruang agen pusat, dibuat dengan menggunakanAWS::DevOpsAgent::AgentSpaceCloudFormation sumber daya. Termasuk konfigurasi aplikasi operator.Asosiasi (AWS monitor) — Menautkan akun pemantauan ke ruang agen dengan menggunakan
AWS::DevOpsAgent::AssociationCloudFormation sumber daya.Asosiasi (AWS sumber) — (Opsional) Menautkan akun layanan ke ruang agen untuk pemantauan lintas akun.
Bagian 2: ServiceStack (akun layanan, opsional)
IAM role (
DevOpsAgentRole-SecondaryAccount) — Cross-account peran dengan nama tetap. Dipercaya oleh ruang agen di akun pemantauan. TermasukAIDevOpsAgentAccessPolicykebijakan terkelola dan kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer.Lambda function (
echo-service) — Sebuah contoh layanan sederhana yang menggemakan kembali peristiwa input.
Bagian 3: Aset dan pemicu (akun pemantauan, opsional)
Tumpukan ini membuat sumber daya berikut:
Skill (
rds-performance-investigation) — Keterampilan yang dimuat agen bila relevan, dibuat dengan menggunakanCfnAssetkonstruk dengan sebuahassetTypeofskill.Custom agent (
rds-firefighter) — Mencakup agen ke alur kerja tertentu dengan keterampilan terlampir, dibuat dengan menggunakanCfnAssetkonstruk dengan sebuahassetTypeofcustom_agent.Trigger (
TIME_BASED) — Menjalankan agen kustom pada jadwal, dibuat dengan menggunakanCfnTriggerkonstruk.
Pengaturan
Langkah 1: Mengkloning repositori sampel
Jalankan perintah berikut untuk mengkloning repositori dan mengubah ke direktori proyek:
git clone https://github.com/aws-samples/sample-aws-devops-agent-cdk.git cd sample-aws-devops-agent-cdk
Langkah 2: Instal dependensi
Jalankan perintah berikut untuk menginstal dependensi proyek:
npm install
Bagian 1: Menyebarkan ruang agen
Di bagian ini, Anda membuat ruang agen, peran IAM, aplikasi operator, dan as AWS osiasi di akun pemantauan Anda.
Langkah 1: Konfigurasikan ID akun pemantauan
Buka lib/constants.ts dan atur ID akun pemantauan Anda:
Contoh berikut menunjukkan konstanta untuk memperbarui:
export const MONITORING_ACCOUNT_ID = "<YOUR_MONITORING_ACCOUNT_ID>";
Langkah 2: Bootstrap AWS Lingkungan CDK
Jika Anda belum melakukan bootstrap AWS CDK di akun pemantauan Anda, jalankan perintah berikut:
cdk bootstrap aws://<MONITORING_ACCOUNT_ID>/<REGION> --profile monitoring
Langkah 3: Membangun dan menyebarkan
Jalankan perintah berikut untuk membangun TypeScript kode dan menerapkan tumpukan:
npm run build cdk deploy DevOpsAgentStack --profile monitoring
Langkah 4: Rekam output tumpukan
Setelah penerapan selesai, AWS CDK mencetak output tumpukan. Catat nilai-nilai ini untuk digunakan nanti.
Contoh berikut menunjukkan output yang diharapkan:
Outputs: DevOpsAgentStack.AgentSpaceArn = arn:aws:aidevops:<REGION>:123456789012:agentspace/abc123 DevOpsAgentStack.AgentSpaceRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-AgentSpace DevOpsAgentStack.OperatorRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-WebappAdmin DevOpsAgentStack.AssociationId = assoc-xyz
Jika Anda berencana untuk menyelesaikan Bagian 2, simpan nil AgentSpaceArn ainya. Anda membutuhkannya untuk mengonfigurasi tumpukan akun layanan.
Tumpukan menampilkan ARN ruang agen, bukan ID ruang agen. Langkah selanjutnya meminta ID, yang merupakan segmen setelah agentspace/ di ARN. Dalam contoh sebelumnya, ARN diakhiri denganagentspace/abc123, jadi ID ruang agen adalahabc123. Catat nilai itu juga.
Langkah 5: Verifikasi penerapan
Untuk memverifikasi bahwa ruang agen berhasil dibuat, jalankan perintah AWS CLI berikut:
aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
Pada titik ini, ruang agen Anda digunakan dengan aplikasi operator diaktifkan dan akun pemantauan Anda terkait. Agen dapat memantau masalah di akun ini.
Bagian 2 (Opsional): Tambahkan pemantauan lintas akun
Di bagian ini, Anda memperluas pengaturan sehingga ruang agen Anda dapat memantau sumber daya di AWS akun kedua (akun layanan). Ini melibatkan dua tindakan:
Menambahkan as AWS osiasi sumber DevOpsAgentStack yang mengarah ke akun layanan.
Menyebarkan ServiceStack ke akun layanan dengan peran IAM yang mempercayai ruang agen.
penting
Anda harus menyelesaikan Bagian 1 sebelum melanjutkan. Ini ServiceStack membutuhkan output AgentSpaceArn dari DevOpsAgentStack penerapan.
Langkah 1: Konfigurasikan ID akun layanan
Buka lib/constants.ts dan atur ID akun layanan Anda:
Contoh berikut menunjukkan konstanta untuk memperbarui:
export const SERVICE_ACCOUNT_ID = "<YOUR_SERVICE_ACCOUNT_ID>";
Membuat DevOpsAgentStack asosi AWS asi sumber dengan menggunakan ID akun ini. Jika Anda menerapkan nilai DevOpsAgentStack sebelum menyetel ini, gunakan ulang untuk membuat asosiasi:
Jalankan perintah berikut untuk menyebarkan kembali:
npm run build cdk deploy DevOpsAgentStack --profile monitoring
Langkah 2: Atur ruang agen ARN
Salin AgentSpaceArn nilai dari DevOpsAgentStack output (Bagian 1, Langkah 4) dan atur dilib/constants.ts:
Contoh berikut menunjukkan konstanta untuk memperbarui:
export const AGENT_SPACE_ARN = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>";
Menggunakan ServiceStack nilai ini untuk menjangkau kebijakan kepercayaan pada peran akun sekunder. Itu ServiceStack hanya disintesis ketika nilai ini ditetapkan.
Langkah 3: Bootstrap akun layanan
Jika Anda belum melakukan bootstrap AWS CDK di akun layanan Anda, jalankan perintah berikut:
cdk bootstrap aws://<SERVICE_ACCOUNT_ID>/<REGION> --profile service
Langkah 4: Terapkan ServiceStack
Jalankan perintah berikut untuk membangun dan menyebarkan ServiceStack dengan menggunakan kredenSIAL untuk akun layanan:
npm run build cdk deploy ServiceStack --profile service
Ini membuat sumber daya berikut di akun layanan:
Peran IAM (
DevOpsAgentRole-SecondaryAccount) yang mempercayai ruang agen di akun pemantauanFungsi echo Lambda (
echo-service) sebagai contoh layanan
Langkah 5: Verifikasi penerapan
Untuk mengonfirmasi bahwa fungsi Lambda berhasil digunakan, jalankan perintah berikut untuk menguji layanan echo:
aws lambda invoke \ --function-name echo-service \ --payload '{"test": "hello world"}' \ --profile service \ response.json cat response.json
Bagian 3 (Opsional): Tambahkan keterampilan, agen khusus, dan pemicu terjadwal
Di bagian ini, Anda menambahkan tiga sumber daya ke ruang agen yang Anda buat di Bagian 1. Anda menambahkan keterampilan yang dimuat agen bila relevan dan agen khusus yang mencakup agen ke alur kerja tertentu. Anda juga menambahkan pemicu terjadwal yang menjalankan agen kustom secara otomatis. Sumber daya ini menggunakan CfnTrigger konstruksi CfnAsset dan dari aws-cdk-lib/aws-devopsagent modul.
Sumber daya ini mungkin dikenakan biaya tambahan ke AWS akun Anda. Untuk menghapusnya setelah selesai, ikuti bagian Pembersihan di akhir panduan ini.
Contoh ini menggunakan skill tipe custom_agent aset dan. Konstruksi yang CfnAsset sama menciptakan setiap jenis aset—sepertimemory_store,agents_md, dan. attachment Untuk menggunakan jenis yang berbeda, ubah assetType properti dan berikan metadata yang dibutuhkan tipe tersebut. Untuk daftar lengkap jenis aset, metadata yang diperlukan, dan referensi properti, lihatMengelola aset.
penting
Anda harus menyelesaikan Bagian 1 sebelum melanjutkan. Tumpukan ini memerlukan ID ruang agen dari DevOpsAgentStack penerapan.
Langkah 1: Buat tumpukan konten
Buat file bernama lib/content-stack.ts dengan isi berikut ini. Tindakan pemicu berbasis waktu mereferensikan agen kustom berdasarkan ID aset, dalam formulircustom:<assetId>. Tumpukan secara otomatis menghubungkan referensi ini dengan menggunakan nilai dari attrAssetId atribut agen kustom. skillsDaftar agen kustom juga menggunakan ID aset daripada nama, sehingga menggunakan keterampilanattrAssetId. Ini juga memberi tumpukan ketergantungan implisit, sehingga keterampilan dibuat sebelum agen yang melampirkannya.
import * as cdk from 'aws-cdk-lib'; import { CfnAsset, CfnTrigger } from 'aws-cdk-lib/aws-devopsagent'; import { Construct } from 'constructs'; export interface ContentStackProps extends cdk.StackProps { readonly agentSpaceId: string; } export class ContentStack extends cdk.Stack { constructor(scope: Construct, id: string, props: ContentStackProps) { super(scope, id, props); // A skill the agent loads when relevant const skill = new CfnAsset(this, 'ExampleSkill', { agentSpaceId: props.agentSpaceId, assetType: 'skill', metadata: { name: 'rds-performance-investigation', description: 'Investigation procedures for RDS performance issues.', agent_types: ['GENERIC'], }, files: [ { path: 'SKILL.md', contentText: [ '# RDS Performance Investigation', 'Use this skill when investigating database latency, connection', 'errors, or query timeouts.', ].join('\n'), }, ], }); // A custom agent with attached skills that a trigger can invoke const customAgent = new CfnAsset(this, 'ExampleCustomAgent', { agentSpaceId: props.agentSpaceId, assetType: 'custom_agent', metadata: { name: 'rds-firefighter', skills: [skill.attrAssetId], }, files: [ { path: 'AGENT.md', contentText: ['# RDS Firefighter', 'Custom agent for RDS incidents.'].join('\n'), }, ], }); // A time-based trigger that runs the custom agent on a schedule const dailyTrigger = new CfnTrigger(this, 'DailyTrigger', { agentSpaceId: props.agentSpaceId, type: 'TIME_BASED', condition: { schedule: { expression: 'rate(1 day)', }, }, action: { actionType: 'create:task', task: { agent: `custom:${customAgent.attrAssetId}`, }, }, status: 'Active', }); new cdk.CfnOutput(this, 'SkillAssetId', { description: 'The skill asset ID', value: skill.attrAssetId, }); new cdk.CfnOutput(this, 'CustomAgentAssetId', { description: 'The custom agent asset ID', value: customAgent.attrAssetId, }); new cdk.CfnOutput(this, 'TriggerId', { description: 'The trigger ID', value: dailyTrigger.attrTriggerId, }); } }
Langkah 2: Tambahkan tumpukan ke AWS Aplikasi CDK
Di titik masuk aplikasi Anda (misalnya,bin/app.ts), buat instance tumpukan dan berikan ID ruang agen yang Anda rekam di Bagian 1, Langkah 4. Gunakan ID, sepertiabc123, dan bukan AgentSpaceArn nilai penuh:
new ContentStack(app, 'ContentStack', { env: { account: MONITORING_ACCOUNT_ID, region: process.env.CDK_DEFAULT_REGION }, agentSpaceId: '<AGENT_SPACE_ID>', });
Langkah 3: Terapkan tumpukan
Jalankan perintah berikut untuk membangun dan menyebarkan tumpukan dengan menggunakan kredentif akun pemantauan:
npm run build cdk deploy ContentStack --profile monitoring
Pro agentSpaceId assetType perti dan properti aset hanya dibuat, seperti,agentSpaceId, typecondition, dan action properti pemicu. Mengubah salah satu dari mereka menggantikan sumber daya. Anda dapat memperbarui pemicu status (ActiveatauInactive) di tempat—mengaturnya Inactive untuk menjeda pemicu tanpa menghapusnya. Untuk informasi selengkapnya tentang jenis aset lainnya dan referensi properti lengkap, lihatMengelola aset.
Langkah 4: Verifikasi penerapan
Untuk mengonfirmasi bahwa aset dan pemicu telah dibuat, jalankan perintah AWS CLI berikut:
aws devops-agent list-assets \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION> aws devops-agent list-triggers \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
Pemecahan masalah
Bagian ini menjelaskan masalah umum dan cara mengatasinya.
CfnAssetatau CfnTrigger tidak diekspor dari aws-cdk-lib/aws-devopsagent
Konstruksi ini memerlukan
aws-cdk-libversi 2.268.0 atau yang lebih baru. Jnpm list aws-cdk-libalankan untuk memeriksa versi Anda, dan jalankannpm install aws-cdk-lib@latestuntuk meningkatkan.
CloudFormation Jenis sumber daya tidak ditemukan
Verifikasi bahwa Anda menerapkan di aWilayah yang Didukung.
Konfirmasikan bahwa AWS CLI Anda dikonfigurasi dengan izin yang sesuai.
Pembuatan peran IAM gagal
Pastikan peran penerapan Anda memiliki izin untuk membuat peran IAM.
Periksa apakah kondisi kebijakan kepercayaan cocok dengan ID akun Anda.
Cross-account penerapan gagal dengan “Tidak dapat mengambil peran di akun target”
Setiap tumpukan harus digunakan dengan kredenSIAL untuk akun target. Gunakan ben
--profiledera untuk menentukan profil AWS CLI yang benar.Verifikasi bahwa AWS CDK telah di-bootstrap di akun target.
Penundaan propagasi IAM
Perubahan peran IAM dapat memakan waktu beberapa menit untuk disebarkan. Jika pembuatan ruang agen gagal segera setelah pembuatan peran, tunggu beberapa menit dan gunakan kembali.
Pembersihan
Untuk menghapus semua sumber daya, hancurkan tumpukan dalam urutan terbalik.
Jalankan perintah berikut untuk menghancurkan tumpukan:
# If you deployed the Part 3 ContentStack, destroy it first cdk destroy ContentStack --profile monitoring # If you deployed the ServiceStack, destroy it next cdk destroy ServiceStack --profile service # Then destroy the DevOpsAgentStack cdk destroy DevOpsAgentStack --profile monitoring
Peringatan: Tindakan ini menghapus ruang agen Anda dan semua data terkait secara permanen. Tindakan ini tidak dapat dibatalkan. Pastikan Anda telah membuat cadangan informasi penting sebelum melanjutkan.
Pertimbangan keamanan
Aplikasi AWS CDK membuat peran IAM dengan kebijakan kepercayaan yang hanya memungkinkan prinsipal
aidevops.amazonaws.com.rproxy.goskope.comlayanan untuk mengasumsikannya.Kebijakan kepercayaan mencakup kondisi yang membatasi akses ke AWS akun spesifik Anda dan ruang agen ARN.
Semua kebijakan mengikuti prinsip hak istimewa paling sedikit. Tinjau dan sesuaikan kebijakan IAM berdasarkan persyaratan keamanan organisasi Anda.
Peran lintas akun (
DevOpsAgentRole-SecondaryAccount) menggunakan nama tetap dan dicakup ke ruang agen tertentu ARN.
Langkah selanjutnya
Setelah Anda menyebarkan AWS DevOps Agen Anda dengan menggunakan AWS CDK:
Pelajari tentang berbagai kemampuan DevOps Agen di Panduan Pengguna AWS DevOps Agen.
Pertimbangkan untuk mengintegrasikan pener AWS apan CDK ke dalam CI/CD pipeline Anda untuk manajemen infrastruktur otomatis.
Jika Anda mendaftarkan integrasi pihak ketiga, dapatkan URL webhook dan rahasianya dengan memutar webhook di konsol. AWS CDK menyebarkan melalui AWS CloudFormation, yang tidak mengembalikan rahasia webhook sebagai output tumpukan. Untuk petunjuk tentang mengelola kredentif webhook, lihat Mengelola kreden tif webhook.
Sumber daya tambahan
Contoh repositori CDK
di situs web GitHub AWS Referensi pustaka konstruksi DevOps Agen CDK di Referensi AWS API CDK
CfnAssetdan CfnTrigger buat referensi di Referensi API AWS CDK
AWS DevOps Referensi jenis sumber daya agen dalam Referensi AWS CloudFormation Template