이전 포스팅에서 Python 코드를 Cloud Functions에 업로드하는 작업을 했습니다.
https://android-developer.tistory.com/106
이번에는 업로드한 해당 코드를 호출해서 사용하는 방법에 대해 알아보겠습니다.
Cloud Functions를 인증 호출로 실행하기
Cloud Functions에 넣은 코드를 실행할 때는 "인중 호출"이라는 방법으로 호출해서 사용할 수 있습니다.
왜 인증 호출이냐?
이전 포스팅에서 인증된 사용자만 호출할 수 있게 설정했기 때문입니다.
그렇기 때문에 다음과 같은 방법으로 Cloud Functions에 업로드한 함수를 실행할 수 있습니다.
https://cloud.google.com/functions/docs/securing/authenticating?hl=ko
1. 엑세스 가능한 인증된 사용자 선별하기
먼저 인증된 사용자를 누구로 할 것인가를 정할 수 있어야합니다.
(기본적으로 개발자는 프로젝트 관리자니 이런거 없어도 호출할 수 있지만....)
Cloud Functions에서는 IAM 승인을 통해 인증된 사용자를 정할 수 있습니다.
IAM 승인을 하는 방법에 대해서는 다른 포스팅에서 좀 더 자세히 설명하겠습니다.
이번 포스팅에서는 테스트 방법과 어떤 방법으로 인증된 사용자로써 함수를 호출할 수 있는지 알아보겠습니다.
2. 개발자 테스트로 인증 호출 해보기 = 커맨드로 함수 호출하기
먼저 개발자가 할 수 있는 인증 함수 호출 방법입니다.
개발자는 일반적으로 커맨드 라인을 통해 간단하게 호출하고 응답을 받을 수 있어야합니다.
그래서 다음과 같은 커맨드로 특정 함수를 간단히 호출할 수 있습니다.
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
https://FUNCTION_URL
- FUNCTION_URL: 함수 URL
FUNCTION_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 서비스로 권한을 부여 받은 사용자를 자동으로 추가하는 기능을 만들어서
해당 사용자들만 사용할 수 있게하는 것입니다.
이 부분은 다음 포스팅에서 알아보겠습니다.
Cloud Functions를 인증 호출로 실행하기 정리
- IAM에서 인증된 사용자 선별하기
- 개발자의 경우 curl 커맨드로 호출 가능
- OAuth2 토큰을 사용해서 인증 호출 함수하기
다음 포스팅에서는 Cloud Scheduler를 사용해서 정해진 시간에 해당 함수를 호출하는 방법에 대해 설명하겠습니다.
'파이썬(Python)' 카테고리의 다른 글
poetry으로 파이썬으로 패키지 버전 관리하기 - 기초 (0) | 2025.01.26 |
---|---|
Google Cloud Functions 사용하기 - Python 코드 배포하기 (0) | 2025.01.21 |
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글