파이썬(Python)

Google Cloud Functions 사용하기 - 인증 호출으로 코드 실행하기

기계공학 주인장 2025. 1. 23. 08:14
반응형

이전 포스팅에서 Python 코드를 Cloud Functions에 업로드하는 작업을 했습니다.

 

https://android-developer.tistory.com/106

 

Google Cloud Functions 사용하기 - Python 코드 배포하기

이전 포스팅에서 Cloud Functions를 사용하기 위한 셋업을 진행했습니다. https://android-developer.tistory.com/105 Google Cloud Functions 사용하기 - 기초 Cloud CLI 셋업파이썬으로 정기적으로 스크립트를 실행하

android-developer.tistory.com

 

이번에는 업로드한 해당 코드를 호출해서 사용하는 방법에 대해 알아보겠습니다.

 


Cloud Functions를 인증 호출로 실행하기

Cloud Functions에 넣은 코드를 실행할 때는 "인중 호출"이라는 방법으로 호출해서 사용할 수 있습니다.

 

왜 인증 호출이냐?

 

이전 포스팅에서 인증된 사용자만 호출할 수 있게 설정했기 때문입니다.

 

 

그렇기 때문에 다음과 같은 방법으로 Cloud Functions에 업로드한 함수를 실행할 수 있습니다.

 

https://cloud.google.com/functions/docs/securing/authenticating?hl=ko

 

호출 인증  |  Cloud Run functions Documentation  |  Google Cloud

Cloud Functions 이름이 Cloud Run Functions로 변경되었습니다. 자세한 내용은 Cloud Run Functions 블로그 게시물을 참조하세요. 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 컬렉션을

cloud.google.com


1. 엑세스 가능한 인증된 사용자 선별하기

 

먼저 인증된 사용자를 누구로 할 것인가를 정할 수 있어야합니다.

 

(기본적으로 개발자는 프로젝트 관리자니 이런거 없어도 호출할 수 있지만....)

 

Cloud Functions에서는 IAM 승인을 통해 인증된 사용자를 정할 수 있습니다.

 

https://cloud.google.com/functions/docs/securing/managing-access-iam?hl=ko#adding_principals_and_granting_roles

 

IAM으로 액세스 승인  |  Cloud Run functions Documentation  |  Google Cloud

Cloud Functions 이름이 Cloud Run Functions로 변경되었습니다. 자세한 내용은 Cloud Run Functions 블로그 게시물을 참조하세요. 의견 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저

cloud.google.com

 

IAM 승인을 하는 방법에 대해서는 다른 포스팅에서 좀 더 자세히 설명하겠습니다.

 

이번 포스팅에서는 테스트 방법과 어떤 방법으로 인증된 사용자로써 함수를 호출할 수 있는지 알아보겠습니다.

 


 

2. 개발자 테스트로 인증 호출 해보기 = 커맨드로 함수 호출하기

 

먼저 개발자가 할 수 있는 인증 함수 호출 방법입니다.

 

개발자는 일반적으로 커맨드 라인을 통해 간단하게 호출하고 응답을 받을 수 있어야합니다.

 

https://cloud.google.com/functions/docs/securing/authenticating?hl=ko#example_1_authenticate_developer_testing

 

호출 인증  |  Cloud Run functions Documentation  |  Google Cloud

Cloud Functions 이름이 Cloud Run Functions로 변경되었습니다. 자세한 내용은 Cloud Run Functions 블로그 게시물을 참조하세요. 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 컬렉션을

cloud.google.com

 

그래서  다음과 같은 커맨드로 특정 함수를 간단히 호출할 수 있습니다.

 

curl  -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  https://FUNCTION_URL

 

  • FUNCTION_URL: 함수 URL

FUNCTION_URL은 그냥 콘솔에서 해당 함수에 들어간 뒤 얻을 수 있는 URL입니다.

 

콘솔에서 확인할 수 있는 URL

 

위 커맨들를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

 

커맨드로 인증 호출 결과


3. google 계정의 OAuth2 토큰을 가져와서 인증 호출 사용하기

 

다음과 같은 방법을 통해 구글 계정의 OAuth2 토큰을 가져올 수 있습니다.

 

(하지만, 이 방법으로는 구글 계정 중에서 특정할 수 없습니다. 그렇기 때문에 구글에서는 추천하지 않는 방식입니다.)

 

import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInAccount
import com.google.android.gms.tasks.Task

fun getIdToken(account: GoogleSignInAccount, clientId: String): String? {
    return account.getIdToken(clientId)
}

// GoogleSignInAccount 가져오기 예시
val account: GoogleSignInAccount? = GoogleSignIn.getLastSignedInAccount(context)
val token = account?.let { getIdToken(it, "YOUR_CLIENT_ID") }


위에서 얻은 토큰과 fucntions URL을 사용하여 다음과 같은 방법으로 호출할 수 있습니다.

 

val functionUrl = "https://asia-northeast1-salenavi-448312.cloudfunctions.net/python-http-function"
val token = "YOUR_ID_TOKEN"  // 인증 토큰

val cloudFunctionCaller = CloudFunctionCaller()
val response = cloudFunctionCaller.callFunction(functionUrl, token)

println("Response: $response")

 

더 나은 방법(=구글 공식 권장 방법)은 IAM 서비스로 권한을 부여 받은 사용자를 자동으로 추가하는 기능을 만들어서

 

해당 사용자들만 사용할 수 있게하는 것입니다.

 

https://cloud.google.com/functions/docs/securing/managing-access-iam?hl=ko#adding_principals_and_granting_roles

 

IAM으로 액세스 승인  |  Cloud Run functions Documentation  |  Google Cloud

Cloud Functions 이름이 Cloud Run Functions로 변경되었습니다. 자세한 내용은 Cloud Run Functions 블로그 게시물을 참조하세요. 의견 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저

cloud.google.com

 

 

이 부분은 다음 포스팅에서 알아보겠습니다.


Cloud Functions를 인증 호출로 실행하기 정리

  • IAM에서 인증된 사용자 선별하기
  • 개발자의 경우 curl 커맨드로 호출 가능
  • OAuth2 토큰을 사용해서 인증 호출 함수하기

 

다음 포스팅에서는 Cloud Scheduler를 사용해서 정해진 시간에 해당 함수를 호출하는 방법에 대해 설명하겠습니다. 

반응형