【Hubot】 AWS의 이용 요금을 묻는다고 대답해 주도록 했다

 개요



가장 부담스러운 형태로 AWS의 이용 요금을 확인하고 싶었기 때문에 Hubot에게 그것을 줬다.
Hubot에 AWS 이용 요금을 문의할 수 있도록.
AWS CLI를 사용하면 쉽게 구현할 수 있습니다.

AWS 이용 요금 취득



전에 aws cli를 설치해야 합니다.
  • 제1회 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」의 얼굴을 공개해 버렸다. . 위험하게 지워지는 곳이었다. .

    좋은 웹페이지 즐겨찾기