Open5

AWS Cost

dehio3dehio3

DataExport

https://docs.aws.amazon.com/ja_jp/cur/latest/userguide/what-is-data-exports.html

レガシー

https://docs.aws.amazon.com/ja_jp/cur/latest/userguide/what-is-cur.html

レポートの内容

https://docs.aws.amazon.com/ja_jp/cur/latest/userguide/table-dictionary-cur2.html

参考

https://repost.aws/ja/knowledge-center/athena-cost-and-usage-reports-billing-data

SELECT
    line_item_usage_start_date, -- 開始日時(UTC)
	line_item_usage_end_date, -- 終了日時(UTC)
	line_item_usage_account_id, -- AWSアカウントID
	line_item_line_item_type, -- 請求の種類
	line_item_product_code, -- 製品のコード
	line_item_resource_id, -- リソースID
	line_item_operation, -- 明細項目の対象となる特定の AWS オペレーション
	line_item_usage_type, -- 明細項目の使用状況の詳細
	line_item_usage_amount, -- 指定した期間に発生した使用量
	line_item_unblended_rate, -- サービスの料金レート
	line_item_unblended_cost, -- 利用料金
	pricing_unit, -- 料金単位
	line_item_line_item_description -- 明細項目タイプの説明
FROM "athenacurcfn_cost_report"."cost_report"
where year = '2025'
	AND month = '2'
	AND line_item_usage_type = 'APN1-Requests-Tier3'
	order by line_item_usage_amount desc
	limit 10
dehio3dehio3

コスト異常検知

https://docs.aws.amazon.com/ja_jp/cost-management/latest/userguide/manage-ad.html

受信内容

https://docs.aws.amazon.com/ja_jp/cost-management/latest/userguide/getting-started-ad.html#detector-history-values

SNSメッセージサンプル
{
    "accountId": "123456789012",
    "anomalyDetailsLink": "https://console.aws.amazon.com/cost-management/home#/anomaly-detection/monitors/abcdef12-1234-4ea0-84cc-918a97d736ef/anomalies/12345678-abcd-ef12-3456-987654321a12",
    "anomalyEndDate": "2021-05-25T00:00:00Z",
    "anomalyId": "12345678-abcd-ef12-3456-987654321a12",
    "anomalyScore": {
        "currentScore": 0.47,
        "maxScore": 0.47
    },
    "anomalyStartDate": "2021-05-25T00:00:00Z",
    "dimensionalValue": "ServiceName",
    "impact": {
        "maxImpact": 151,
        "totalActualSpend": 1301,
        "totalExpectedSpend": 300,
        "totalImpact": 1001,
        "totalImpactPercentage": 333.67
    },
    "monitorArn": "arn:aws:ce::123456789012:anomalymonitor/abcdef12-1234-4ea0-84cc-918a97d736ef",
    "rootCauses": [
        {
            "linkedAccount": "AnomalousLinkedAccount",
            "linkedAccountName": "AnomalousLinkedAccountName",    
            "region": "AnomalousRegionName",
            "service": "AnomalousServiceName",
            "usageType": "AnomalousUsageType",
            "impact": {
                "contribution": 601,
            }
        }                
    ],
    "subscriptionId": "874c100c-59a6-4abb-a10a-4682cc3f2d69",
    "subscriptionName": "alertSubscription"
}
項目 説明
accountId 異常検知対象の AWS アカウントの ID。
anomalyDetailsLink AWS マネジメントコンソール上で異常の詳細情報を確認するためのリンク。
anomalyEndDate 異常検知期間の終了日時(ISO 8601 形式)。
anomalyId 異常イベントを一意に識別するための ID。
anomalyScore 異常のスコアを示すオブジェクト。
currentScore: 現在の異常スコア(0~1 の範囲)。
maxScore: 異常期間中の最大スコア。
anomalyStartDate 異常検知期間の開始日時(ISO 8601 形式)。
dimensionalValue 影響を受けた次元(例:サービス名など、どの利用項目に関連するかを示す)。
impact 異常の影響度合いを示すオブジェクト。
maxImpact: 単一要因での最大影響度。
totalActualSpend: 異常期間中に実際発生した総コスト。
totalExpectedSpend: 異常期間中の予測コスト。
totalImpact: 実際と予測の差分(超過分)。
totalImpactPercentage: 予測コストに対する差分の割合(%)。
monitorArn 異常検知を実施したモニターの Amazon リソースネーム (ARN)。
rootCauses 異常の根本原因候補のリスト。各要素は以下の情報を含む。
linkedAccount: リンクドアカウントの識別子。
linkedAccountName: リンクドアカウントの名称。
region: 影響が見込まれるリージョン。
service: 異常原因として疑われるサービス名。
usageType: 異常に関連する利用タイプ。
impact.contribution: この原因候補の寄与度(金額など)。
subscriptionId 通知に関連付けられているサブスクリプションの ID。
subscriptionName サブスクリプションの名称。

