Observabilidad de aplicaciones para la acción de AWS - Amazon CloudWatch

Observabilidad de aplicaciones para la acción de AWS

La observabilidad de aplicaciones para la GitHub Action de AWS proporciona un flujo de trabajo integral de investigación de la observabilidad de aplicaciones que conecta el código fuente y los datos de telemetría de producción en vivo con el agente de IA. Aprovecha los MCP de CloudWatch y genera peticiones personalizadas para proporcionar el contexto que los agentes de IA necesitan para solucionar problemas y aplicar correcciones de código.

La acción configura el servidor MCP de CloudWatch Application Signals y el servidor MCP de CloudWatch, lo que les permite acceder a los datos de telemetría en vivo como contexto de solución de problemas. Para investigar el rendimiento de las aplicaciones, puede utilizar el modelo de IA que prefiera, ya sea mediante su propia clave de API, un modelo de terceros o Amazon Bedrock.

Para comenzar, mencione @awsapm en los problemas de GitHub para activar el agente de IA. El agente solucionará los problemas de producción, implementará correcciones y mejorará la cobertura de observabilidad en función de los datos de la aplicación en vivo.

Esta acción en sí no supone ningún costo directo. Sin embargo, el uso de esta acción puede generar cargos por los servicios de AWS y el uso del modelo de IA. Consulte la documentación sobre consideraciones de costos para obtener información detallada sobre los posibles costos.

Introducción

Esta acción configura los agentes de IA dentro del flujo de trabajo de GitHub mediante la generación de configuraciones de MCP específicas de AWS y peticiones de observabilidad personalizadas. Solo necesita proporcionar el rol de IAM que se asumirá y un ID de modelo de Bedrock que desee usar o un token de API de la suscripción del LLM actual. En el siguiente ejemplo, se muestra una plantilla de flujo de trabajo que integra esta acción con la acción basada en claude-code-base-action de Anthropic para llevar a cabo investigaciones automatizadas.

Requisitos previos

Antes de comenzar, asegúrese de que dispone de lo siguiente:

  • Permisos del repositorio de GitHub: acceso de escritura o superior al repositorio (necesario para activar la acción)

  • Rol de AWS IAM: rol de IAM configurado con OpenID Connect (OIDC) para GitHub Actions con permisos para lo siguiente:

    • Acceso a CloudWatch Application Signals y CloudWatch

    • Acceso al modelo de Amazon Bedrock (si se utilizan modelos de Bedrock)

  • Token de GitHub: el flujo de trabajo usa automáticamente GITHUB_TOKEN con los permisos necesarios

Pasos de configuración

Paso 1: configuración de las credenciales de AWS

Esta acción se basa en la acción aws-actions/configure-aws-credentials para configurar la autenticación de AWS en el entorno de GitHub Actions. Recomendamos usar OpenID Connect (OIDC) para autenticarse con AWS. OIDC permite que los flujos de trabajo de GitHub Actions accedan a los recursos de AWS mediante credenciales de AWS de corta duración, por lo que no tiene que almacenar credenciales a largo plazo en el repositorio.

  1. Creación de un proveedor de identidades de IAM

    Primero, cree un proveedor de identidades de IAM que confíe en el punto de conexión de OIDC de GitHub en la Consola de administración de AWS:

    1. Apertura de la consola de IAM

    2. Elija Proveedores de identidades en Administración de acceso.

    3. Haga clic en Agregar proveedor para agregar el proveedor de identidades de GitHub si aún no se ha creado.

    4. Seleccione el tipo de proveedor de identidades de OpenID Connect.

    5. Ingrese https://token.actions.githubusercontent.com en el cuadro de entrada URL de proveedor.

    6. Ingrese sts.amazonaws.com en el cuadro de entrada Audiencia.

    7. Haga clic en Agregar proveedor.

  2. Crear una política de IAM

    Cree una política de IAM con los permisos necesarios para esta acción. Consulte la sección Permisos necesarios a continuación para obtener más información.

  3. Creación de un rol de IAM

    Cree un rol de IAM (por ejemplo, AWS_IAM_ROLE_ARN) en la Consola de administración de AWS con la siguiente plantilla de política de confianza. Esto permite que los repositorios de GitHub autorizados asuman el rol:

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

    Reemplace los marcadores de posición siguientes en la plantilla:

    • <AWS_ACCOUNT_ID>: ID de cuenta de AWS

    • <GITHUB_ORG>: nombre de la organización de GitHub

    • <GITHUB_REPOSITORY>: nombre del repositorio

    • <GITHUB_BRANCH>: nombre de la ramificación (por ejemplo, principal)

  4. Adjunción de la política de IAM

    En la pestaña Permisos del rol, adjunte la política de IAM que creó en el paso 2.

