Usar Claude Code GitHub Actions con proveedores en la nube
Ejecute Claude Code GitHub Actions a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry en lugar de la API de Claude
Claude Code GitHub Actions llama a la API de Claude de forma predeterminada. Para enrutar la inferencia a través de su propia cuenta en la nube, establezca la entrada del proveedor de Claude Code GitHub Action y configure su nube para confiar en el token de OpenID Connect (OIDC) del flujo de trabajo. El flujo de trabajo se autentica con ese token, por lo que no almacena ninguna credencial en la nube de larga duración en su repositorio.
Esta página se basa en la configuración de GitHub Actions. Asume que ya conoce el archivo de flujo de trabajo y el paso anthropics/claude-code-action, y cubre solo lo que cambia un proveedor en la nube.
Elija su proveedor
Claude Code GitHub Action admite tres proveedores, y los pasos de configuración a continuación difieren solo en la configuración del lado de la nube. Use el que su organización ya tenga acceso a modelos de Claude. Indica a Claude Code GitHub Action qué proveedor usar con una entrada en el bloque with: del paso anthropics/claude-code-action:
- Amazon Bedrock:
use_bedrock: "true" - Google Cloud's Agent Platform:
use_vertex: "true" - Microsoft Foundry:
use_foundry: "true"
Los ejemplos de flujo de trabajo completo en Configurar la integración ya incluyen la entrada para cada proveedor.
Requisitos previos
Antes de comenzar, necesita:
- Acceso de administrador al repositorio donde se ejecuta Claude Code GitHub Action, para instalar una aplicación de GitHub y agregar secretos
- Permiso para crear recursos de identidad en su cuenta en la nube: roles de IAM y proveedores de identidad OIDC en AWS, recursos de Workload Identity Federation y cuentas de servicio en Google Cloud, o aplicaciones de Microsoft Entra en Azure
- Acceso a modelos de Claude en su proveedor:
- Amazon Bedrock: acceso otorgado a modelos de Claude. Los perfiles de inferencia entre regiones, como los ID de modelo
us.en los ejemplos de esta página, necesitan acceso otorgado en cada región de su grupo de regiones. Consulte Claude Code en Amazon Bedrock - Google Cloud's Agent Platform: un proyecto con la API de Agent Platform habilitada y acceso a modelos de Claude. Consulte Claude Code en Google Cloud's Agent Platform
- Microsoft Foundry: un recurso de Foundry con una implementación de modelo de Claude. Consulte Claude Code en Microsoft Foundry
- Amazon Bedrock: acceso otorgado a modelos de Claude. Los perfiles de inferencia entre regiones, como los ID de modelo
Configurar la integración
Más allá de los requisitos previos, crea una identidad de GitHub para Claude Code GitHub Action, la configuración de confianza del lado de la nube, los secretos del repositorio y el archivo de flujo de trabajo. Los pasos a continuación lo guían a través de cada uno.
Elija una identidad de GitHub
Claude Code GitHub Action envía confirmaciones y publica comentarios a través de una identidad de GitHub. La configuración rápida instala la aplicación oficial de Claude GitHub para esto. Con un proveedor en la nube, elige la identidad usted mismo:
- Aplicación oficial de Claude GitHub: instálela en el repositorio, o salte al siguiente paso si ya está instalada
- Aplicación personalizada de GitHub: cree su propia aplicación cuando desee solo los tres permisos que usa Claude Code GitHub Action en lugar del conjunto completo de la aplicación oficial
- Token automático
GITHUB_TOKENde GitHub: sin aplicación para crear o instalar, pero GitHub no activa sus flujos de trabajo de CI en confirmaciones realizadas con él
Los ejemplos de flujo de trabajo en el cuarto paso se autentican con una aplicación personalizada. Ese paso también dice qué cambiar para las otras dos opciones.
Para crear una aplicación personalizada, registre una nueva aplicación de GitHub con webhooks deshabilitados, ya que esta integración no los usa. Otórguele tres permisos de repositorio:
- Contents: lectura y escritura
- Issues: lectura y escritura
- Pull requests: lectura y escritura
Después de registrar la aplicación, genere una clave privada y mantenga el archivo .pem descargado, anote el ID de la aplicación desde la página de configuración de la aplicación, e instale la aplicación en el repositorio donde se ejecuta Claude Code GitHub Action. Agregue la clave y el ID como secretos en el tercer paso.
Configurar la autenticación en la nube
Configure su nube para confiar en el token OIDC que GitHub emite al flujo de trabajo, de modo que cada ejecución del flujo de trabajo obtenga credenciales en la nube de corta duración. Los puntos en cada pestaña resumen lo que debe crear, y cada pestaña vincula la guía del proveedor de nube para los pasos a nivel de consola.
Cree la configuración de confianza en su cuenta de AWS, siguiendo la guía de AWS para crear proveedores de identidad OIDC:
- Agregue un proveedor de identidad OIDC de GitHub con URL de proveedor
https://token.actions.githubusercontent.comy audienciasts.amazonaws.com - Cree un rol de IAM confiado por ese proveedor como una identidad web, y adjunte la política de invocación con alcance de Configuración de IAM, que otorga
bedrock:InvokeModel,bedrock:InvokeModelWithResponseStream,bedrock:ListInferenceProfilesybedrock:GetInferenceProfile, junto con dos acciones de suscripciónaws-marketplace - Limite la política de confianza del rol a su repositorio con una condición de asunto como
repo:your-org/your-repo:*. Consulte la guía de endurecimiento de OIDC de GitHub para el formato de reclamación
Anote el ARN del rol. Lo agregará como secreto en el siguiente paso.
Cree los recursos de federación en su proyecto de Google Cloud, siguiendo la documentación de Workload Identity Federation:
- Habilite tres API: IAM Credentials, Security Token Service (STS) y la API de Agent Platform, cuyo nombre de servicio es
aiplatform.googleapis.com - Cree un Workload Identity Pool con un proveedor OIDC de GitHub cuyo emisor sea
https://token.actions.githubusercontent.com, y agregue una condición de atributo que limite el grupo a su repositorio - Cree una cuenta de servicio dedicada con solo el rol
Vertex AI User, que esroles/aiplatform.user, y permita que el grupo la suplante
Anote el nombre de recurso completo del proveedor y la dirección de correo electrónico de la cuenta de servicio. Los agregará como secretos en el siguiente paso.
Cree una aplicación de Microsoft Entra con una credencial federada para su repositorio, siguiendo la guía de Microsoft para autenticarse desde GitHub Actions:
- Registre una aplicación de Microsoft Entra y agregue una credencial de identidad federada que confíe en los tokens que GitHub emite a su repositorio. Una identidad administrada asignada por el usuario funciona en lugar de una aplicación. Ambas tienen el ID de cliente que anota a continuación
- Asigne a la aplicación el rol
Azure AI Useren su recurso de Foundry. Consulte Configuración de RBAC de Azure para un rol personalizado más estrecho
Anote el ID de cliente de la aplicación, su ID de inquilino y su ID de suscripción. Los agregará como secretos en el siguiente paso.
Agregar secretos del repositorio
En el repositorio donde se ejecuta Claude Code GitHub Action, agregue los secretos para su proveedor, más los dos secretos de la aplicación si creó una aplicación personalizada de GitHub en el primer paso. Consulte la guía de GitHub sobre uso de secretos en GitHub Actions.
| Secreto | Necesario para | Valor |
|---|---|---|
AWS_ROLE_TO_ASSUME |
Amazon Bedrock | El ARN del rol de IAM |
GCP_WORKLOAD_IDENTITY_PROVIDER |
Google Cloud's Agent Platform | El nombre de recurso completo del proveedor |
GCP_SERVICE_ACCOUNT |
Google Cloud's Agent Platform | La dirección de correo electrónico de la cuenta de servicio |
AZURE_CLIENT_ID |
Microsoft Foundry | El ID de cliente de la aplicación de Entra |
AZURE_TENANT_ID |
Microsoft Foundry | Su ID de inquilino de Microsoft Entra |
AZURE_SUBSCRIPTION_ID |
Microsoft Foundry | Su ID de suscripción de Azure |
APP_ID |
Aplicación personalizada de GitHub | El ID de la aplicación de GitHub |
APP_PRIVATE_KEY |
Aplicación personalizada de GitHub | El contenido del archivo de clave privada .pem |
Crear el archivo de flujo de trabajo
Cree un archivo de flujo de trabajo para su proveedor, como .github/workflows/claude.yml. Cada ejemplo responde a menciones de @claude, se autentica en GitHub con una aplicación personalizada e incluye el permiso id-token: write, que GitHub requiere para emitir el token OIDC que su proveedor en la nube intercambia por credenciales.
Si eligió una identidad de GitHub diferente en el primer paso, ajuste el ejemplo:
- Aplicación oficial de Claude GitHub: elimine el paso Generar token de aplicación de GitHub y la línea
github_token - Token automático de GitHub: elimine el paso de generación de token y cambie la línea
github_tokenagithub_token: ${{ secrets.GITHUB_TOKEN }}
En repositorios públicos, un comentario que contenga la frase de activación de cualquier usuario inicia este flujo de trabajo. Los pasos de credenciales se ejecutan antes de que Claude Code GitHub Action verifique el acceso de escritura del comentarista, por lo que la acción rechaza a los usuarios no autorizados solo después de que el flujo de trabajo ha generado un token de aplicación e iniciado sesión en su proveedor en la nube, lo que deja entradas en el registro de auditoría y consume minutos de Actions. Para evitar esas ejecuciones, agregue un paso que verifique el acceso de escritura del comentarista antes de los pasos de credenciales.
Reemplace el valor aws-region con el suyo. El paso de credenciales lo exporta como AWS_REGION para el resto del trabajo.
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened]
jobs:
claude-pr:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Configure AWS Credentials (OIDC)
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: us-west-2
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_bedrock: "true"
claude_args: '--model us.anthropic.claude-sonnet-4-6'
Los ID de modelo de Bedrock incluyen un prefijo de perfil de inferencia entre regiones como us.. Use el prefijo para el grupo de regiones donde otorgó acceso al modelo.
Reemplace el valor CLOUD_ML_REGION con el suyo. No necesita codificar el ID del proyecto, porque el flujo de trabajo lo lee de la salida del paso auth.
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened]
jobs:
claude-pr:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Authenticate to Google Cloud
id: auth
uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_vertex: "true"
claude_args: '--model claude-sonnet-5'
env:
ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
CLOUD_ML_REGION: us-east5
Reemplace your-resource-name con el nombre de su recurso de Foundry. Claude Code construye la URL del punto de conexión a partir de él. El paso azure/login inicia sesión con el token OIDC del flujo de trabajo, y Claude Code recoge las credenciales a través de la cadena de credenciales predeterminada de Azure.
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened]
jobs:
claude-pr:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Authenticate to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_foundry: "true"
claude_args: '--model claude-sonnet-5'
env:
ANTHROPIC_FOUNDRY_RESOURCE: your-resource-name
Use un ID de modelo que coincida con una implementación de Claude en su recurso de Foundry. Consulte Claude Code en Microsoft Foundry para la configuración del modelo y el anclaje de versiones.
Con cualquier proveedor, puede limitar la duración de la ejecución y el costo agregando --max-turns a claude_args. Consulte Administrar costos.
Probar la configuración
Mencione @claude en un comentario de problema o solicitud de extracción, luego observe la ejecución en la pestaña Actions del repositorio. Claude responde en un comentario en el mismo problema o solicitud de extracción.
Solución de problemas
Una ejecución fallida generalmente se interrumpe en uno de dos lugares:
- Errores de autenticación: generalmente una configuración incorrecta de OIDC. Verifique que el flujo de trabajo incluya el permiso
id-token: write, que la condición del repositorio de la configuración de confianza coincida exactamente con su repositorio, y que los nombres de secreto en su flujo de trabajo coincidan con los que agregó - Problemas de activación e IC: se comportan igual que cuando Claude Code GitHub Action llama a la API de Claude. Consulte la sección de solución de problemas de la página principal y las Preguntas frecuentes de Claude Code GitHub Action
Qué sigue
- Claude Code GitHub Actions para ejemplos, parámetros y mejores prácticas
- Claude Code en Amazon Bedrock para ID de modelo de Bedrock y regiones
- Claude Code en Google Cloud's Agent Platform para ID de modelo de Agent Platform y regiones
- Claude Code en Microsoft Foundry para configuración de modelo y punto de conexión de Foundry