【Hubot】 AWS의 이용 요금을 묻는다고 대답해 주도록 했다
개요
가장 부담스러운 형태로 AWS의 이용 요금을 확인하고 싶었기 때문에 Hubot에게 그것을 줬다.
Hubot에 AWS 이용 요금을 문의할 수 있도록.
AWS CLI를 사용하면 쉽게 구현할 수 있습니다.
AWS 이용 요금 취득
전에 aws cli를 설치해야 합니다.
전에 aws cli를 설치해야 합니다.
aws cli를 사용하여 cloudwatch 메트릭으로 요금을 받으세요.
jq로 타임 스탬프로 정렬하고 최신 1 건만 가져옵니다.
bill.sh
#!/bin/bash
aws cloudwatch --region us-east-1 get-metric-statistics \
--namespace "AWS/Billing" \
--metric-name "EstimatedCharges" \
--dimensions "[{\"Value\":\"AmazonEC2\",\"Name\":\"ServiceName\"},{\"Value\":\"USD\",\"Name\":\"Currency\"}]" \
--period 60 \
--start-time `date -u -d '3 hours ago' +%Y-%m-%dT%TZ` \
--end-time `date -u +%Y-%m-%dT%TZ` \
--statistics "Maximum" \
| jq '.Datapoints | sort_by(.Timestamp) | reverse | .[0]'
이 "bill.sh"라는 이름의 파일을 적당한 장소에 저장.
이것을 실행하면 다음의 형태로 돌아옵니다.
{
"Timestamp": "2015-05-25T01:08:00Z",
"Maximum": 10.25,
"Unit": "None"
}
Hubot 측의 스크립트
그리고는 위에서 작성한 쉘 스크립트를 Hubot에 실행시킬 뿐.
Node.js에서 동기적으로 명령을 실행할 수 있도록 하는 execsyncs 라는 모듈을 사용했으므로 npm으로 설치합니다.
npm install --save-dev execsyncs
스크립트는 여기
상기에서 작성한 쉘을 실행.
bill.coffee
execsyncs = require('execsyncs')
module.exports = (robot) ->
robot.respond /aws_bill/i, (msg) ->
result = '' + execsyncs('sh 「bill.sh」のパス')
obj = JSON.parse(result)
bill = '・・・$'+obj["Maximum"]
msg.send(bill)
실행 결과
채팅 도구는 ChatWork를 사용합니다.
※「G」의 얼굴을 공개해 버렸다. . 위험하게 지워지는 곳이었다. .
Reference
이 문제에 관하여(【Hubot】 AWS의 이용 요금을 묻는다고 대답해 주도록 했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kingpanda/items/aa1b24ffd12dd81f1ab2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
npm install --save-dev execsyncs
execsyncs = require('execsyncs')
module.exports = (robot) ->
robot.respond /aws_bill/i, (msg) ->
result = '' + execsyncs('sh 「bill.sh」のパス')
obj = JSON.parse(result)
bill = '・・・$'+obj["Maximum"]
msg.send(bill)
채팅 도구는 ChatWork를 사용합니다.
※「G」의 얼굴을 공개해 버렸다. . 위험하게 지워지는 곳이었다. .
Reference
이 문제에 관하여(【Hubot】 AWS의 이용 요금을 묻는다고 대답해 주도록 했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kingpanda/items/aa1b24ffd12dd81f1ab2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)