外食したご飯をあげるだけのおじさん。今週の出社日は月・水・金でした。 今の仕事が佳境を迎えているのだけど、主にコミュニケーションロスの問題でうまくいかないことが多発していて、視界不良の状況になってきた。死なない程度にできるだけできるかぎりのことはする気持ちだけど、山を超えてもいろいろとまだ仕事が残りそうな感じ。
今週の進捗
今週の出社日は水曜日でした。体重は順調に増加中です。
お昼ご飯。キクラゲと豚肉のたまご炒めじゃなかった。
帰宅途中でも晩ご飯をいただきました。
駅前の本屋さんも再開していて、出勤の都度、帰宅のたびに寄るのだけど、技術書の品揃えが個人的にはいまいちに見えてしまっていて、これはもう Amazon さんかヨドバシさんにお願いしないとだめかもと思い始めている。
今は素振りで SRE 本を少しずつ読んでいるのだけど、関連する新しい翻訳本が出たと知ったので、早めに買っておきたい。
他にも気になる本がいくつかあって、でも積まれているものもたくさんあって、Macbook も新しいのを買ったのでそのセットアップも必要だったり、テトリス作りたかったり、Golang で CLI 書きたかったり、FF7 やりたかったり、やりたいことが無限にあるの、人生が比較的楽しい。
進捗
進捗ありました。
久しぶりの出勤でお昼にキクラゲとたまごの炒め物をまた食べたのだった。美味しくいただいたのだけど、豚肉じゃなくて海老だったのと、ちょっとしょっぱめな味付けだったので、個人的には満足度は低めだった。 pic.twitter.com/d18kHRzP9H
— ふくい(ま) (@msfukui) June 6, 2020
今日のは、たまごとキクラゲとニラと竹の子のみだった。豚肉ないバージョンもあるのか、と勉強になった。どちらかというと薄めの味付けで、たまごたっぷりが嬉しい。美味しくいただきました。 pic.twitter.com/TE5lKosUZY
— ふくい(ま) (@msfukui) June 10, 2020
いずれも今の職場近くの中華料理屋さんでした。
毎週水曜日を出勤日にしているのだけれど、出勤日を作ると、在宅勤務のありがたみがわかってとてもよい。これで小中学校と保育園が完全復活となっていただけると、さらに幸福度が上がるのだけれど、なかなかに難しい。
引き続き頑張ってお店を開拓していきたいと思います。
Lambda + CloudWatch Events + KMS で AWS コンソールへのサインインイベントを Slack に通知する(2020年春版)
今更ではあるのですが、最近、少しずつ AWS を個人で触っています。
クラウドワークスさんの約3年半前の以下の記事を今のタイミングで実装した際に、いくつか変更が必要なところがあったので、自分向けの備忘録として残しておこうと思います。
そもそも、今だと目的を達成するためだけであればもっとシンプルな実装方法がある気はしますが、そこはあえて気にしない。
変更した選択条件
[ ~]$ aws --version aws-cli/2.0.8 Python/3.7.4 Darwin/17.7.0 botocore/2.0.0dev12
その他 AWS マネジメントコンソールの入力フォームにもいくつか違っている箇所はありましたが、戸惑うところはあまりなかったので、省略します。
AWS Lambda で curl は叩けなくなった
AWS Lambda から curl コマンドを叩くと command not found になる感じでした。
AWS Lambda の環境に curl コマンドが含まれなくなったみたいです。
ということで、curl を実行している箇所(import の箇所と、notify メソッドの中身)を urllib.request で書き換えます。
具体的には、ここの箇所を、
import json import commands import urllib ... def notify(message, channel, web_hook_url): payload = { "text": message, "channel": channel, "username": "AWSアカウントモニターBot", "icon_emoji": ":ghost:" } escaped_payload = urllib.quote_plus(json.dumps(payload).encode('utf-8')) curl_command = 'curl -s -X POST -d "payload=%s" %s' % (escaped_payload, web_hook_url) return commands.getoutput(curl_command)
こんな感じに書き換えます。
import json import urllib.request import urllib.parse ... def notify(message, channel, web_hook_url): payload = { "text": message, "channel": channel, "username": "AWSアカウントモニターBot", "icon_emoji": ":ghost:" } encoded_payload = urllib.parse.urlencode({'payload': payload}).encode('utf-8') with urllib.request.urlopen(url=web_hook_url, data=encoded_payload) as f: return f.read().decode('utf-8')
AWS CLI で KMS で秘密情報を暗号化しようとすると Invalid base64
エラーになる
AWS CLI で KMS で Slack の Incoming Webhooks の文字列を暗号化しようとすると、こんな感じでエラーになります。
[ ~]$ aws kms encrypt --region us-east-1 --output text --query CiphertextBlob --key-id alias/lambda_encryption --plaintext //hooks.slack.com/services/********/xxxxxxxx/xxxxxxxx Invalid base64: "//hooks.slack.com/services/********/xxxxxxxx/xxxxxxxx"
以下の AWS CLI の注意事項にありますが、セキュリティ上の懸念点の解消のためか、バージョン2から plaintext で渡す文字列は、デフォルトで base64 エンコードしてあげる必要があるみたいです。
base64 エンコードした文字列を指定するのもいいのですが、以下のように fileb://〜 でバイナリの形で標準入力から渡してあげると簡単です。
[ ~]$ aws kms encrypt --region us-east-1 --output text --query CiphertextBlob --key-id alias/lambda_encryption --plaintext fileb://<(echo "//hooks.slack.com/services/********/xxxxxxxx/xxxxxxxx") AQICAHic78b********YsIjaYI=
Python3 なので str と bytes はそのままでは連結できない
KMS で暗号化した Slack の Incoming Webhooks の文字列を AWS Lambda 内で復号する際、以下のコードが示されていますが、そのままだと 'https:' と復号した文字列を連結する箇所で TypeError: can only concatenate str (not "bytes") to str
で怒られます。
def get_web_hook_url(web_hook_url_encrypted): return 'https:' + decrypt(web_hook_url_encrypted) def decrypt(encrypted): import boto3 import base64 return boto3.client('kms').decrypt(CiphertextBlob=base64.b64decode(encrypted))['Plaintext']
復号した文字列の型は str ではなく bytes のため怒られています。そのままでは連結できないため decode で str に変換して連結します。
def get_web_hook_url(web_hook_url_encrypted): return 'https:' + decrypt(web_hook_url_encrypted) def decrypt(encrypted): import boto3 import base64 return (boto3.client('kms').decrypt(CiphertextBlob=base64.b64decode(encrypted))['Plaintext']).decode('utf-8')
まとめ
ということで、少し変更するだけで、とりあえず動かすことができました。しあわせです。
豚肉と卵と木耳の炒め物(と今後)について
一昨年からなんとなくはまっていて、お昼時に新しい中華料理屋さんを見つけては食べてる。 前職だと、最後の半年くらいはほぼお弁当だったので、あんまり機会がなかったのだけど、食べるたびに幸せな気分になる。
最後のは、新型コロナ(COVID-19)の緊急事態宣言の影響で明日から在宅勤務になるから、ということで最後の晩餐風だったけど、お店に他にお客さんはいなくて今後が大変そうだった。
しばらく経って、あれこれ落ち着いて、またこんなことができるといいけど、もうそういう風にはならないんだろうな、と漠然と思ってる。
2019年の振り返りと2020年の目標
を書くのをすっかり忘れていたのですが、というかそもそも日記を書くのをすっかり忘れていました。
書いてみます。
2019年の振り返り
英語
勇気を振り絞って TOEIC など受けてみたのですが、玉砕..。かけらも点数が上がらずでした。
コードを書く
プロダクトコードは書けず..。TypeScript と OCaml と Golang の写経などやってたくらいですね。
でも、とても楽しかったので引き続き楽しみながら続けたい。
やりたい仕事アピール
自分がやりたいことのアピールというよりも、自分が持っている何のスキルで、今の事業に貢献できるかをずっと考え続けた一年だったかなって思います。
家庭の事情などもろもろあり、今年度いっぱいで今のお仕事からは離れることを決断したので、それで納得のいく一年だったかなって思います。
資格
PM は論述がだめだったのですが、SA はなんとか端っこに引っかかりました。当日二時間参考書を眺めただけの成果にしてはよかったです。
あと AWS SAA を会社のお金で取らせていただいたのですが、資格そのものよりも社内の定期の勉強会(複数)がいずれもとても楽しく、ためになったので、勉強会だけ継続してもらえないかなって改めて申し入れたい。
2020年の目標
目標というほどちゃんとしたものじゃないですが、振り返れるために書き残しておきます。
ダイエット
実家で親戚一同に「今年こそは!」と宣言してきたので、目指せ 20kg 減!
仕事
上にも書いた通り、今年度いっぱいで仕事を変わることになったので、引き継ぎとチャレンジでお腹いっぱいかなって思います。
新しい仕事は、今のところインフラやシステム運用寄りの仕事になりそうで、覚えることいっぱいありそう。頑張る。
コード
今年こそは、プロダクションコードを書いたり、OSS に少しでも貢献できるように取り組みたいです。
資格
英語は..もう僕には無理だ。
2018年の振り返りと2019年の目標
を書くのをすっかり忘れていたのですが、過去は振り返らず、今年の目標をただ書いてみます。
英語の読み書き聞き取り
上位上司から、年末に、英語を頑張れ、と謎の指令を受けたこともあり、真面目に勉強してみたいと思いました。とりあえず積まれている書籍を読みつつ TOEIC を受けてみようと思います。目標点数は、一旦、昔に買った入門書に書かれている 660 点..かな..。
最低でも週に一度は何かのコードを書く
ソフトウェアエンジニアは毎日コードを書くとよい(特にプロダクトに繋がるコードを)という話を、 google さんのサジェストにも出てくるほどにはよく聞きますが、できるだけ目標のハードルは低くしたいので。楽しんで作る感覚は保ちたいなあと思います。
もうちょっと自分のやりたい仕事を理解してもらう
一昨年と昨年の特に前半は仕事面で色々あって、結果として、もうちょっとものづくりの現場に近い立場の仕事をしたい気持ちになったので、まずは少なくとも自分が何がしたいか、を形にして、周りにお知らせし続けていくところから始めようかなって思いました。
少しでも周りのみなさんのお役に立てる様に、恥ずかしくない仕事ができる様に、今年も自分なりに頑張らない程度に頑張りたいと思います。
今年もよろしくお願い致します。
追記(2019/01/04)
目標にあげるのをすっかり忘れていたのですが、今年も春と秋に情報処理技術者試験(PM と SA)を受けようと思います。今年こそは 2 週間前には勉強を開始したい。。