AWS PriceList API

表題の件について。

■ 環境

  • awscli 1.11.190
  • Mac OSX El Capitan

■ AWS Price List API

`awscli`から使えるとのことなので試してみたいと思いやってみた。`help`を見てみると下記のサブコマンドがあるようだった。

  • describe-services
  • get-attribute-values
  • get-products

とりあえず`describe-services`を試す。

$ aws pricing describe-services

Could not connect to the endpoint URL: "https://api.pricing.ap-northeast-1.amazonaws.com/"
$

region“をデフォルト設定で東京にしているのでバージニアとかにしなければいけないのかな…と思い確認してみた。

http://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/using-pelong.html

上記のURLによるとエンドポイントは下記2つがある様子。

  • us-east-1
  • ap-south-1

というわけでなんとなく近そうな”ap-south-1“を使用する。

$ aws --region ap-south-1 pricing describe-services

An error occurred (AccessDeniedException) when calling the DescribeServices operation: User: arn:aws:iam::XXXXXXXXXXXX:user/withsin is not authorized to perform: pricing:DescribeServices
$

普段使用しているAccessKeyには権限が無いようだ。ManagementConsoleのIAM権限を追加した。とりあえずFull権限。

AWSPriceListServiceFullAccess

権限を追加後に再度実行してみたところ取得できた。

$ aws --region ap-south-1 pricing describe-services
{
    "Services": [
        {
            "ServiceCode": "AWSBudgets",
            "AttributeNames": [
                "productFamily",
  :

他のコマンドも試してみよう。実際の値を取得するには”get-products“だろうか…と適当にやってみた。

$ aws --region ap-south-1 pricing get-products

An error occurred (InvalidParameterException) when calling the GetProducts operation: Input Parameters are invalid. serviceCode cannot be null or empty
$

serviceCode“を指定する必要があるらしい。これは`describe-services`で取得できるのであろうと再度確認し実行する。

$ aws --region ap-south-1 pricing get-products --service-code awswaf
{
    "FormatVersion": "aws_v1",
    "PriceList": [
        "{\"product\":{\"productFamily\":\"Web Application Firewall\",\"attributes\":{\"servicecode\":\"awswaf\",\"groupDescription\":\"Number of Rules added per Web Access Control Lists\",\"usagetype\":\"Rule\",\"locationType\":\"AWS Edge Location\",\"location\":\"Any\",\"operation\":\"\",\"group\":\"Rule\"},\"sku\":\"7G4GAKZPYS82NXZT\"},\"serviceCode\":\"awswaf\",\"terms\":{\"OnDemand\":{\"7G4GAKZPYS82NXZT.JRTCKXETXF\":{\"priceDimensions\":{\"7G4GAKZPYS82NXZT.JRTCKXETXF.6YS6EN2CT7\":{\"unit\":\"month\",\"endRange\":\"Inf\",\"description\":\"Price per Rule\",\"appliesTo\":[],\"rateCode\":\"7G4GAKZPYS82NXZT.JRTCKXETXF.6YS6EN2CT7\",\"beginRange\":\"0\",\"pricePerUnit\":{\"USD\":\"1.0000000000\"}}},\"sku\":\"7G4GAKZPYS82NXZT\",\"effectiveDate\":\"2017-05-01T00:00:00Z\",\"offerTermCode\":\"JRTCKXETXF\",\"termAttributes\":{}}}},\"version\":\"20170526185723\",\"publicationDate\":\"2017-05-26T18:57:23Z\"}",
  :

取得できた。が、ここまで来て気がついた。これは料金表を得られるだけなのか。自身への請求情報じゃないのか、と。

当初イメージしていたものと違っていたのでここまでにしておく。

以上。