サンプル

https://github.com/mashiike/aws-cost-anomaly-slack-reactor?tab=readme-ov-file

dehio3dehio3

Amazon S3操作とUsage Typeの説明

このドキュメントでは、Amazon S3のline_item_operationとline_item_usage_typeの組み合わせについて説明します。これらはAWS Cost and Usage Report (CUR)で表示される項目です。

レプリケーション関連の操作

ソースバケット側の操作

Operation Usage Type 説明
ReadBucketReplication DataTransfer-Out-Bytes レプリケーション設定を読み取る際のデータ転送
ReadBucketReplication [リージョン]-Requests-Tier2 レプリケーション設定の読み取りリクエスト
ReadBucketReplication [リージョン1]-[リージョン2]-AWS-Out-Bytes リージョン間でのレプリケーションデータ転送
WriteBucketReplication APN1-DataTransfer-In-Bytes レプリケーション設定の書き込み時のデータ転送
WriteBucketReplication APN1-Requests-Tier1 レプリケーション設定の書き込みリクエスト
BatchReplication APN1-BatchOperations-Manifest バッチレプリケーション操作のマニフェスト処理

宛先バケット側の操作

Operation Usage Type 説明
PutObjectForRepl APN1-Requests-Tier1 レプリケーションによるオブジェクト書き込み
PutObjectForRepl APN1-Requests-INT-Tier1 Intelligent-Tieringストレージクラスへのレプリケーション
PutObjectForRepl APN1-Requests-GDA-Tier1 Glacier Deep Archiveストレージクラスへのレプリケーション
CompleteMultipartUploadForRepl APN1-Requests-Tier1 レプリケーションによるマルチパートアップロードの完了
InitiateMultipartUploadForRepl APN1-Requests-Tier1 レプリケーションによるマルチパートアップロードの開始
UploadPartForRepl APN1-Requests-Tier1 レプリケーションによるマルチパートアップロードのパート処理

標準的なS3操作

オブジェクト操作

Operation Usage Type 説明
GetObject [リージョン]-DataTransfer-Out-Bytes オブジェクトの取得時のデータ転送
GetObject [リージョン]-Requests-Tier2 オブジェクト取得リクエスト (読み取り)
GetObject [リージョン1]-[リージョン2]-AWS-Out-Bytes リージョン間でのオブジェクト取得時のデータ転送
GetObject APN1-Retrieval-SIA Standard-IAからのデータ取得
PutObject [リージョン]-DataTransfer-In-Bytes オブジェクトのアップロード時のデータ転送
PutObject [リージョン]-Requests-Tier1 オブジェクト書き込みリクエスト
DeleteObject DataTransfer-Out-Bytes オブジェクト削除時のデータ転送
DeleteObject APN1-EarlyDelete-SIA 最低保存期間前のStandard-IAオブジェクト削除
HeadObject [リージョン]-Requests-Tier2 オブジェクトメタデータの取得リクエスト
CopyObject [リージョン]-Requests-Tier1 オブジェクトコピーリクエスト

マルチパートアップロード操作

Operation Usage Type 説明
InitiateMultipartUpload [リージョン]-Requests-Tier1 マルチパートアップロードの開始
UploadPart [リージョン]-DataTransfer-In-Bytes マルチパートアップロードのパート送信
UploadPart [リージョン]-Requests-Tier1 マルチパートアップロードのパートリクエスト
CompleteMultipartUpload [リージョン]-Requests-Tier1 マルチパートアップロードの完了
ListMultipartUploads [リージョン]-Requests-Tier1 マルチパートアップロードの一覧取得
ListParts [リージョン]-Requests-Tier1 マルチパートアップロードのパート一覧取得

