GitHub Actions를 클라우드 프로바이더로 사용하기
기준일: 2026-10-23
공식 기준: Use Claude Code GitHub Actions with cloud providers
개요
Claude Code GitHub Actions는 기본적으로 Claude API를 호출합니다. 추론을 내 클라우드 계정으로 라우팅하려면 Claude Code GitHub Action의 provider 입력을 설정하고, 클라우드가 워크플로의 OpenID Connect(OIDC) 토큰을 신뢰하도록 구성합니다. 워크플로가 그 토큰으로 인증하므로 저장소에 장수 클라우드 자격 증명을 저장하지 않습니다. 이 페이지는 GitHub Actions setup을 전제로 하며 워크플로 파일과 anthropics/claude-code-action 단계를 이미 안다고 가정하고 클라우드 프로바이더가 바꾸는 부분만 다룹니다.
핵심 개념
세 프로바이더를 지원하며 설정 단계는 클라우드 쪽 구성에서만 다릅니다. 조직이 이미 Claude 모델 접근을 가진 프로바이더를 쓰세요. anthropics/claude-code-action 단계의 with: 블록에 입력 하나로 지정합니다.
| 프로바이더 | 입력 |
|---|---|
| Amazon Bedrock | use_bedrock: "true" |
| Google Cloud Agent Platform | use_vertex: "true" |
| Microsoft Foundry | use_foundry: "true" |
사전 요구:
- Claude Code GitHub Action이 실행되는 저장소의 admin 접근(GitHub App 설치와 secret 추가)
- 클라우드 계정에서 아이덴티티 리소스를 만들 권한: AWS의 IAM 역할과 OIDC identity provider, Google Cloud의 Workload Identity Federation 리소스와 service account, Azure의 Microsoft Entra 애플리케이션
- 프로바이더의 Claude 모델 접근:
- Amazon Bedrock: Claude 모델 접근 허용. 이 페이지 예시의
us.모델 ID 같은 cross-region inference profile은 region group의 모든 리전에서 접근이 허용돼야 함 (Amazon Bedrock) - Google Cloud Agent Platform: Agent Platform API가 활성화된 프로젝트와 Claude 모델 접근 (Google Vertex AI)
- Microsoft Foundry: Claude 모델 배포가 있는 Foundry 리소스 (Microsoft Foundry)
- Amazon Bedrock: Claude 모델 접근 허용. 이 페이지 예시의
상세
1. GitHub 아이덴티티 선택
Claude Code GitHub Action은 GitHub 아이덴티티로 커밋을 push하고 코멘트를 게시합니다. quick setup은 이를 위해 공식 Claude GitHub App을 설치하지만 클라우드 프로바이더를 쓸 때는 직접 고릅니다.
- 공식 Claude GitHub App: 저장소에 설치(이미 설치돼 있으면 다음 단계로)
- Custom GitHub App: 공식 앱의 전체 권한 대신 Claude Code GitHub Action이 쓰는 세 권한만 갖는 앱을 직접 만들 때
- GitHub의 자동
GITHUB_TOKEN: 만들거나 설치할 앱이 없으나, GitHub는 이 토큰으로 만든 커밋에 대해 CI 워크플로를 트리거하지 않음
4단계 워크플로 예시는 custom app으로 인증하며, 다른 두 옵션에 맞게 바꿀 점도 4단계에 있습니다. custom app을 만들려면 이 통합이 웹훅을 쓰지 않으므로 webhooks를 비활성화하고 새 GitHub App을 등록합니다. 세 저장소 권한을 부여합니다.
- Contents: read and write
- Issues: read and write
- Pull requests: read and write
앱을 등록한 뒤 private key를 생성해 내려받은 .pem 파일을 보관하고, 앱 설정 페이지의 App ID를 메모하고, Claude Code GitHub Action이 실행되는 저장소에 앱을 설치합니다. key와 ID는 3단계에서 secret으로 추가합니다.
2. 클라우드 인증 구성
GitHub가 워크플로에 발급하는 OIDC 토큰을 클라우드가 신뢰하도록 구성해 워크플로 실행마다 단기 클라우드 자격 증명을 받게 합니다.
Amazon Bedrock: AWS OIDC identity provider 생성 가이드에 따라 AWS 계정에 신뢰 구성을 만듭니다.
- provider URL
https://token.actions.githubusercontent.com, audiencests.amazonaws.com인 GitHub OIDC identity provider 추가 - 그 provider를 web identity로 신뢰하는 IAM 역할을 만들고 IAM configuration의 범위가 제한된 invocation 정책(
bedrock:InvokeModel,bedrock:InvokeModelWithResponseStream,bedrock:ListInferenceProfiles,bedrock:GetInferenceProfile, 그리고 두aws-marketplace구독 action)을 부착 - 역할의 trust 정책을
repo:your-org/your-repo:*같은 subject 조건으로 내 저장소로 제한(GitHub OIDC hardening guide에 클레임 형식)
역할의 ARN을 메모하세요(다음 단계에서 secret으로 추가).
Google Cloud Agent Platform: Workload Identity Federation 문서에 따라 Google Cloud 프로젝트에 federation 리소스를 만듭니다.
- 세 API 활성화: IAM Credentials, Security Token Service(STS), Agent Platform API(서비스 이름
aiplatform.googleapis.com) - issuer가
https://token.actions.githubusercontent.com인 GitHub OIDC provider로 Workload Identity Pool을 만들고 pool을 내 저장소로 제한하는 attribute condition 추가 Vertex AI User역할(roles/aiplatform.user)만 가진 전용 service account를 만들고 pool이 이를 impersonate하도록 허용
provider의 전체 리소스 이름과 service account의 이메일 주소를 메모하세요(다음 단계에서 secret으로 추가).
Microsoft Foundry: GitHub Actions에서 Azure 인증 가이드에 따라 저장소용 federated credential이 있는 Microsoft Entra 애플리케이션을 만듭니다.
- Microsoft Entra 애플리케이션을 등록하고 GitHub가 내 저장소에 발급하는 토큰을 신뢰하는 federated identity credential 추가(user-assigned managed identity도 애플리케이션 대신 사용 가능, 둘 다 아래에서 메모할 client ID를 가짐)
- Foundry 리소스에 대해 애플리케이션에
Azure AI User역할 부여(Azure RBAC configuration에 더 좁은 custom 역할)
애플리케이션의 client ID, tenant ID, subscription ID를 메모하세요(다음 단계에서 secret으로 추가).
3. 저장소 secret 추가
Claude Code GitHub Action이 실행되는 저장소에 프로바이더용 secret과, 1단계에서 custom GitHub App을 만들었다면 앱 secret 두 개를 추가합니다(GitHub Actions secret 사용 가이드).
| Secret | 필요한 곳 | 값 |
|---|---|---|
AWS_ROLE_TO_ASSUME |
Amazon Bedrock | IAM 역할의 ARN |
GCP_WORKLOAD_IDENTITY_PROVIDER |
Google Cloud Agent Platform | provider의 전체 리소스 이름 |
GCP_SERVICE_ACCOUNT |
Google Cloud Agent Platform | service account의 이메일 주소 |
AZURE_CLIENT_ID |
Microsoft Foundry | Entra 애플리케이션의 client ID |
AZURE_TENANT_ID |
Microsoft Foundry | Microsoft Entra tenant ID |
AZURE_SUBSCRIPTION_ID |
Microsoft Foundry | Azure subscription ID |
APP_ID |
Custom GitHub App | GitHub App의 ID |
APP_PRIVATE_KEY |
Custom GitHub App | .pem private key 파일의 내용 |
4. 워크플로 파일 생성
프로바이더별 워크플로 파일을 .github/workflows/claude.yml 등으로 만듭니다. 각 예시는 @claude 멘션에 응답하고, custom app으로 GitHub에 인증하며, GitHub가 클라우드 프로바이더가 자격 증명으로 교환할 OIDC 토큰을 발급하는 데 필요한 id-token: write 권한을 포함합니다. 1단계에서 다른 GitHub 아이덴티티를 골랐다면 예시를 조정합니다.
- 공식 Claude GitHub App: Generate GitHub App token 단계와
github_token줄 삭제 - GitHub의 자동 토큰: 토큰 생성 단계를 삭제하고
github_token줄을github_token: ${{ secrets.GITHUB_TOKEN }}으로 변경
경고: 공개 저장소에서는 어느 사용자의 트리거 문구가 든 코멘트든 이 워크플로를 시작합니다. 자격 증명 단계가 Claude Code GitHub Action의 코멘트 작성자 write 접근 확인보다 먼저 실행되므로, 액션은 워크플로가 App 토큰을 생성하고 클라우드 프로바이더에 로그인해 감사 로그 항목을 남기고 Actions 분을 소모한 뒤에야 권한 없는 사용자를 거부합니다. 이런 실행을 피하려면 자격 증명 단계 전에 코멘트 작성자의 write 접근을 확인하는 단계를 추가하세요.
Amazon Bedrock: aws-region 값을 자기 값으로 바꾸세요. 자격 증명 단계가 이를 job의 나머지에 AWS_REGION으로 export합니다.
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'
팁: Bedrock 모델 ID에는
us.같은 cross-region inference profile 접두사가 들어갑니다. 모델 접근을 허용한 region group의 접두사를 쓰세요.
Google Cloud Agent Platform: CLOUD_ML_REGION 값을 자기 값으로 바꾸세요. 워크플로가 auth 단계의 출력에서 프로젝트 ID를 읽으므로 하드코딩할 필요가 없습니다.
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
Microsoft Foundry: your-resource-name을 Foundry 리소스 이름으로 바꾸세요. Claude Code가 이로 엔드포인트 URL을 만듭니다. azure/login 단계가 워크플로의 OIDC 토큰으로 로그인하고 Claude Code는 Azure default credential chain으로 자격 증명을 가져옵니다.
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
팁: Foundry 리소스의 Claude 배포와 일치하는 모델 ID를 쓰세요. 모델 구성과 버전 고정은 Microsoft Foundry를 보세요.
어느 프로바이더든 claude_args에 --max-turns를 추가해 실행 길이와 비용을 제한할 수 있습니다(Manage costs).
5. 설정 테스트
issue나 PR 코멘트에서 @claude를 멘션하고 저장소의 Actions 탭에서 실행을 확인합니다. Claude가 같은 issue 또는 PR의 코멘트로 응답합니다.
트러블슈팅
실패하는 실행은 보통 두 곳 중 하나에서 깨집니다.
- 인증 오류: 보통 OIDC 구성 오류입니다. 워크플로에
id-token: write권한이 있는지, 신뢰 구성의 저장소 조건이 내 저장소와 정확히 일치하는지, 워크플로의 secret 이름이 추가한 것과 일치하는지 확인하세요. - 트리거와 CI 문제: Claude Code GitHub Action이 Claude API를 호출할 때와 동일하게 동작합니다. 본 페이지의 troubleshooting 절과 Claude Code GitHub Action의 FAQ를 보세요.
함께 보기
- Claude Code GitHub Actions: 예시, 파라미터, 모범 사례
- Amazon Bedrock: Bedrock 모델 ID와 리전
- Google Vertex AI (Agent Platform): Agent Platform 모델 ID와 리전
- Microsoft Foundry: Foundry 모델·엔드포인트 구성