Observabilitas aplikasi untuk Aksi AWS - Amazon CloudWatch

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

Observabilitas aplikasi untuk Aksi AWS

Application Observability for AWS GitHub Action menyediakan alur kerja investigasi observabilitas end-to-end aplikasi yang menghubungkan kode sumber Anda dan data telemetri produksi langsung ke agen AI. Ini memanfaatkan CloudWatch MCPs dan menghasilkan permintaan khusus untuk memberikan konteks yang dibutuhkan agen AI untuk pemecahan masalah dan menerapkan perbaikan kode.

Tindakan ini mengatur dan mengonfigurasi Server MCP Sinyal CloudWatch Aplikasi dan Server CloudWatch MCP, memungkinkan mereka mengakses data telemetri langsung sebagai konteks pemecahan masalah. Anda dapat menggunakan model AI pilihan Anda - baik melalui kunci API Anda sendiri, model pihak ketiga, atau Amazon Bedrock - untuk penyelidikan kinerja aplikasi.

Untuk memulai, sebutkan @awsapm dalam GitHub masalah Anda untuk memicu agen AI. Agen akan memecahkan masalah produksi, menerapkan perbaikan, dan meningkatkan cakupan observabilitas berdasarkan data aplikasi langsung Anda.

Tindakan ini sendiri tidak menimbulkan biaya langsung. Namun, menggunakan tindakan ini dapat mengakibatkan biaya untuk AWS layanan dan penggunaan model AI. Silakan merujuk ke dokumentasi pertimbangan biaya untuk informasi rinci tentang potensi biaya.

Memulai

Tindakan ini mengonfigurasi agen AI dalam GitHub alur kerja Anda dengan menghasilkan konfigurasi MCP AWS khusus dan permintaan pengamatan khusus. Anda hanya perlu memberikan peran IAM untuk diasumsikan dan ID Model Batuan Dasar yang ingin Anda gunakan, atau token API dari langganan LLM Anda yang ada. Contoh di bawah ini menunjukkan template alur kerja yang mengintegrasikan tindakan ini dengan Anthropic claude-code-base-action untuk menjalankan investigasi otomatis.

Prasyarat

Sebelum Anda mulai, pastikan Anda memiliki yang berikut:

  • GitHub Izin Repositori: Menulis akses atau lebih tinggi ke repositori (diperlukan untuk memicu tindakan)

  • AWS Peran IAM: Peran IAM yang dikonfigurasi dengan OpenID Connect (OIDC) untuk Tindakan dengan izin untuk: GitHub

    • CloudWatch Sinyal Aplikasi dan CloudWatch akses

    • Akses model Amazon Bedrock (jika menggunakan model Bedrock)

  • GitHub Token: Alur kerja secara otomatis menggunakan GITHUB_TOKEN dengan izin yang diperlukan

Langkah Penyiapan

Langkah 1: Siapkan AWS Kredensial