バケット操作

Operation Usage Type 説明
CreateBucket Requests-Tier1 バケット作成リクエスト
DeleteBucket APN1-DataTransfer-Out-Bytes バケット削除時のデータ転送
HeadBucket [リージョン]-Requests-Tier2 バケットメタデータの取得リクエスト
ListBucket [リージョン]-Requests-Tier1 バケット内のオブジェクト一覧取得
ListBucketVersions [リージョン]-Requests-Tier1 バケット内のオブジェクトバージョン一覧取得
ListAllMyBuckets Requests-Tier1 全バケット一覧取得

バケット設定操作

Operation Usage Type 説明
ReadBucketLifecycle [リージョン]-Requests-Tier2 ライフサイクル設定の読み取り
WriteBucketLifecycle [リージョン]-Requests-Tier1 ライフサイクル設定の書き込み
ReadBucketPolicy [リージョン]-Requests-Tier2 バケットポリシーの読み取り
WriteBucketPolicy [リージョン]-Requests-Tier1 バケットポリシーの書き込み
ReadBucketCors [リージョン]-Requests-Tier2 CORS設定の読み取り
WriteBucketCors [リージョン]-Requests-Tier1 CORS設定の書き込み
ReadACL [リージョン]-Requests-Tier2 ACL設定の読み取り
WriteACL [リージョン]-Requests-Tier1 ACL設定の書き込み

ストレージ関連の操作

標準ストレージ

Operation Usage Type 説明
StandardStorage [リージョン]-TimedStorage-ByteHrs S3標準ストレージの使用料

Intelligent-Tiering

Operation Usage Type 説明
IntelligentTieringStorage [リージョン]-Monitoring-Automation-INT Intelligent-Tieringのモニタリング料金
IntelligentTieringFAStorage [リージョン]-TimedStorage-INT-FA-ByteHrs Intelligent-Tieringの頻繁アクセス層ストレージ
IntelligentTieringIAStorage [リージョン]-TimedStorage-INT-IA-ByteHrs Intelligent-Tieringの低頻度アクセス層ストレージ
IntelligentTieringAAStorage [リージョン]-TimedStorage-INT-AA-ByteHrs Intelligent-Tieringのアーカイブアクセス層ストレージ
IntelligentTieringDAAStorage [リージョン]-TimedStorage-INT-DAA-ByteHrs Intelligent-Tieringの深層アーカイブアクセス層ストレージ
IntelligentTieringAIAStorage [リージョン]-TimedStorage-INT-AIA-ByteHrs Intelligent-Tieringのアーカイブ即時アクセス層ストレージ

Standard-IA

Operation Usage Type 説明
StandardIAStorage [リージョン]-TimedStorage-SIA-ByteHrs Standard-IAストレージの使用料
StandardIASizeOverhead [リージョン]-TimedStorage-SIA-SmObjects Standard-IAの小オブジェクトオーバーヘッド

Glacier

Operation Usage Type 説明
GlacierStorage [リージョン]-TimedStorage-GlacierByteHrs Glacierストレージの使用料
GlacierObjectOverhead [リージョン]-TimedStorage-GlacierByteHrs Glacierオブジェクトのオーバーヘッド
GlacierS3ObjectOverhead [リージョン]-TimedStorage-ByteHrs S3からGlacierへの移行オブジェクトのオーバーヘッド
RestoreObject [リージョン]-Requests-Tier3 Glacierからのオブジェクト復元リクエスト
RestoreObjectBulk [リージョン]-Requests-GDA-Tier5 Glacierからのバルク復元リクエスト

Glacier Deep Archive

