AWSのコストがなんか不安

2020-4-14 - 読み終える時間: 2 分

不安です。なんでDataTransferがUSから?

Cost usage reportを自動取得するスクリプト(bash)

前提

  • S3にアクセスできるユーザーでアクセスキー作成済み
  • アクセスキー設定したawsコマンドのプロファイル作成済み
  • On Amazon Linux 2
  • profile,bucket名,Manifestファイル名 を記載したCSVファイル(仮にcur-get.bash.list)を作成しておく

コード書いてみる

ファイル名:cur-get.bash

#!/bin/bash

# CUR get script

## 2020-04-14

### Setting VERs

_MONTH_previous=`date +%m -d "-1 month"`
_MONTH_now=`date +%m`
_YEAR_now=`date +%Y`

if [ "${_MONTH_now}" = "01" ]; then
    _YEAR_previous=`date +%Y -d "1 year"`
else
    _YEAR_previous=`date +%Y`
fi

_DATE_pre=${_YEAR_previous}${_MONTH_previous}01
_DATE_suf=${_YEAR_now}${_MONTH_now}01
_S3FOLDER_name=${_DATE_pre}-${_DATE_suf}
_LIST_name=${0}.list
_TMP_dir=/tmp/CUR-${_DATE_pre}

### Load list

_COUNT_num=1

grep -v -e ^# ${_LIST_name} | while read LINE
do
    _PROFILE_name=`echo ${LINE} | awk -F, '{ print $1 }'`
    _S3BUCKET_name=`echo ${LINE} | awk -F, '{ print $2 }'`
    _MANIFEST_name=`echo ${LINE} | awk -F, '{ print $3 }'`
    #### get Manifest PATH
    _MANIFEST_key=`aws --profile ${_PROFILE_name} s3api list-objects-v2 --bucket ${_S3BUCKET_name} | jq '.Contents[].Key' | grep ${_S3FOLDER_name}/${_MANIFEST_name}`
    #### "Key" -> Key
    _MANIFEST_key=`echo ${_MANIFEST_key} | sed s/\"//g`

    #### get CUR PATH
    ##### get MANIFEST
    mkdir -p ${_TMP_dir}/${_PROFILE_name}
    aws --profile ${_PROFILE_name} s3api get-object --bucket ${_S3BUCKET_name} --key ${_MANIFEST_key} ${_TMP_dir}/${_PROFILE_name}/${_MANIFEST_name}
    ##### get report
    _CUR_name=`jq '.reportKeys' ${_TMP_dir}/${_PROFILE_name}/${_MANIFEST_name} | grep ${_S3FOLDER_name}`
    _CUR_name=`echo ${_CUR_name} | sed s/\"//g`
    aws --profile ${_PROFILE_name} s3api get-object --bucket ${_S3BUCKET_name} --key ${_CUR_name} "${_TMP_dir}/${_PROFILE_name}/${_S3FOLDER_name}_${_PROFILE_name}_CUR.gz"
    expr ${_COUNT_num} + 1
done

cd ${_TMP_dir} && tar czf CUR-${_DATE_pre}.tgz ./*

これでプロファイルごとのreportが/tmpにとれるはず。


今日はここまで