Osservabilità dell'applicazione per l' AWS azione - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Osservabilità dell'applicazione per l' AWS azione

L'Application Observability for AWS GitHub Action fornisce un flusso di lavoro di indagine sull'osservabilità delle end-to-end applicazioni che collega il codice sorgente e i dati di telemetria di produzione in tempo reale all'agente AI. Sfrutta CloudWatch MCPs e genera prompt personalizzati per fornire il contesto necessario agli agenti di intelligenza artificiale per la risoluzione dei problemi e l'applicazione di correzioni al codice.

L'azione imposta e configura CloudWatch Application Signals MCP Server e CloudWatch MCP Server, consentendo loro di accedere ai dati di telemetria in tempo reale come contesto di risoluzione dei problemi. Puoi utilizzare il tuo modello di intelligenza artificiale preferito, tramite la tua chiave API, un modello di terze parti o Amazon Bedrock, per le indagini sulle prestazioni delle applicazioni.

Per iniziare, indica tra i tuoi GitHub problemi l'attivazione dell'agente AI. @awsapm L'agente risolverà i problemi di produzione, implementerà le correzioni e migliorerà la copertura dell'osservabilità sulla base dei dati delle applicazioni in tempo reale.

Questa azione di per sé non comporta costi diretti. Tuttavia, l'utilizzo di questa azione può comportare addebiti per AWS i servizi e l'utilizzo del modello di intelligenza artificiale. Per informazioni dettagliate sui costi potenziali, consulta la documentazione relativa alle considerazioni sui costi.

Nozioni di base

Questa azione configura gli agenti AI all'interno del GitHub flusso di lavoro generando configurazioni MCP AWS specifiche e prompt di osservabilità personalizzati. Devi solo fornire il ruolo IAM da assumere e un Bedrock Model ID che desideri utilizzare o un token API dal tuo abbonamento LLM esistente. L'esempio seguente illustra un modello di flusso di lavoro che integra questa azione con quella di Anthropic per eseguire indagini automatizzate. claude-code-base-action

Prerequisiti

Prima di iniziare, assicurati di disporre di quanto segue:

  • GitHub Autorizzazioni al repository: accesso in scrittura o superiore al repository (necessario per attivare l'azione)

  • AWS Ruolo IAM: un ruolo IAM configurato con OpenID Connect (OIDC) for GitHub Actions con autorizzazioni per:

    • CloudWatch Segnali applicativi e accesso CloudWatch

    • Accesso al modello Amazon Bedrock (se si utilizzano modelli Bedrock)

  • GitHub Token: il flusso di lavoro utilizza automaticamente GITHUB_TOKEN con le autorizzazioni richieste

Fasi di configurazione

Fase 1: Configurazione AWS delle credenziali

Questa azione si basa sull'azione aws-actions/ per configurare AWS l'autenticazione nel tuo configure-aws-credentials Actions Environment. GitHub Ti consigliamo di utilizzare OpenID Connect (OIDC) per l'autenticazione. AWS OIDC consente ai flussi di lavoro GitHub Actions di accedere alle AWS risorse utilizzando credenziali di breve durata, in modo da non dover archiviare AWS credenziali a lungo termine nel repository.

  1. Crea un IAM Identity Provider

    Innanzitutto, crea un IAM Identity Provider che affidi l'endpoint OIDC GitHub dell'utente nella console di gestione: AWS

    1. Apri la console IAM

    2. Fai clic su Provider di identità in Gestione degli accessi

    3. Fai clic sul pulsante Aggiungi provider per aggiungere un provider di GitHub identità se non è ancora stato creato

    4. Seleziona il tipo di provider di identità OpenID Connect

    5. Inserisci https://token.actions.githubusercontent.com la casella di immissione dell'URL del provider

    6. Inserisci sts.amazonaws.com la casella di input Audience

    7. Fai clic sul pulsante Aggiungi fornitore

  2. Crea una politica IAM

    Crea una policy IAM con le autorizzazioni necessarie per questa azione. Consulta la Autorizzazioni richieste sezione seguente per i dettagli.

  3. Crea un ruolo IAM

    Crea un ruolo IAM (ad esempio,AWS_IAM_ROLE_ARN) nella console di AWS gestione con il seguente modello di policy di fiducia. Ciò consente ai GitHub repository autorizzati di assumere il ruolo:

    { "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>" } } } ] }

    Sostituisci i seguenti segnaposto nel modello:

    • <AWS_ACCOUNT_ID>- L'ID del tuo account AWS

    • <GITHUB_ORG>- Il nome GitHub della tua organizzazione

    • <GITHUB_REPOSITORY>- Il nome del tuo repository

    • <GITHUB_BRANCH>- Il nome della filiale (ad esempio, principale)

  4. Allega la politica IAM

    Nella scheda Autorizzazioni del ruolo, allega la policy IAM che hai creato nel passaggio 2.