Operation Usage Type 説明
DeepArchiveStorage [リージョン]-TimedStorage-GDA-ByteHrs Glacier Deep Archiveストレージの使用料
DeepArchiveObjectOverhead [リージョン]-TimedStorage-GDA-ByteHrs Glacier Deep Archiveオブジェクトのオーバーヘッド
DeepArchiveS3ObjectOverhead [リージョン]-TimedStorage-ByteHrs S3からGlacier Deep Archiveへの移行オブジェクトのオーバーヘッド
DeepArchiveRestoreObject [リージョン]-Standard-Retrieval-Bytes Glacier Deep Archiveからの標準復元
DeepArchiveRestoreObject [リージョン]-Bulk-Retrieval-Bytes Glacier Deep Archiveからのバルク復元
DeepArchiveStagingStorage [リージョン]-TimedStorage-GDA-Staging Glacier Deep Archive復元時のステージングストレージ

その他の操作

バッチ操作

Operation Usage Type 説明
CreateJob [リージョン]-BatchOperations-Jobs バッチ操作ジョブの作成
ProcessObjects [リージョン]-BatchOperations-Objects バッチ操作によるオブジェクト処理
DescribeJob Requests-Tier2 バッチ操作ジョブの詳細取得
ListJobs Requests-Tier1 バッチ操作ジョブの一覧取得

インベントリと分析

Operation Usage Type 説明
Inventory [リージョン]-Inventory-ObjectsListed インベントリレポートに含まれるオブジェクト数
ReadBucketInventory [リージョン]-Requests-Tier2 インベントリ設定の読み取り
WriteBucketInventory [リージョン]-Requests-Tier1 インベントリ設定の書き込み
ReadBucketAnalytics [リージョン]-Requests-Tier2 分析設定の読み取り
ReadBucketMetrics [リージョン]-Requests-Tier2 メトリクス設定の読み取り

Storage Lens

Operation Usage Type 説明
StorageLens [リージョン]-StorageLensFreeTier-ObjCount Storage Lensの無料利用枠オブジェクト数
GetLensConfiguration [リージョン]-Requests-Tier2 Storage Lens設定の取得
ListLensConfigurations Requests-Tier1 Storage Lens設定の一覧取得
ListStorageLensGroups Requests-Tier1 Storage Lensグループの一覧取得

S3 Select

Operation Usage Type 説明
SelectObjectContent [リージョン]-Select-Scanned-Bytes S3 Selectでスキャンされたバイト数
SelectObjectContent [リージョン]-Select-Returned-Bytes S3 Selectで返却されたバイト数
SelectObjectContent [リージョン]-Requests-Tier2 S3 Selectリクエスト

ライフサイクル遷移

Operation Usage Type 説明
S3-GlacierTransition [リージョン]-Requests-Tier3 S3からGlacierへの移行リクエスト
S3-GDATransition [リージョン]-Requests-Tier3 S3からGlacier Deep Archiveへの移行リクエスト
S3-INTTransition [リージョン]-Requests-Tier4 S3からIntelligent-Tieringへの移行リクエスト

リージョン識別子の説明

CURのusage_typeに含まれるリージョン識別子の主な例:

  • USE1 - 米国東部(バージニア北部)
  • USE2 - 米国東部(オハイオ)
  • USW1 - 米国西部(北カリフォルニア)
  • USW2 - 米国西部(オレゴン)
  • APN1 - アジアパシフィック(東京)
  • APN2 - アジアパシフィック(ソウル)
  • APN3 - アジアパシフィック(大阪)
  • APS1 - アジアパシフィック(シンガポール)
  • APS2 - アジアパシフィック(シドニー)
  • APS3 - アジアパシフィック(ムンバイ)
  • EUC1 - 欧州(フランクフルト)
  • EUW1 - 欧州(アイルランド)
  • EUW2 - 欧州(ロンドン)
  • EUW3 - 欧州(パリ)
  • EUN1 - 欧州(ストックホルム)
  • CAN1 - カナダ(中部)
  • SAE1 - 南米(サンパウロ)

リクエスト階層の説明

  • Tier1 - PUT/COPY/POST/LIST等の書き込み操作
  • Tier2 - GET/HEAD等の読み取り操作
  • Tier3 - ライフサイクル移行、復元リクエスト
  • Tier4 - ライフサイクル移行(Intelligent-Tiering)
  • Tier5 - バルク復元リクエスト
  • Tier8 - アクセスポイント関連操作
