CloudTrailの管理イベント証跡は 2つ目以降のS3コピーが有料 です。
証跡
Amazon S3 に配信された管理イベント: 配信される管理イベント 100,000 あたり 2.00 USD (初回無料コピー後、詳細は AWS 無料利用枠を参照)
– 引用: AWS CloudTrail の料金 | AWS
いつのまにか同一リージョンに複数証跡が出来てしまっていたら、 思わぬコストになる可能性があります。
今回は 「2つ目以降のS3コピー」を検知する仕組みを AWS Budgets を使って作成してみます。
前提: コストの使用タイプについて
管理イベント周りの使用タイプは大きく2種類あります。 FreeEventsRecorded
と PaidEventsRecorded
です
FreeEventsRecorded
: 初回 S3コピー分PaidEventsRecorded
: 2つ目以降の S3コピー分
▲ FreeEventsRecorded
サンプル
▲ PaidEventsRecorded
サンプル
PaidEventsRecorded
を検知する Budgets 予算アラームを これから作成していきます。
作ってみる
今回は AWS CLIから作成します 1 。
以下、スクリプトを実行します。
##### 入力(適宜変更してください)
# 予算名
budget_name="CloudTrail_Detect_DuplicatedEventsRecord"
# 通知先Eメールアドレス
mail_to_notify="cost@example.com"
##### CreateBudget API パラメータの準備
budget_config=$(cat <<EOF
{
"BudgetName": "${budget_name}",
"BudgetLimit": {
"Amount": "1.0",
"Unit": "Events"
},
"CostFilters": {
"UsageType": [
"USW2-PaidEventsRecorded",
"USW1-PaidEventsRecorded",
"USE1-PaidEventsRecorded",
"USE2-PaidEventsRecorded",
"SAE1-PaidEventsRecorded",
"EUW3-PaidEventsRecorded",
"EUW2-PaidEventsRecorded",
"EUN1-PaidEventsRecorded",
"EUC1-PaidEventsRecorded",
"EU-PaidEventsRecorded",
"CAN1-PaidEventsRecorded",
"APS3-PaidEventsRecorded",
"APS2-PaidEventsRecorded",
"APS1-PaidEventsRecorded",
"APN3-PaidEventsRecorded",
"APN2-PaidEventsRecorded",
"APN1-PaidEventsRecorded"
]
},
"TimeUnit": "DAILY",
"BudgetType": "USAGE"
}
EOF
)
notification_config=$(cat <<EOF
[
{
"Notification": {
"NotificationType": "ACTUAL",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 100.0,
"ThresholdType": "PERCENTAGE",
"NotificationState": "ALARM"
},
"Subscribers": [
{
"SubscriptionType": "EMAIL",
"Address": "${mail_to_notify}"
}
]
}
]
EOF
)
account_id=$(aws sts get-caller-identity --query Account --output text)
##### 予算作成
aws budgets create-budget \
--account-id "${account_id}" \
--budget "${budget_config}" \
--notifications-with-subscribers "${notification_config}"
予算(+ アラート)が作成されました。
アラートを飛ばしてみる
試しに、一時的に「2つ目の証跡」を作成してみます。
次の日には以下のようなメールが届きました。
メールを受けたあとの対応も計画しておきましょう。 明細を確認して、コストが発生しているアカウントとリージョンを特定します。 例えば APN1-PaidEventsRecorded
が発生しているAWSアカウントがあった際は、 東京リージョンにて管理イベント証跡の重複が発生しています。
おわりに
以上、CloudTrailの冗長コスト(の可能性がある事象)を検知する仕組みの紹介でした。
他にも「出る想定のないコスト」は顧客環境次第で、有ると思います。 そういったものは今回紹介したような予算アラートで検知ガードレールを作成しておくと良さそうです。
以上、参考になれば幸いです。
参考
- AWS::Budgets::Budget - AWS CloudFormation
- CloudFormationでAWS Budgets の予算超過アラートを Slack へ通知してみた | DevelopersIO
- マネジメントコンソールからの作成の場合、「使用タイプ」選択部分で PaidEventsRecorded が出てこない可能性があります (おそらく過去に PaidEventsRecorded コストが発生していない環境の場合) ↩