Amazon Web Services ブログ

新しい API を使用して、AWS 無料利用枠の使用状況をプログラムで確認する

11月26日より、新しい AWS 無料利用枠 API を使用して、AWS 無料利用枠の使用状況を確認できます。API は AWS コマンドラインインターフェイス (AWS CLI) で直接使用することも、AWS SDK を使用してアプリケーションに統合することもできます。

AWS 無料利用枠プログラムでは、各サービスに指定された上限まで、AWS サービスを無料で試用できます。AWS 無料利用枠には、次の 3 種類のサービスが含まれます。

  • 常時無料オファーにより、お客様が AWS ユーザーである限り、指定された制限まで無料でサービスを使用できます。
  • 12 か月間の無料オファーにより、お客様はアカウントが有効になった日から 1 年間、指定された上限まで無料でサービスを使用できます。
  • 短期トライアルは、サービスに応じて、特定の期間、または1回限りの制限まで無料で利用できます。

AWS リソースを有効にして、無料利用枠を提供する AWS サービスとやり取りし始めたら、無料利用枠の上限までの進捗状況を追跡して、いつ従量制料金に切り替えるべきかがわかるようにする必要があります。

AWS 無料利用枠の使用状況を追跡する方法はいくつかあります。

この新しい API が実際にどのように機能するのかを見てみましょう。

AWS CLI で AWS 無料利用枠の API を使用する
過去数か月間に作成された新しいアカウントにアクセスできました。ここでは、AWS コマンドラインインターフェイス (AWS CLI) を使用して GetFreeTierUsage API を呼び出しています。

aws freetier get-free-tier-usage
Bash

レスポンスは、この請求期間中にこのアカウントに適用される各オファーの現在の使用量の説明を含む JSON ドキュメントです。わかりやすくするために、ここではいくつかのオファーのみを示します。

{
    "freeTierUsages": [
        {
            "service": "Amazon Simple Queue Service",
            "operation": "",
            "usageType": "Requests",
            "region": "global",
            "actualUsageAmount": 294387.0,
            "forecastedUsageAmount": 679354.6153846154,
            "limit": 1000000.0,
            "unit": "Requests",
            "description": "1000000.0 Requests are always free per month as part of AWS Free Usage Tier (Global-Requests)",
            "freeTierType": "Always Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "",
            "usageType": "EBS:VolumeUsage",
            "region": "global",
            "actualUsageAmount": 9.0,
            "forecastedUsageAmount": 33.0,
            "limit": 30.0,
            "unit": "GB-Mo",
            "description": "30.0 GB-Mo for free for 12 months as part of AWS Free Usage Tier (Global-EBS:VolumeUsage)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "RunInstances:0002",
            "usageType": "BoxUsage:freetier.micro",
            "region": "global",
            "actualUsageAmount": 476.0,
            "forecastedUsageAmount": 851.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free for 12 months as part of AWS Free Usage Tier (Global-BoxUsage:freetier.micro)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "RunInstances",
            "usageType": "BoxUsage:freetier.micro",
            "region": "global",
            "actualUsageAmount": 225.0,
            "forecastedUsageAmount": 485.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free for 12 months as part of AWS Free Usage Tier (Global-BoxUsage:freetier.micro)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Redshift",
            "operation": "RunComputeNode:0001",
            "usageType": "Node:dc2.large",
            "region": "global",
            "actualUsageAmount": 367.0,
            "forecastedUsageAmount": 735.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free per month during a short-term trial as part of AWS Free Usage Tier (Global-Node:dc2.large)",
            "freeTierType": "Free Trial"
        },
        ...
    ]
}
JSON

FreeTierUsages リストには、最も一般的なオファーがいくつか含まれています。

これらのオファーのいくつかのプロパティを見てみましょう。

  • 説明には、オファーの内容がわかりやすく説明されています。
  • FreeTierType は、常時無料12 か月無料無料トライアル (短期) のいずれかのオファーの種類を示します。
  • ユニットは、オファーの使用状況を測定するために使用される単位を表します。たとえば、EC2 インスタンスの場合は Hrs (時間)、EBS ボリュームの場合は GB-MO (1 か月あたりの GB)、Amazon SQS の場合はリクエストなどです。