dehio3dehio3

RestoreObjectで発生するコストタイプ

  • APN1-AdditionalRequest-INT
    • $0.00037 per 1,000 Requests for AdditionalRequest-INT:RestoreObject in Asia Pacific (Tokyo)
  • APN1-Requests-Tier3
    • $0.0571 per 1,000 Glacier Requests
dehio3dehio3

月後のS3のストレージサイズとコスト

SELECT 
    DATE_TRUNC('month', line_item_usage_start_date) AS month,
    line_item_resource_id AS bucket,
    CASE
        -- Standard Storage
        WHEN line_item_usage_type LIKE '%-TimedStorage-ByteHrs' 
            AND line_item_usage_type NOT LIKE '%-INT-%'
            AND line_item_usage_type NOT LIKE '%-GDA-%'
            AND line_item_usage_type NOT LIKE '%-Glacier%'
            AND line_item_usage_type NOT LIKE '%-SIA-%'
        THEN 'Standard'
        
        -- Intelligent-Tiering
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-FA-%' THEN 'Intelligent-Tiering Frequent Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-IA-%' THEN 'Intelligent-Tiering Infrequent Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-AA-%' THEN 'Intelligent-Tiering Archive Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-DAA-%' THEN 'Intelligent-Tiering Deep Archive Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-AIA-%' THEN 'Intelligent-Tiering Archive Instant Access'
        
        -- Standard-IA
        WHEN line_item_usage_type LIKE '%-TimedStorage-SIA-%' THEN 'Standard-IA'
        
        -- Glacier
        WHEN line_item_usage_type LIKE '%-TimedStorage-GlacierByteHrs' THEN 'Glacier'
        
        -- Glacier Deep Archive
        WHEN line_item_usage_type LIKE '%-TimedStorage-GDA-%' THEN 'Glacier Deep Archive'
        
        -- その他のストレージ関連
        WHEN line_item_usage_type LIKE '%-TagStorage-%' THEN 'Tag Storage'
        WHEN line_item_usage_type LIKE '%-StorageLensFreeTier-%' THEN 'Storage Lens Free Tier'
        
        ELSE 'Other'
    END AS storage_class,
    SUM(line_item_usage_amount) AS storage_size,
    SUM(line_item_unblended_cost) AS cost
FROM "athenacurcfn_cost_report"."cost_report"
WHERE 
    line_item_product_code = 'AmazonS3'
    AND line_item_usage_type LIKE '%Storage%'
    AND (
        (year = '2024' AND month >= '9') OR
        (year = '2025' AND month <= '3')
    )
GROUP BY 
    DATE_TRUNC('month', line_item_usage_start_date),
    line_item_resource_id,
    CASE
        WHEN line_item_usage_type LIKE '%-TimedStorage-ByteHrs' 
            AND line_item_usage_type NOT LIKE '%-INT-%'
            AND line_item_usage_type NOT LIKE '%-GDA-%'
            AND line_item_usage_type NOT LIKE '%-Glacier%'
            AND line_item_usage_type NOT LIKE '%-SIA-%'
        THEN 'Standard'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-FA-%' THEN 'Intelligent-Tiering Frequent Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-IA-%' THEN 'Intelligent-Tiering Infrequent Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-AA-%' THEN 'Intelligent-Tiering Archive Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-DAA-%' THEN 'Intelligent-Tiering Deep Archive Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-INT-AIA-%' THEN 'Intelligent-Tiering Archive Instant Access'
        WHEN line_item_usage_type LIKE '%-TimedStorage-SIA-%' THEN 'Standard-IA'
        WHEN line_item_usage_type LIKE '%-TimedStorage-GlacierByteHrs' THEN 'Glacier'
        WHEN line_item_usage_type LIKE '%-TimedStorage-GDA-%' THEN 'Glacier Deep Archive'
        WHEN line_item_usage_type LIKE '%-TagStorage-%' THEN 'Tag Storage'
        WHEN line_item_usage_type LIKE '%-StorageLensFreeTier-%' THEN 'Storage Lens Free Tier'
        ELSE 'Other'
    END
ORDER BY 
    month ASC,
    bucket ASC;