JAWS-UG 初心者支部#4 でライトニングトーク(LT)をしてみました
ハンズラボの吉田です
自分に一言、さぁ、書けぇ!!!!
JAWS-UG初心者支部でLTをしてきました。
初LTでかなり緊張しました。
LT内容は失敗談でしたが失敗からいろいろと学んでいきたいです。
LTで最後にボソッと“EC2のインスタンスタイプをチェックしてslackに流す”というお話をしたのですが、せっかくなのでその内容について少し補足しようかと思います。
ところで、LTの内容を3行で説明します。
– 入社した。
– インスタンスタイプを立て間違えた!?
– ごめんなさい。
インスタンスタイプは怖いです。皆様お気をつけください。。。
さて、そんな中少し試してみようと思い書いてみたLambda_functionがこちらです。
from __future__ import print_function
import json
import slackweb
import boto3
ec2 = boto3.client('ec2')
SLACK_POST_URL = "*******************"
def chk_running_instances():
response = ec2.describe_instances(
Filters=[
{
'Name': 'instance-state-name',
'Values': [
'running',
],
},
],
)
instance_ids = []
instance_type = []
info = []
i = len(response['Reservations'])
for a in range(0, i):
instance_ids.insert(a, response['Reservations'][a]['Instances'][0]['InstanceId'])
instance_type.insert(a, response['Reservations'][a]['Instances'][0]['InstanceType'])
info.insert(a, {instance_ids[a]:instance_type[a]})
return info
def slack_post(post_massage):
slack = slackweb.Slack(url=SLACK_POST_URL)
slack.notify(text=post_massage, username="Type-tuuchiKUN", icon_emoji=":coffee")
def lambda_handler(event, context):
print('Loading function')
result = chk_running_instances()
if result == []:
slack_post("[INFO] 0 running-instance ")
else:
i = len(result)
for a in range(0, i):
instance_id = result[a].keys()
instance_type = result[a].values()
post_message = "[INFO] Running instance is... instance_id: %s, instance_type: %s"%(instance_id, instance_type)
slack_post(post_message)
AWSはやっぱりJSONですね!
CLIもそうですが返って来たJSONからいらない情報をゴリゴリ削ぎ落としていけばほしい情報が手に入ります。
このスクリプトを1日1回回しておけば不要なインスタンスが起動しているかを確認できます。
今回はslackに通知していますが、SNSに通知すればGmailに飛ばすと言ったことも簡単にできるので、何らかの形で起動インスタンスを確認しておくと無駄な課金を免れることが出来るんじゃないかと思います。