なんというか、雑な造りではある。
請求書ごとのgzファイルで格納される仕様だそうで、前に作ったやつを少し改修した。
#!/bin/bash
# CUR get script
## 2021-03-03
## zin@alterworks.tokyo
### Setting VARs
_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=/aws-cost/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`
_CUR_name=`echo ${_CUR_name} | sed s/\,//g`
declare -a _CUR_names=($_CUR_name)
for x in ${_CUR_names[@]}
do
aws --profile ${_PROFILE_name} s3api get-object --bucket ${_S3BUCKET_name} --key ${x} "${_TMP_dir}/${_PROFILE_name}/${_S3FOLDER_name}_${_PROFILE_name}_CUR-${_COUNT_num}.csv.gz"
_COUNT_num=`expr ${_COUNT_num} + 1`
done
done
cd ${_TMP_dir} && tar czf CUR-${_DATE_pre}.tgz ./*
2020-03-03 のはなし