LoginSignup
0
0

More than 1 year has passed since last update.

aws コストメール送るもの

Last updated at Posted at 2023-04-24

以下は、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の利用料金のデイリーレポートが送信されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0