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
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
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
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
-
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:
-
Apertura de la consola de IAM
-
Elija Proveedores de identidades en Administración de acceso.
-
Haga clic en Agregar proveedor para agregar el proveedor de identidades de GitHub si aún no se ha creado.
-
Seleccione el tipo de proveedor de identidades de OpenID Connect.
-
Ingrese
https://token.actions.githubusercontent.comen el cuadro de entrada URL de proveedor. -
Ingrese
sts.amazonaws.com.rproxy.govskope.caen el cuadro de entrada Audiencia. -
Haga clic en Agregar proveedor.
-
-
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.
-
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)
-
-
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
-
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_ARNy establezca su valor en el ARN del rol de IAM que creó en el paso 1. -
(Opcional) Cree una variable de repositorio denominada
AWS_REGIONpara especificar la región de AWS (el valor predeterminado esus-east-1si no se estableció).
-
-
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
@awsapmse menciona en un problema o comentario. -
El flujo de trabajo utiliza el secreto
AWS_IAM_ROLE_ARNconfigurado 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:
-
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?
-
Active la instrumentación:
@awsapm, please enable Application Signals for lambda-audit-service and create a PR with the required changes. -
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:
-
El flujo de trabajo detecta la mención
@awsapmy activa la investigación. -
El agente de IA accede a los datos de telemetría de AWS en vivo a través de los servidores MCP configurados.
-
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).
-
-
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:
-
Documentación de CloudWatch Application Signals: más información sobre las características y capacidades de CloudWatch Application Signals
-
Documentación de Observabilidad de aplicaciones para la acción de AWS
: guías y tutoriales detallados