토픽을 생성합니다. 토픽의 이름 내용에 대해서 입력합니다. 이름은 공백 빈칸 없이 입력해야 합니다.
Subscription 생성을 클릭하고 프로토콜에 Email 선택합니다. Email 주소는 메일을 수신하고자 하는 Email 주소를 입력합니다.
정상적으로 생성된 토픽은 OCID 값을 가집니다. 해당 OCID을 아래 소스상에서 입력해야 합니다.
아래 소스는 python으로 작성되었으며, usage_api_client.request_summarized_usages를 통해서 하루 동안 시간 단위 json을 리턴 받아서 computed_amount 키에 해당되는 값을 리턴 받아서 합을 구합니다. ons_client.publish_message는 토픽 서비스를 통해서 mail의 내용을 받아서 토픽에 전달해 줍니다.
아래 입력된 조건문은 사용자의 테넌시에 설정된 통화단위로 계산되게 됩니다.
# This is an automatically generated code sample.
# To make this code sample work in your Oracle Cloud tenancy,
# please replace the values for any parameters whose current values do not fit
# your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
# boolean, number, and enum parameters with values not fitting your use case).
from datetime import datetime
import oci
# Create a default config using DEFAULT profile in default location
# Refer to
# https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File
# for more info
config = oci.config.from_file("~/.oci/config","DEFAULT")
# Initialize service client with default config file
usage_api_client = oci.usage_api.UsageapiClient(config)
# 29일이면, 28일날 하루치 사용량이 560만원이 초과되었는지 확인하고 29일 오전에 안내메일 발송.
# Send the request to service, some parameters are not required, see API
# doc for more info
request_summarized_usages_response = usage_api_client.request_summarized_usages(
request_summarized_usages_details=oci.usage_api.models.RequestSummarizedUsagesDetails(
tenant_id="[테넌시 OCID]",
time_usage_started=datetime.strptime(
"2024-01-28",
"%Y-%m-%d"),
time_usage_ended=datetime.strptime(
"2024-01-29",
"%Y-%m-%d"),
opc_request_id="T1KHFJV54BBWJA6RO6XX<unique_ID>",
# page="EXAMPLE-page-Value",
limit=419)
# Get the data from response
print(request_summarized_usages_response.data)
# Get the data from response
data = request_summarized_usages_response.data
# Initialize the sum variable
total_compute_amount = 0
# Iterate over the data items and add the compute_amount values to the sum
for item in data.items:
# print(item.time_usage_started)
#print(item.computed_amount)
if(item.computed_amount != None):
total_compute_amount += item.computed_amount
# Initialize service client with default config file
ons_client = oci.ons.NotificationDataPlaneClient(config)
# Send the request to service, some parameters are not required, see API
# doc for more info
publish_message_response = ons_client.publish_message(
topic_id="[토픽 OCID]",
message_details=oci.ons.models.MessageDetails(
body="Daily consumption was exceed - 5,600,000 KRW",
title="OCI consumption warning"),
opc_request_id="7CQVBC31WCKCS1SCWMJ3<unique_ID>",
message_type="RAW_TEXT")
# Get the data from response
# Print the total compute amount
print("Total Compute Amount:", total_compute_amount , data.items[0].currency)
if(total_compute_amount > 5600000):
print(publish_message_response.data)
아래와 같이 에러가 발생하는 경우
python 관련 oci 모듈이 설치되지 않아 발생하는 에러입니다. 아래 두 가지 옵션을 통해서 패키지 설치 부탁 드립니다. ``
이 글은 개인적으로 얻은 지식과 경험을 작성한 글로 내용에 오류가 있을 수 있습니다. 또한 글 속의 의견은 개인적인 의견으로 특정 회사를 대변하지 않습니다.
Kisu Kim INFRASTRUCTURE
oci cost