View a markdown version of this page

Osservabilità delle applicazioni per 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à delle applicazioni per AWS Azione

Application Observability for AWS GitHub Action fornisce un flusso di lavoro end-to-end per l'analisi dell'osservabilità delle applicazioni che collega il codice sorgente e i dati di telemetria di produzione in tempo reale all'agente AI. Sfrutta gli CloudWatch MCP e genera prompt personalizzati per fornire il contesto di cui gli agenti di intelligenza artificiale hanno bisogno per la risoluzione dei problemi e l'applicazione delle correzioni del codice.

L'azione imposta e configura il server MCP e il server MCP di CloudWatch Application Signals, consentendo loro di accedere ai dati di CloudWatch telemetria in tempo reale come contesto per la 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 @awsapm nei tuoi GitHub problemi per attivare l'agente AI. L'agente risolverà i problemi di produzione, implementerà le correzioni e migliorerà la copertura dell'osservabilità in base ai dati delle tue applicazioni in tempo reale.

Questa azione di per sé non comporta alcun costo diretto. Tuttavia, l'utilizzo di questa azione può comportare costi 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 potenziali.

Nozioni di base

Questa azione configura gli agenti di intelligenza artificiale 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 mostra un modello di flusso di lavoro che integra questa azione con claude-code-base-action di Anthropic per eseguire indagini automatizzate.

Prerequisiti

Prima di iniziare, assicurati di disporre di:

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

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

    • CloudWatch Segnali e accesso alle applicazioni CloudWatch

    • Accesso ai modelli 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 Credenziali

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

  1. Crea un IAM Identity Provider

    Innanzitutto, crea un IAM Identity Provider che si GitHub fidi dell'endpoint OIDC nella console di gestione: AWS

    1. Apertura della 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 policy IAM

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

  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 tua filiale (ad esempio, principale)

  4. Allega la politica IAM

    Nella scheda Autorizzazioni del ruolo, allega la policy IAM creata nel passaggio 2.

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

Fase 2: Configurazione di Secrets e Add Workflow

  1. Configurare i segreti del repository

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

    • Crea un nuovo segreto del repository denominato AWS_IAM_ROLE_ARN e imposta il suo valore sull'ARN del ruolo IAM che hai creato nel passaggio 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 di 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 un flusso di lavoro di 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 sulla 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: iniziare a utilizzare l'azione

Dopo aver configurato il flusso di lavoro, @awsapm menziona qualsiasi GitHub problema per avviare un' AI-powered indagine. L'azione analizzerà la tua richiesta, accederà ai dati di telemetria in tempo reale e fornirà consigli o implementerà automaticamente le correzioni.

Esempi di casi d'uso:

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

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

    GitHub problema relativo alla visualizzazione dei risultati delle indagini relative ai problemi di disponibilità del servizio di prenotazione degli appuntamenti con l'analisi degli errori.

    @awsapm, can you post a fix?

    GitHub thread relativo al problema che mostra i risultati dell'indagine con un riepilogo dell'implementazione della correzione e degli aggiornamenti di stato.
  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:

    • Pubblica risultati e raccomandazioni direttamente nel problema

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

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

Sicurezza

Questa azione dà priorità alla sicurezza con rigorosi controlli di accesso, OIDC-based AWS autenticazione e protezioni integrate contro gli attacchi di prompt injection. 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:

  • Controllo degli accessi e requisiti di autorizzazione

  • AWS Autorizzazioni IAM e configurazione OIDC

  • Rischi e mitigazioni dell'iniezione tempestiva

  • Best practice di sicurezza

Consulta la documentazione https://github.com/aws-actions/application-observability-for-aws/blob/main/docs/security.md sulla sicurezza.

Configurazione

Autorizzazioni richieste

Il ruolo IAM assunto da GitHub Actions deve avere le seguenti autorizzazioni.

Nota: bedrock:InvokeModel e 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: