비용에 민감하고 예산을 기준으로 환경을 제어해야 할 경우, 예산 알림에 따른 비용 관리 응답을 자동화하기 위해 프로그래매틱 예산 알림을 사용할 수 있습니다.
예산 알림은 Pub/Sub 주제를 사용하여 클라우드용 엔터프라이즈 메시지 중심 미들웨어의 확장성, 유연성, 안정성을 활용하여 Cloud Billing 예산의 실시간 상태를 제공합니다.
이 문서에는 비용 관리 자동화를 위해 Cloud Run 함수에 예산 알림을 사용하는 방법에 관한 예시와 단계별 안내가 포함되어 있습니다.
예산 알림 설정
첫 번째 단계는 예산에 대한 Pub/Sub 주제를 사용 설정하는 것입니다. 자세한 내용은 프로그래매틱 예산 알림 관리를 참조하세요.
예산 알림을 사용 설정한 후에는 다음을 기록해 두세요.
- Pub/Sub 주제: 예산에 대해 구성된 알림 엔드포인트입니다.
- 예산 ID: 모든 알림에 포함된 예산의 고유 ID입니다. 알림 관리에서 예산의 예산 ID를 찾을 수 있습니다 이 ID는 Pub/Sub 주제를 이 예산에 연결을 선택한 후에 표시됩니다.
알림 수신 대기
다음 단계는 Pub/Sub 주제를 구독하여 알림을 수신 대기하는 것입니다. 구독자가 없는 경우, Pub/Sub이 게시된 메시지를 삭제하여, 개발자가 나중에 이를 검색할 수 없습니다.
주제 구독 방법에는 여러 가지가 있지만 이 예시에서는 Cloud Run 함수 트리거를 사용합니다.
Cloud Run 함수 만들기
새 Cloud Run 함수를 만들려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 Cloud Run 함수 페이지로 이동합니다.
함수 만들기를 클릭하고 해당 예산에 적합한 이름을 함수에 지정합니다.
트리거에서 Pub/Sub 주제를 선택합니다.
예산에 구성한 주제를 선택합니다.
함수를 실행하기 위한 소스 코드 및 종속성을 제공합니다.
실행할 함수가 올바른 함수 이름으로 설정되었는지 확인합니다.
Cloud Run 함수 설명
알림으로 수행하려는 작업을 Cloud Run 함수에 지정하기 위해서는 인라인 편집기를 사용하여 코드를 작성하거나 파일을 업로드할 수 있습니다. 코드가 수신할 알림에 대한 자세한 내용은 알림 형식을 참조하세요.
예를 들어 함수를 활용해 예산 알림으로 트리거될 때 수신된 Pub/Sub 알림, 속성, 데이터를 로깅할 수 있습니다. 자세한 내용은 Pub/Sub 트리거를 참조하세요.
Cloud Run 함수 이벤트 보기
Cloud Run 함수를 저장한 후에는 로그 보기를 클릭하여 로깅된 예산 알림을 볼 수 있습니다. 그러면 함수 호출 로그가 표시됩니다.
Cloud Run 함수 테스트
알림이 Pub/Sub으로 전송되고 구독자에게 메시지가 수신됩니다. 샘플 알림을 테스트하여 함수가 예상대로 작동하는지 확인하려면 이 객체를 메시지 본문으로 사용하여 Pub/Sub에 메시지를 게시합니다.
{ "budgetDisplayName": "name-of-budget", "alertThresholdExceeded": 1.0, "costAmount": 100.01, "costIntervalStart": "2019-01-01T00:00:00Z", "budgetAmount": 100.00, "budgetAmountType": "SPECIFIED_AMOUNT", "currencyCode": "USD" }
결제 계정 ID와 같은 메시지 속성을 추가할 수도 있습니다. 자세한 내용은 전체 알림 형식 문서를 참조하세요.
Slack에 알림 보내기
특히 예산이 중요하고 시간에 민감한 경우, 최신 클라우드 비용을 확인하기 위해 항상 이메일만 사용하는 것은 최상의 방법이 아닐 수 있습니다. 알림을 사용하면 예산 메시지를 다른 매체로 전달할 수 있습니다.
이 예에서는 예산 알림을 Slack으로 전달하는 방법을 설명합니다. 이렇게 하면 Cloud Billing이 예산 알림을 게시할 때마다 Cloud Run 함수가 봇을 사용해서 봇 작업공간의 Slack 채널에 메시지를 게시합니다.
Slack 채널 및 권한 설정
첫 번째 단계는 Slack API 호출에 사용되는 Slack 작업공간 및 봇 사용자 토큰을 만드는 것입니다. https://api.slack.com/apps에서 API 토큰을 관리할 수 있습니다. 자세한 내용은 Slack 사이트에서 봇 사용자를 참조하세요.
Cloud Run 함수 작성
Cloud Run 함수 만들기의 단계에 따라 새 함수를 만듭니다. 예산에 사용하도록 설정된 것과 동일한 Pub/Sub 주제로 트리거가 설정되었는지 확인합니다.
종속 항목을 추가합니다.
Node.js
다음을
package.json
에 복사합니다.Python
다음을
requirements.txt
에 복사합니다.Slack API를 사용하여 코드를 작성하거나 다음 예시를 사용하여 Slack 채팅 채널에 예산 알림을 게시하세요.
다음 Slack API postMessage 매개변수가 올바르게 설정되었는지 확인합니다.
- 봇 사용자 OAuth 액세스 토큰
- 채널 이름
예시 코드:
Node.js
Python
이제 Cloud Run 함수를 테스트하여 Slack에 표시된 메시지를 확인할 수 있습니다.
사용 중지를 위한 결제 상한 설정(사용 중지)
이 예에서는 Cloud Billing을 사용 중지하여 프로젝트의 비용 상한을 설정하고 사용을 중지하는 방법을 보여줍니다. 프로젝트에서 결제를 사용 중지하면 무료 등급 서비스를 포함한 프로젝트의 모든 Google Cloud 서비스가 종료됩니다.
결제를 사용 중지하는 이유
Google Cloud에 지출할 수 있는 금액이 제한적이어서 비용 상한을 설정할 수 있습니다. 이러한 경우는 학생, 연구원 또는 샌드박스 환경에서 작업하는 개발자에게서 일반적입니다. 이러한 경우 예산 한도에 도달할 때 지출을 멈추고 모든 Google Cloud 서비스 및 사용을 중지해야 할 수 있습니다.
이 예시에서는 Cloud Billing을 안전하게 사용 중지하기 위한 비프로덕션 프로젝트로 acme-backend-dev를 사용합니다.
이 예시 작업을 시작하기 전에 다음을 수행했는지 확인합니다.
Cloud Billing API를 사용 설정합니다. 프로젝트에 대해 Cloud Billing을 사용 중지하려면 Cloud Run 함수가 Cloud Billing API를 호출해야 합니다.
예산을 설정하여 프로젝트 비용을 모니터링하고 예산 알림을 사용 설정합니다.
Cloud Run 함수 작성
그런 다음 Cloud Billing API를 호출하도록 Cloud Run 함수를 구성해야 합니다. 그러면 Cloud Run 함수가 예시 프로젝트인 acme-backend-dev에 대해 Cloud Billing을 사용 중지할 수 있습니다.
Cloud Run 함수 만들기의 단계에 따라 새 함수를 만듭니다. 예산에 사용하도록 설정된 것과 동일한 Pub/Sub 주제로 트리거가 설정되었는지 확인합니다.
다음 종속 항목을 추가합니다.
Node.js
다음을
package.json
에 복사합니다.Python
다음을
requirements.txt
에 복사합니다.다음 코드를 Cloud Run 함수에 복사합니다.
실행할 함수를
stopBilling
(노드) 또는stop_billing
(Python)로 설정합니다.런타임에 따라
GOOGLE_CLOUD_PROJECT
환경 변수가 자동으로 설정될 수 있습니다. 자동으로 설정된 환경 변수 목록을 검토하고 Cloud Billing을 제한(사용 중지)하려는 프로젝트에GOOGLE_CLOUD_PROJECT
변수를 수동으로 설정해야 하는지 여부를 확인합니다.
Node.js
Python
서비스 계정 권한 구성
Cloud Run 함수는 자동으로 생성된 서비스 계정으로 실행됩니다. 서비스 계정이 결제를 사용 중지할 수 있도록 결제 관리자와 같은 올바른 권한을 부여해야 합니다.
올바른 서비스 계정을 식별하기 위해서는 Cloud Run 함수 세부정보를 확인합니다. 서비스 계정은 페이지 아래에 나열됩니다.
Google Cloud 콘솔의 결제 페이지에서 결제 관리자 권한을 관리할 수 있습니다.
서비스 계정에 결제 계정 관리자 권한을 부여하려면 서비스 계정 이름을 선택합니다.
Cloud Billing이 사용 중지되었는지 확인합니다.
예산이 알림을 전송하면 지정된 프로젝트에 더 이상 Cloud Billing 계정이 포함되지 않습니다.다. 함수를 테스트하려면 위의 테스트 메시지를 사용하여 샘플 메시지를 게시합니다. 프로젝트가 더 이상 Cloud Billing 계정에 표시되지 않으며, 동일한 프로젝트에 있는 경우 Cloud Run 함수를 포함하여 프로젝트의 리소스가 사용 중지됩니다.
Google Cloud 콘솔에서 프로젝트에 대해 Cloud Billing을 수동으로 다시 사용 설정할 수 있습니다.
선택적으로 사용량 제어
이전 예시에 설명된 대로 Cloud Billing 상한 설정(사용 중지)의 결과는 두 가지뿐이고 돌이킬 수 없습니다. 즉 프로젝트는 사용 설정되거나 사용 중지됩니다. 프로젝트가 사용 중지되면 모든 서비스가 중지되고 모든 리소스가 결과적으로 삭제됩니다.
보다 세밀한 대응이 필요한 경우에는 선택적으로 리소스를 제어할 수 있습니다. 예를 들어 일부 Compute Engine 리소스를 중지하고 Cloud Storage를 그대로 두려면 선택적으로 사용량을 제어할 수 있습니다. 이렇게 하면 환경을 완전히 사용 중지하지 않아도 시간당 비용을 줄일 수 있습니다.
원하는 대로 정책을 세밀하게 작성할 수 있습니다. 하지만 이 예시에서 프로젝트는 많은 수의 Compute Engine 가상 머신이 포함된 연구를 실행 중이며, Cloud Storage에 결과를 저장합니다. 이 Cloud Run 함수 예시는 모든 Compute Engine 인스턴스를 종료하지만, 예산이 초과된 후에도 저장된 결과에 영향을 주지 않습니다.
Cloud Run 함수 작성
Cloud Run 함수 만들기의 단계에 따라 새 함수를 만듭니다. 예산에 사용하도록 설정된 것과 동일한 Pub/Sub 주제로 트리거가 설정되었는지 확인합니다.
사용량 중지를 위한 결제 상한 설정 (사용 중지)에 설명된 종속 항목을 추가했는지 확인합니다.
다음 코드를 Cloud Run 함수에 복사합니다.
실행할 함수를
limitUse
(노드) 또는limit_use
(Python)로 설정합니다.런타임에 따라
GCP_PROJECT
환경 변수가 자동으로 설정될 수 있습니다. 자동으로 설정된 환경 변수 목록을 검토하고 가상 머신을 실행하는 프로젝트에GCP_PROJECT
변수를 수동으로 설정해야 하는지 여부를 확인합니다.ZONE 매개변수를 설정합니다. 이 샘플에 대해 인스턴스가 중지되는 영역입니다.
Node.js
Python
서비스 계정 권한 구성
- Cloud Run 함수는 자동으로 생성된 서비스 계정으로 실행됩니다. 사용량을 제어하려면 프로젝트에서 변경이 필요한 모든 서비스에 서비스 계정 권한을 부여해야 합니다.
- 올바른 서비스 계정을 식별하기 위해 Cloud Run 함수의 세부정보를 확인합니다. 서비스 계정은 페이지 아래에 나열됩니다.
- Google Cloud 콘솔에서 IAM 페이지로 이동하여 적절한 권한을 설정합니다.
IAM 페이지로 이동
인스턴스가 중지되었는지 확인
예산이 알림을 전송하면 Compute Engine 가상 머신이 중지됩니다.
함수를 테스트하려면 앞의 테스트 메시지를 사용하여 샘플 메시지를 게시합니다. 함수가 성공적으로 실행되었는지 확인하려면 Google Cloud 콘솔에서 Compute Engine 가상 머신을 확인합니다.