Para obtener más información sobre cómo configurar OIDC con AWS, consulte la Guía de inicio rápido de OIDC de configure-aws-credentials.

Paso 2: configuración de secretos y adición del flujo de trabajo

  1. Configuración de secretos del repositorio

    Vaya al repositorio → Configuración → Secretos y variables → Acciones.

    • Cree un nuevo secreto de repositorio denominado AWS_IAM_ROLE_ARN y establezca su valor en el ARN del rol de IAM que creó en el paso 1.

    • (Opcional) Cree una variable de repositorio denominada AWS_REGION para especificar la región de AWS (el valor predeterminado es us-east-1 si no se estableció).

  2. Adición del archivo de flujo de trabajo

    A continuación se muestra un ejemplo de flujo de trabajo que demuestra el uso de esta acción con los modelos de Amazon Bedrock. Cree un flujo de trabajo de investigación de observabilidad de aplicaciones a partir de esta plantilla en el directorio de repositorios de GitHub .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 sobre la configuración:

    • Este flujo de trabajo se activa automáticamente cuando @awsapm se menciona en un problema o comentario.

    • El flujo de trabajo utiliza el secreto AWS_IAM_ROLE_ARN configurado en el paso anterior.

    • Actualice el parámetro del modelo en el paso 2 para especificar el ID de modelo preferido de Amazon Bedrock.

    • Puede personalizar el nombre del bot (por ejemplo, @awsapm-prod, @awsapm-staging) en el parámetro bot_name para que sea compatible con diferentes entornos.

Paso 3: inicio del uso de la acción

Una vez que el flujo de trabajo esté configurado, mencione @awsapm en cualquier problema de GitHub para activar una investigación basada en IA. La acción analizará la solicitud, accederá a los datos de telemetría en vivo y proporcionará recomendaciones o implementará correcciones automáticamente.

Ejemplos de casos de uso:

  1. Investigue los problemas de rendimiento, publique y corrija:

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

    @awsapm, can you post a fix?

  2. Active la instrumentación:

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

  3. Consulte datos de telemetría:

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

Qué ocurre a continuación:

  1. El flujo de trabajo detecta la mención @awsapm y activa la investigación.

  2. El agente de IA accede a los datos de telemetría de AWS en vivo a través de los servidores MCP configurados.

  3. El agente analiza el problema y puede:

    • Publicar los resultados y las recomendaciones directamente en el problema.

    • Crear una solicitud de extracción con cambios en el código (para la instrumentación o correcciones).

  4. Para revisar los resultados y continuar la conversación, vuelva a mencionar @awsapm con preguntas de seguimiento.

Seguridad

Esta acción prioriza la seguridad con controles de acceso estrictos, una autenticación de AWS basada en OIDC y protecciones integradas contra ataques de inyección de peticiones. Solo los usuarios con acceso de escritura o superior pueden activar la acción, y todas las operaciones se limitan al repositorio específico.

Para obtener información de seguridad detallada, que incluye:

  • Requisitos de control de acceso y permisos

  • Permisos de AWS IAM y configuración de OIDC

  • Riesgos y mitigaciones de la inyección de peticiones

  • Prácticas recomendadas de seguridad

Consulte la documentación sobre seguridad.

Configuración

Permisos necesarios

El rol de IAM que asume GitHub Actions debe tener los siguientes permisos.

Nota: bedrock:InvokeModel y bedrock:InvokeModelWithResponseStream solo son obligatorios si utiliza modelos 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": "*" } ] }

Documentación

Para obtener más información, consulte: