以下は、AWS Lambda関数のコード例です。このコードは、AWS Cost Explorer APIを使って今月の利用料金を日ごとに取得し、Amazon SNSを使ってメールを送信するロジックを実装しています。Python言語を使用しています。
まず、Lambda関数に必要な権限を持つIAMロールを作成し、boto3
ライブラリを使用してAWSサービスにアクセスできるようにしてください。
以下のコードを lambda_function.py
として保存し、AWS Lambdaにデプロイします。
import os
import json
import boto3
from datetime import datetime, timedelta
def get_cost_and_usage(start_date, end_date):
client = boto3.client('ce')
response = client.get_cost_and_usage(
TimePeriod={
'Start': start_date,
'End': end_date
},
Granularity='DAILY',
Metrics=['UnblendedCost'],
GroupBy=[{
'Type': 'DIMENSION',
'Key': 'SERVICE'
}]
)
return response
def send_email_notification(cost_data):
sns = boto3.client('sns')
topic_arn = os.environ['SNS_TOPIC_ARN']
message = json.dumps(cost_data, indent=2, default=str)
subject = 'AWS Daily Cost Report'
sns.publish(
TopicArn=topic_arn,
Message=message,
Subject=subject
)
def lambda_handler(event, context):
end_date = datetime.now().date()
start_date = end_date.replace(day=1)
cost_data = get_cost_and_usage(start_date.isoformat(), end_date.isoformat())
send_email_notification(cost_data)
このコードでは、環境変数 SNS_TOPIC_ARN
にSNSトピックのARNを設定する必要があります。これは、AWS Lambda関数の設定で行います。
次に、Amazon SNSのトピックを作成し、Eメールサブスクリプションを追加して、メール通知を受信できるようにします。そして、SNSトピックのARNをLambda関数の環境変数 SNS_TOPIC_ARN
に設定してください。
これで、AWS Lambda関数がAWS Cost Explorer APIを使用して今月の利用料金を日ごとに取得し、Amazon SNSを使ってメールを送信するロジックが実装されました。Lambda関数を実行すると、指定されたEメールアドレスにAWSの利用料金のデイリーレポートが送信されます。