Slackに通知するLambda
Slackにメッセージを飛ばすLambdaつくる。
cloudwatchのアラームをSlackに飛ばしたいと思ったので、
Lambdaを作ってSNSから飛ばす形で作ってみたいと思った。
slack-python-webhook(slackweb)を使って非常に簡単にできる。
lambdaのコード(Python3.6)
# coding: utf-8 import json import slackweb def lambda_handler(event, context): text = event['Records'][0]['Sns']['Message'] print(text) hook_url = "https://hooks.slack.com/services/XXXXXX/XXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX" username = "FromLambda" channel = "#channel" icon_emoji = ":face_with_rolling_eyes:" slack = slackweb.Slack(url=hook_url) slack.notify(text=text, channel=channel, username=username, icon_emoji=icon_emoji)
Lambdaファンクションの作成
# vim lambda_function.py (コードを記載) # vim requirements.txt # # cat requirements.txt slackweb # pip install -r requirements.txt -t ./ # zip -r9 func.zip *
作成したzipファイルを使ってLambdaを作成。
SNSからLambdaに飛ぶように設定する。 SNSが送信するJSONの中身は以下のような感じ。
{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:EXAMPLE", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "1970-01-01T00:00:00.000Z", "Signature": "EXAMPLE", "SigningCertUrl": "EXAMPLE", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", "MessageAttributes": { "Test": { "Type": "String", "Value": "TestString" }, "TestBinary": { "Type": "Binary", "Value": "TestBinary" } }, "Type": "Notification", "UnsubscribeUrl": "EXAMPLE", "TopicArn": "arn:aws:sns:EXAMPLE", "Subject": "TestInvoke" } } ] }
cloudwatchアラームが発生すると
cloudwatchAlarm→SNS→Lambda→Slackという感じでメッセージが飛んでくる。
【Mackerel】まとめてホストを退役させる
Mackerelでは監視しなくなったホストを、「退役」させることで監視対象外とする。
退役させたいホストがいっぱいある場合、画面からポチポチやるのが面倒なので、
MackerelのCLIを使わせて頂いて、ホストを一気に退役させる。
MackerelのCLIツール mkr
https://mackerel.io/ja/docs/entry/advanced/cli
退役させるコマンド
mkr retire --force host_id
ホストIDを引数に渡してあげればいいので ホスト情報のJSONからjqでホストIDを取り出して渡してあげれば良い。
ホスト一覧を取得。3台のホストが登録されている。
# mkr hosts --service ServiceName --role RoleName | jq '.' [ { "id": "2XXXXXXXXXX", "name": "TST02", "status": "working", "roleFullnames": [ "ServiceName:RoleName" ], "isRetired": false, "createdAt": "Mar 2, 2017 at 2:51am (UTC)", "ipAddresses": { "eth0": "172.20.XX.XX" } }, { "id": "2XXXXXXXXXX", "name": "TST01", "status": "working", "roleFullnames": [ "ServiceName:RoleName" ], "isRetired": false, "createdAt": "Mar 2, 2017 at 2:50am (UTC)", "ipAddresses": { "eth0": "172.20.XX.XX" } }, { "id": "2XXXXXXXXXX", "name": "TST03", "status": "working", "roleFullnames": [ "ServiceName:RoleName" ], "isRetired": false, "createdAt": "Mar 3, 2017 at 7:40am (UTC)", "ipAddresses": { "eth0": "172.20.XX.XX" } } ]
IDだけ取り出す。
# mkr hosts --service ServiceName --role RoleName | jq '.[].id' "2XXXXXXXXXX" "2XXXXXXXXXX" "2XXXXXXXXXX"
いらんもんくっついてる
# jq --help
--raw-output / -r output raw strings, not JSON texts つまり "文字列" → 文字列 みたいに生なヤツを出現させる --compact-output / -c compact instead of pretty-printed output コンパクトに出力してくれる!コンパクトって最高じゃん!とりあえずコンパクトだ!
# mkr hosts --service Practice --role EC2 | jq -r -c '.[].id' 2XXXXXXXXXX 2XXXXXXXXXX 2XXXXXXXXXX
よし。
老兵は死なずただ消し去るのみ。
# for ID in $(mkr hosts --service ServiceName --role RoleName | jq -c -r '.[].id') ;do mkr retire --force ${ID} ;sleep 1 ;done retired 2XXXXXXXXXX(ああ……) retired 2XXXXXXXXXX(ひどい!) retired 2XXXXXXXXXX(そんな……)
本当は引退したくなくても本人の意向を無視して有無を言わせず引退に追い込むので 使う時は気をつける。 なんかタクティクスオウガで部隊から隊員を解雇する時の場面が頭をよぎった。
叫びたい。生きることが辛いんだと。(第一回転職活動総括)
齢28にして、転職活動をはじめてみた結果を総括しようと思う。
というか疲れたので、転職活動を休止しようと思っている。
またいつか再開はすると思うので第一回転職活動総括ということで。
タイトルは、転職活動中に自分のメモに気づいたら書き殴っていた文章だ。
「叫びたい。生きることが辛いんだと。」
働きながらの転職活動は、聞いていたものより遥かに厳しいものがあった。
というか、現職も狙ったかのように転職活動開始と機を合わせて忙しくなりはじめたのが
運がないというか何というか。
第一回の転職活動では2週間で6社ほど応募した。
書類は通り、一次面接で落とされるケースが多かった。
理由は「スキル不足」。当人も自覚していた部分はあるが、書面で言われると中々辛いものがある。
(新卒のときは、落ちても企業からの面接フィードバックとかないけど、中途はエージェントからフィードバック)
というか、ね。
書類で落とせと。
声を大にして言いたい。
エージェントから「良いやつなんですよ!ね?とりあえず、会ってみるだけ会ってみませんか!?ね!?」
とぶち込まれているのかもしれないが。
エージェントはもちろん、自分の仕事を全うしているだけだし、
企業の担当者も、「職務経歴書からは読み取れないスキルについて、詳しく聞いてみよう」とか
思ってるのかもしれない。
色々な人の色々な事情は慮った上であるが、釈然としないものがある。
働きながらの面接は、とても負担になる。
履歴書作成、職務経歴書作成、企業研究、現職の日程調整などなど。
甘えるな、とは言われそうだが、それが自分という人間なのである。
これは今回を機に自己分析も詳細に行った結果である(笑)
根がネガティブ思考な人間であるため、やれ面接対策の「常にポジティブに!」「前向きに、笑顔絶やさず!」
とか疲れちゃうのである。
転職先で失敗したら、どうなる?とかそもそも人生で俺が成し遂げたいことって何?とか
そもそも俺の人生って何?とか考え込むに至って、「叫びたい。生きることが辛いんだと」ってなったわけですな。
転職活動ってもっと楽にならないのかなー。
俺としてはビデオ会議を提案する。自宅で転職活動完結するじゃん。
本当これ、真面目に採用されないかな。雇用の流動性、めっちゃ上がると思う。
【Linux】fdisk -C のmanが面白すぎる件
【読書】嫌われる勇気
人に薦められたので、読んでみた。
読後の率直な感想は「よくわからないが読んでいる間は楽しかった」である。 概要は、「哲人」と「青年」との対話を通して、 オーストリアの心理学者アルフレッド・アドラーの心理学を学ぶというものである。
で、何が楽しいってこの本の登場人物の「青年」である。 対話の流れとして、「世界はどこまでもシンプルであり、人は今日からでも幸せになれる」と標榜する哲人を、青年が論破しようと挑むのだが、 哲人が何か言う度に、青年は 「な、なんですって!?」 と叫ぶのである。 それが面白くて、仕方がない。
哲人「……(アドラーの思想)!!」
青年「な、なんですって!?そ、それは悪魔の思想だ!唾棄すべき危険思想(ry」
こういったやりとりが数度に渡って繰り返されるため、 対話が面白くて思想に集中できません(笑)
個人的な感想としては、それまで猜疑心の塊で、哲人を論破しようと躍起になっていた青年が 下記のやりとりで何故か完全にやられてしまい、終盤一気におとなしくなってしまうのが口惜しいところ。
哲人「あなたはこれまで、『いま、ここ』から目を背け、ありもしない過去と未来ばかりに光を当ててこられた。 自分の人生に、かけがえのない刹那に、大いなる嘘をついてこられた。」
青年「……ああ!」(腰砕け)
僕「『……ああ!』じゃないよ!どうしてそこで諦めるんだ!どうして!」
その時はじめて気づいたんだ。 僕は、この本の「青年」に自分自身を重ね合わせていたこと。 青年に、哲人を論破して欲しかったこと。 対話がはじまってからずっと、青年を応援していたこと。
そう、この「青年」は「僕」だったんだ!
「な、なんですって!?」
というか僕は、この本の読み方を完全に間違えたので 純粋に、何度か読み直したい本である。