Per ulteriori informazioni sulla configurazione di OIDC con AWS, consulta la Guida rapida di avvio di configure-aws-credentials OIDC.

Fase 2: Configurazione dei segreti e aggiunta del flusso di lavoro

  1. Configura i segreti del repository

    Vai al tuo repository → Impostazioni → Segreti e variabili → Azioni.

    • Crea un nuovo repository secret denominato AWS_IAM_ROLE_ARN e imposta il suo valore sull'ARN del ruolo IAM che hai creato nella fase 1.

    • (Facoltativo) Crea una variabile di repository denominata AWS_REGION per specificare la tua AWS regione (il valore predefinito è se non è impostata) us-east-1

  2. Aggiungi il file del flusso di lavoro

    Di seguito è riportato un esempio di flusso di lavoro che dimostra l'utilizzo di questa azione con i modelli Amazon Bedrock. Crea il flusso di lavoro Application Observability Investigation da questo modello nella tua GitHub directory Repository. .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 }}

    Nota di configurazione:

    • Questo flusso di lavoro si attiva automaticamente quando @awsapm viene menzionato in un problema o in un commento

    • Il flusso di lavoro utilizza il AWS_IAM_ROLE_ARN segreto configurato nel passaggio precedente

    • Aggiorna il parametro del modello nel passaggio 2 per specificare l'ID del modello Amazon Bedrock preferito

    • Puoi personalizzare il nome del bot (ad esempio@awsapm-prod,@awsapm-staging) nel parametro bot_name per supportare ambienti diversi

Passaggio 3: Inizia a utilizzare l'azione

Una volta configurato il flusso di lavoro, @awsapm segnalalo qualsiasi GitHub problema per avviare un'indagine basata sull'intelligenza artificiale. L'azione analizzerà la tua richiesta, accederà ai dati di telemetria in tempo reale e fornirà consigli o implementerà automaticamente le correzioni.

Casi d'uso di esempio:

  1. Analizza i problemi di prestazioni e pubblica e correggi:

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

    @awsapm, can you post a fix?

  2. Abilita la strumentazione:

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

  3. Interroga i dati di telemetria:

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

Cosa succede dopo:

  1. Il flusso di lavoro rileva la @awsapm menzione e avvia l'indagine

  2. L'agente AI accede ai dati di AWS telemetria in tempo reale tramite i server MCP configurati

  3. L'agente analizza il problema e può:

    • Pubblica risultati e consigli direttamente nel numero

    • Crea una pull request con modifiche al codice (per strumentazione o correzioni)

  4. Puoi rivedere i risultati e continuare la conversazione citando nuovamente @awsapm con domande di follow-up

Sicurezza

Questa azione dà priorità alla sicurezza con controlli di accesso rigorosi, AWS autenticazione basata su OIDC e protezioni integrate contro gli attacchi di pronta iniezione. Solo gli utenti con accesso in scrittura o superiore possono attivare l'azione e tutte le operazioni sono limitate al repository specifico.

Per informazioni dettagliate sulla sicurezza, tra cui:

  • Requisiti di autorizzazione e controllo degli accessi

  • AWS Autorizzazioni IAM e configurazione OIDC

  • Rischi e mitigazioni dell'iniezione tempestiva

  • Best practice di sicurezza

Consulta la documentazione sulla sicurezza.

Configurazione

Autorizzazioni richieste

Il ruolo IAM assunto da GitHub Actions deve disporre delle seguenti autorizzazioni.

Nota: bedrock:InvokeModel bedrock:InvokeModelWithResponseStream sono obbligatori solo se utilizzi modelli 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": "*" } ] }

Documentazione

Per ulteriori informazioni, consulta: