728x90
반응형
Firebase Functions 배포 과정에서 Cloud Build 권한 이슈가 발생하여 서비스 계정에 권한을 추가했다.
firebase deploy --only functions
에러 메시지
Build failed with status: FAILURE.
Could not build the function due to a missing permission on the build service account.
더보기
% firebase deploy --only functions
✔ functions: 사전 배포 스크립트 실행 완료.
i functions: 배포를 위한 코드베이스 기본 준비 중
i functions: 필수 API cloudfunctions.googleapis.com 활성화 확인 중...
i functions: 필수 API cloudbuild.googleapis.com 활성화 확인 중...
i artifactregistry: 필수 API artifactregistry.googleapis.com 활성화 확인 중...
⚠ functions: 필수 API cloudbuild.googleapis.com 누락. 지금 활성화 중...
⚠ artifactregistry: 필수 API artifactregistry.googleapis.com 누락. 지금 활성화 중...
i functions: 배포할 항목을 결정하기 위해 코드베이스 기본 소스 코드 로드 및 분석 중
8394 포트에서 서비스 중
i extensions: 필수 API firebaseextensions.googleapis.com 활성화 확인 중...
⚠ extensions: 필수 API firebaseextensions.googleapis.com 누락. 지금 활성화 중...
i functions: 업로드를 위해 functions 디렉토리를 준비 중...
i functions: /Users/upself/Downloads/UPSELF/Project/tistory/functions (99.74KB)를 업로드용으로 패키징했습니다.
i functions: 필수 API run.googleapis.com이 활성화되었는지 확인 중...
i functions: 필수 API eventarc.googleapis.com이 활성화되었는지 확인 중...
i functions: 필수 API pubsub.googleapis.com이 활성화되었는지 확인 중...
i functions: 필수 API storage.googleapis.com이 활성화되었는지 확인 중...
✔ functions: 필수 API storage.googleapis.com이 활성화되었습니다.
⚠ functions: 필수 API run.googleapis.com이 누락되었습니다. 지금 활성화 중...
✔ functions: 필수 API pubsub.googleapis.com이 활성화되었습니다.
⚠ functions: 필수 API eventarc.googleapis.com이 누락되었습니다. 지금 활성화 중...
i functions: pubsub.googleapis.com에 대한 서비스 ID 생성 중...
i functions: eventarc.googleapis.com에 대한 서비스 ID 생성 중...
✔ functions: functions 소스가 성공적으로 업로드되었습니다.
i functions: Node.js 24(2세대) 함수 helloWorld(us-central1) 생성 중...
빌드가 실패했습니다. 상태: 실패. 빌드 서비스 계정에 대한 권한이 부족하여 함수를 빌드할 수 없습니다. 해당 권한을 명시적으로 취소하지 않은 경우 조직 정책 변경으로 인해 발생했을 수 있습니다. 자세한 내용 및 해결 방법은 다음 문서를 참조하세요. https://cloud.google.com/functions/docs/troubleshooting#build-service-account
로그는 https://console.cloud.google.com/cloud-build/builds;region=us-central1/dlkvslkvnlsdknflek,dmvnosdlkfn?project=12345678910 에서 확인할 수 있습니다.
⚠ 함수: 배포에 실패했습니다. 삭제는 건너뜁니다.
함수 배포 중 다음 함수에서 오류가 발생했습니다.
helloWorld(us-central1)
⚠ 함수: us-central1 위치의 저장소에 대한 정리 정책이 감지되지 않았습니다. 컨테이너 이미지가 누적됨에 따라 월별 요금이 소액 청구될 수 있습니다.
오류: 함수가 성공적으로 배포되었지만 us-central1 위치에 정리 정책을 설정할 수 없습니다. 정리 정책을 자동으로 설정하려면 `--force` 옵션을 전달하거나, 수동으로 정리 정책을 설정하려면 `firebase functions:artifacts:setpolicy`를 실행하세요.
원인
Cloud Build가 Function 이미지를 빌드하는 과정에서 Build Service Account 권한이 부족하여 배포에 실패한 경우이다.
특히 Firebase Functions 2nd Gen은 내부적으로 아래 서비스를 사용한다.
권한 부여
Cloud Build 빌드 권한을 기본 Compute Engine 서비스 계정에 부여한다.
gcloud projects add-iam-policy-binding upself-tistory \
--member="serviceAccount:123456789012-compute@developer.gserviceaccount.com" \
--role="roles/cloudbuild.builds.builder"
| 항목 | 값 | |
| 프로젝트 ID | upself-tistory | 프로젝트마다 다름 |
| 프로젝트 번호 | 12345678910 | 프로젝트마다 다름 |
| 서비스 계정 | 12345678910-compute@developer.gserviceaccount.com | 프로젝트마다 다름 |
| IAM Role | roles/cloudbuild.builds.builder | 고정 |
정상 적용 시 아래 메시지가 출력된다.
Updated IAM policy for project [upself-tistory].
더보기
upself@cloudshell:~ (upself-tistory)$ gcloud projects add-iam-policy-binding upself-tistory \
--member="serviceAccount:12345678910-compute@developer.gserviceaccount.com" \
--role="roles/cloudbuild.builds.builder"
Updated IAM policy for project [upself-tistory].
bindings:
- members:
- serviceAccount:service-12345678910@gcp-sa-artifactregistry.iam.gserviceaccount.com
role: roles/artifactregistry.serviceAgent
- members:
- serviceAccount:12345678910-compute@developer.gserviceaccount.com
- serviceAccount:12345678910@cloudbuild.gserviceaccount.com
role: roles/cloudbuild.builds.builder
- members:
- serviceAccount:service-12345678910@gcp-sa-cloudbuild.iam.gserviceaccount.com
role: roles/cloudbuild.serviceAgent
- members:
- serviceAccount:firebase-adminsdk-fbsvc@upself-tistory.iam.gserviceaccount.com
role: roles/cloudfunctions.admin
- members:
- serviceAccount:service-12345678910@gcf-admin-robot.iam.gserviceaccount.com
role: roles/cloudfunctions.serviceAgent
- members:
- serviceAccount:service-12345678910@containerregistry.iam.gserviceaccount.com
role: roles/containerregistry.ServiceAgent
- members:
- serviceAccount:12345678910-compute@developer.gserviceaccount.com
- serviceAccount:12345678910@cloudservices.gserviceaccount.com
- serviceAccount:upself-tistory@appspot.gserviceaccount.com
role: roles/editor
- members:
- serviceAccount:service-12345678910@gcp-sa-firebase.iam.gserviceaccount.com
role: roles/firebase.managementServiceAgent
- members:
- serviceAccount:firebase-adminsdk-fbsvc@upself-tistory.iam.gserviceaccount.com
role: roles/firebase.sdkAdminServiceAgent
- members:
- serviceAccount:service-12345678910@gcp-sa-firebasemods.iam.gserviceaccount.com
role: roles/firebasemods.serviceAgent
- members:
- serviceAccount:firebase-adminsdk-fbsvc@upself-tistory.iam.gserviceaccount.com
role: roles/iam.serviceAccountTokenCreator
- members:
- user:upself1@tistory.com
- user:upself2@tistory.com
- user:upself3@tistory.com
- user:upself4@tistory.com
role: roles/owner
- members:
- serviceAccount:service-12345678910@serverless-robot-prod.iam.gserviceaccount.com
role: roles/run.serviceAgent
etag: BwZUW9TaClw=
version: 1
동작 확인
Cloud Run 엔드포인트를 호출하여 정상 동작 여부를 확인한다.
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" \
https://helloworld-mmsa2gobxq-uc.a.run.app
응답 결과
Functions 정상 작동!

의미
- IAM 권한 추가 완료
- Cloud Build 빌드 가능
- Cloud Run 인증 성공
- Firebase Function 정상 배포 및 실행 확인
한 줄 정리
Cloud Build 권한을 서비스 계정에 부여한 뒤 Cloud Run 엔드포인트 호출까지 성공하면 Firebase Functions 배포가 정상적으로 완료된 것이다.
반응형
'운영체제 및 플랫폼 > 클라우드 플랫폼 (Cloud Platforms)' 카테고리의 다른 글
| [Firebase] SMS 인증 발송 실패 (auth/operation-not-allowed) 해결 (0) | 2026.06.26 |
|---|---|
| [카페24] SSL 인증서 갱신 후 만료일이 변경되지 않을 때 (0) | 2026.06.25 |
| [Firebase] npm cache EACCES 오류 해결 (macOS) (0) | 2026.06.20 |
| [Firebase] Failed to authenticate, have you run firebase login? 해결 (0) | 2026.06.19 |
| [Firebase] npm EACCES: permission denied 오류 해결 (macOS) (0) | 2026.06.17 |