AWS を勉強する際にコスト面が気になったので作った。

開発環境

> go version
go version go1.16.3 linux/amd64

やること

  • AWS Cost Explorer で取得したサービスごとの料金を Slack に通知する

つくったもの

コード

biloba

https://github.com/tokizuoh/biloba

Slack

respChannel, respTimestamp, err := c.PostMessage(os.Getenv("SLACK_CHANNEL_ID"), slack.MsgOptionBlocks(
    &slack.SectionBlock{
        Type: slack.MBTSection,
        Text: &slack.TextBlockObject{
            Type: "mrkdwn",
            Text: "Notify AWS costs by AWS Cost Explorer.",
        },
    },
    slack.NewDividerBlock(),
    slack.NewSectionBlock(
        &slack.TextBlockObject{
            Type: "mrkdwn",
            Text: generateDateStr(costOutput.TimePeriod.Start, costOutput.TimePeriod.End),
        },
        generateTextBlockObjects(costOutput),
        slack.NewAccessory(
            slack.NewImageBlockElement(os.Getenv("AWS_COST_EXPLORER_IMG_PATH"), "aws_ce"),
        ),
    ),
))

slack-go/slack を使用。
Block Kit をラップしたものを使ったが、かなり直感的に書けた。

参考