Tindakan ini bergantung pada tindakan aws-actions/ untuk menyiapkan AWS autentikasi di Lingkungan configure-aws-credentials Tindakan Anda. GitHub Kami merekomendasikan menggunakan OpenID Connect (OIDC) untuk mengautentikasi dengan. AWS OIDC memungkinkan alur kerja GitHub Actions untuk mengakses AWS sumber daya menggunakan kredensyal berumur pendek sehingga Anda tidak perlu menyimpan AWS kredensyal jangka panjang di repositori Anda.

  1. Buat Penyedia Identitas IAM

    Pertama, buat Penyedia Identitas IAM yang mempercayai titik akhir GitHub OIDC di Konsol Manajemen: AWS

    1. Buka konsol IAM

    2. Klik Penyedia identitas di bawah Manajemen akses

    3. Klik tombol Tambah penyedia untuk menambahkan penyedia GitHub Identitas jika belum dibuat

    4. Pilih jenis penyedia Identitas OpenID Connect

    5. Masukkan https://token.actions.githubusercontent.com untuk kotak masukan URL Penyedia

    6. Masuk sts.amazonaws.com untuk kotak masukan Audiens

    7. Klik tombol Tambah penyedia

  2. Buat Kebijakan IAM

    Buat kebijakan IAM dengan izin yang diperlukan untuk tindakan ini. Lihat Izin yang Diperlukan bagian di bawah untuk detailnya.

  3. Buat Peran IAM

    Buat peran IAM (misalnya,AWS_IAM_ROLE_ARN) di Konsol AWS Manajemen dengan templat kebijakan kepercayaan berikut. Ini memungkinkan GitHub repositori resmi untuk mengambil peran:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<AWS_ACCOUNT_ID>:oidc-provider/token.actions.githubusercontent.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com" }, "StringLike": { "token.actions.githubusercontent.com:sub": "repo:<GITHUB_ORG>/<GITHUB_REPOSITORY>:ref:refs/heads/<GITHUB_BRANCH>" } } } ] }

    Ganti placeholder berikut di template:

    • <AWS_ACCOUNT_ID>- ID AWS akun Anda

    • <GITHUB_ORG>- Nama GitHub organisasi Anda

    • <GITHUB_REPOSITORY>- Nama repositori Anda

    • <GITHUB_BRANCH>- Nama cabang Anda (misalnya, utama)

  4. Lampirkan Kebijakan IAM

    Di tab Izin peran, lampirkan kebijakan IAM yang Anda buat di langkah 2.

Untuk informasi selengkapnya tentang mengonfigurasi OIDC dengan AWS, lihat Panduan Memulai Cepat configure-aws-credentials OIDC.