興味深いのプロパティは、オファーの上限 (limit)、オファーの実際の使用量 (actualUsageAmount)、請求期間の終わり (当月) の予測使用量 (forecastedUsageAmount) の 3 つです。これらはすべて、オファーで使用される単位に基づいています。たとえば、Windows と Linux のコンピューティングオファーには、それぞれ 1 か月あたり 750 時間という制限があります。ストレージサービスの上限は 1 か月あたり 30 GB です。Amazon SQS の場合、オファーの上限は 1 か月あたり 100 万リクエストです。

制限と無料で提供されるサービスの詳細については、各カードの AWS 無料利用枠ページと各サービスの料金ページに記載されています。AWS 無料利用枠の API で提供される実際の使用量と予測使用量は、AWS コストと使用状況レポートと同様に、1 日につき 3 回までと推定されます。

予測される使用量がオファーの上限を超える場合、もし同じ方法でサービスを引き続き使用するのであれば、請求期間の終了前に従量制料金に切り替える予定です。上限に達すると、実際の使用量は GetFreeTierUsage API によって追跡されなくなります。つまり、実際の使用量が上限を超えることはできません。その場合、対応するオファーは API から返されません。

たとえば、AWS CLI の --query オプションを使用して、予測が制限を超えるオファーを探します。

aws freetier get-free-tier-usage --query 'freeTierUsages[?forecastedUsageAmount > limit]' 
Bash
{
    "freeTierUsages": [
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "",
            "usageType": "EBS:VolumeUsage",
            "region": "global",
            "actualUsageAmount": 9.0,
            "forecastedUsageAmount": 33.0,
            "limit": 30.0,
            "unit": "GB-Mo",
            "description": "30.0 GB-Mo for free for 12 months as part of AWS Free Usage Tier (Global-EBS:VolumeUsage)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "RunInstances:0002",
            "usageType": "BoxUsage:freetier.micro",
            "region": "global",
            "actualUsageAmount": 476.0,
            "forecastedUsageAmount": 851.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free for 12 months as part of AWS Free Usage Tier (Global-BoxUsage:freetier.micro)",
            "freeTierType": "12 Months Free"
        }
    ]
}
JSON

この結果によると、無料利用枠の制限内にとどまりたい場合は、EBS ボリュームと Windows での Amazon EC2 コンピューティングの使用方法を確認できます。

たとえば、現在、Windows EC2 インスタンスでは、1 か月で利用可能な 750 時間のうち 476 時間を使用しています。このペースでは、限界を超えて約 851 時間に達すると予測されています。コストが気になる場合は、使用していないときや夜間に Windows インスタンスをオフにすることもできます。

知っておくべきこと
以前は、無料利用枠の API は公開されておらず、同じデータを確認できる AWS 請求コンソールの無料利用枠ページで内部的に使用されていました。GetFreeTierUsage API を公開することで、お客様が AWS を楽しみ、AWS 無料利用枠のオファーをより有効に活用し、何が無料で、制限に近づいたり超えたりしたときに何をすべきかを理解できるようになることを願っています。

この情報を使用して、ビジネスニーズを満たすカスタムレポートを作成できます。たとえば、コンピューティングコストを回避したい場合は、プログラムで EC2 インスタンスを停止または休止状態にしたり、EC2 Auto Scaling グループのサイズを 0 に設定したりできます。任意の AWS SDK を使用してウェブアプリを作成したり、このデータをモニタリングソリューションに統合したりできます。

より一般的には、オファーの使用量が制限に近づいたときに、追加の E メールまたは通知 (Amazon SESAmazon SNS を使用するなど) を送信できます。これにより、追加費用をかけずにオファーのメリットを最大限に引き出すことができます。使用予算額を無料利用枠の上限に設定すれば、AWS Budgets でもこれを行うことができます。

オファーがこのアカウントに適用されなくなった場合 (たとえば、前月末に期限が切れたため)、対応するアイテムはリストに含まれません。前回の API 呼び出しの結果を保存すると、オファーのリストを前回の請求サイクルで報告されたオファーと比較して、最近期限切れになったオファーを確認できます。

AWS 無料利用枠の使用状況を追跡する方法について詳しく知るために、AWS Skill Builder で次の 3 つの 10 分コースを作成しました。AWS の専門家から学び、オンラインでクラウドスキルを身に付けることができるオンライン学習センターです。

Danilo

原文はこちらです。