Langkah 2: Konfigurasikan Rahasia dan Tambahkan Alur Kerja

  1. Konfigurasikan Rahasia Repositori

    Buka repositori Anda → Pengaturan → Rahasia dan variabel → Tindakan.

    • Buat rahasia repositori baru bernama AWS_IAM_ROLE_ARN dan atur nilainya ke ARN peran IAM yang Anda buat di Langkah 1.

    • (Opsional) Buat variabel repositori bernama AWS_REGION untuk menentukan AWS wilayah Anda (default jika tidak disetel) us-east-1

  2. Tambahkan File Alur Kerja

    Berikut ini adalah contoh alur kerja yang menunjukkan penggunaan tindakan ini dengan model Amazon Bedrock. Buat alur kerja Investigasi Observabilitas Aplikasi dari template ini di direktori GitHub Repositori Anda. .github/workflows

    name: Application observability for AWS on: issue_comment: types: [created, edited] issues: types: [opened, assigned, edited] jobs: awsapm-investigation: if: | (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@awsapm')) || (github.event_name == 'issues' && (contains(github.event.issue.body, '@awsapm') || contains(github.event.issue.title, '@awsapm'))) runs-on: ubuntu-latest permissions: contents: write # To create branches for PRs pull-requests: write # To post comments on PRs issues: write # To post comments on issues id-token: write # Required for AWS OIDC authentication steps: - name: Checkout repository uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: ${{ secrets.AWS_IAM_ROLE_ARN }} aws-region: ${{ vars.AWS_REGION || 'us-east-1' }} # Step 1: Prepare AWS MCP configuration and investigation prompt - name: Prepare Investigation Context id: prepare uses: aws-actions/application-observability-for-aws@v1 with: bot_name: "@awsapm" cli_tool: "claude_code" # Step 2: Execute investigation with Claude Code - name: Run Claude Investigation id: claude uses: anthropics/claude-code-base-action@beta with: use_bedrock: "true" # Set to any Bedrock Model ID model: "us.anthropic.claude-sonnet-4-5-20250929-v1:0" prompt_file: ${{ steps.prepare.outputs.prompt_file }} mcp_config: ${{ steps.prepare.outputs.mcp_config_file }} allowed_tools: ${{ steps.prepare.outputs.allowed_tools }} # Step 3: Post results back to GitHub issue/PR (reuse the same action) - name: Post Investigation Results if: always() uses: aws-actions/application-observability-for-aws@v1 with: cli_tool: "claude_code" comment_id: ${{ steps.prepare.outputs.awsapm_comment_id }} output_file: ${{ steps.claude.outputs.execution_file }} output_status: ${{ steps.claude.outputs.conclusion }}

    Catatan Konfigurasi:

    • Alur kerja ini terpicu secara otomatis ketika @awsapm disebutkan dalam masalah atau komentar

    • Alur kerja menggunakan AWS_IAM_ROLE_ARN rahasia yang dikonfigurasi pada langkah sebelumnya

    • Perbarui parameter model di Langkah 2 untuk menentukan ID model Amazon Bedrock pilihan Anda

    • Anda dapat menyesuaikan nama bot (misalnya,@awsapm-prod,@awsapm-staging) di parameter bot_name untuk mendukung lingkungan yang berbeda

Langkah 3: Mulai Menggunakan Tindakan

Setelah alur kerja dikonfigurasi, sebutkan @awsapm dalam GitHub masalah apa pun untuk memicu penyelidikan yang didukung AI. Tindakan ini akan menganalisis permintaan Anda, mengakses data telemetri langsung, dan memberikan rekomendasi atau menerapkan perbaikan secara otomatis.

Contoh Kasus Penggunaan:

  1. Selidiki masalah kinerja dan posting dan perbaiki:

    @awsapm, can you help me investigate availability issues in my appointment service?

    @awsapm, can you post a fix?

  2. Aktifkan instrumentasi:

    @awsapm, please enable Application Signals for lambda-audit-service and create a PR with the required changes.

  3. Data telemetri kueri:

    @awsapm, how many GenAI tokens have been consumed by my services in the past 24 hours?

Apa yang Terjadi Selanjutnya:

  1. Alur kerja mendeteksi @awsapm penyebutan dan memicu penyelidikan

  2. Agen AI mengakses data AWS telemetri langsung Anda melalui server MCP yang dikonfigurasi

  3. Agen menganalisis masalah dan:

    • Memposting temuan dan rekomendasi langsung dalam masalah

    • Membuat permintaan tarik dengan perubahan kode (untuk instrumentasi atau perbaikan)

  4. Anda dapat meninjau hasilnya dan melanjutkan percakapan dengan menyebutkan @awsapm lagi dengan pertanyaan lanjutan

Keamanan

Tindakan ini memprioritaskan keamanan dengan kontrol akses yang ketat, AWS otentikasi berbasis OIDC, dan perlindungan bawaan terhadap serangan injeksi yang cepat. Hanya pengguna dengan akses tulis atau lebih tinggi yang dapat memicu tindakan, dan semua operasi dicakup ke repositori tertentu.

Untuk informasi keamanan terperinci, termasuk:

  • Kontrol akses dan persyaratan izin

  • AWS Izin IAM dan konfigurasi OIDC

  • Risiko dan mitigasi injeksi yang cepat

  • Praktik terbaik keamanan

Lihat Dokumentasi Keamanan.

Konfigurasi

Izin yang Diperlukan

Peran IAM yang diasumsikan oleh GitHub Tindakan harus memiliki izin berikut.

Catatan: bedrock:InvokeModel dan hanya bedrock:InvokeModelWithResponseStream diperlukan jika Anda menggunakan model Amazon Bedrock

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-signals:ListServices", "application-signals:GetService", "application-signals:ListServiceOperations", "application-signals:ListServiceLevelObjectives", "application-signals:GetServiceLevelObjective", "application-signals:ListAuditFindings", "cloudwatch:DescribeAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:ListMetrics", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "logs:DescribeLogGroups", "logs:DescribeQueryDefinitions", "logs:ListLogAnomalyDetectors", "logs:ListAnomalies", "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:FilterLogEvents", "xray:GetTraceSummaries", "xray:GetTraceSegmentDestination", "xray:BatchGetTraces", "xray:ListRetrievedTraces", "xray:StartTraceRetrieval", "servicequotas:GetServiceQuota", "synthetics:GetCanary", "synthetics:GetCanaryRuns", "s3:GetObject", "s3:ListBucket", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:GetPolicy", "iam:GetPolicyVersion", "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": "*" } ] }

Dokumentasi

Untuk informasi lebih lanjut, lihat: