msfukuiの日記

おおまさのみみはそらのみみ。

今週のお外ご飯

外食したご飯をあげるだけのおじさん。今週の出社日は月・水・金でした。

f:id:msfukui:20200704205503j:plain
久しぶりに木耳と卵と豚肉の炒め物。職場から少し離れたところの中華料理屋さんにチャレンジ。味付けが少し濃かったけどかなり好みに近い味で美味しい。
f:id:msfukui:20200704205758j:plain
月曜日の夜ご飯。吉野家さんのとろろ単品+肉肉定食ご飯大盛り。とろろご飯、控えめに言って本当に最高!
f:id:msfukui:20200704210014j:plain
水曜日はいろいろあってお昼ご飯を抜いてしまったので、夜ご飯をちょっとリッチめに混ぜカレーうどん。うどんを食べた後にご飯を投入して混ぜて食べるの最高だった。
f:id:msfukui:20200704210248j:plain
金曜日のお昼にちょっとまた行動範囲を広げてみた。路地に少し入ったところの中華料理屋さんの木耳と豚肉と卵の炒め物。味付けとても好みに近くてよかった。人参が入っていて、僕は少し苦手ではあるけれど、アクセントにはよくて好みが分かれるところかも。
f:id:msfukui:20200704211705j:plain
金曜日の夜は濃厚とんこつつけ麺。右上にはとり天。安定の美味しさ。でもさすがにボリューム積み過ぎでした。
今の仕事が佳境を迎えているのだけど、主にコミュニケーションロスの問題でうまくいかないことが多発していて、視界不良の状況になってきた。死なない程度にできるだけできるかぎりのことはする気持ちだけど、山を超えてもいろいろとまだ仕事が残りそうな感じ。

今週の進捗

今週の出社日は水曜日でした。体重は順調に増加中です。

お昼ご飯。キクラゲと豚肉のたまご炒めじゃなかった。

f:id:msfukui:20200620173402j:plain
職場近くの別の中華料理屋さんの「エビとトマトとたまご炒め」。ボリューム多めで、とろみが程よくかかっていて、トマトの酸味が爽やかでよかった。エビがもう少し多いともっと嬉しかった。

帰宅途中でも晩ご飯をいただきました。

f:id:msfukui:20200620173818j:plain
帰宅途中にあるたぶん有名なラーメン屋さんの濃厚魚介豚骨ラーメン。大盛なのに値段変わらないのいいな。肉が多めなのは中年にはちょっと厳しかったけど、こってりが久しぶりでおいしかった!

駅前の本屋さんも再開していて、出勤の都度、帰宅のたびに寄るのだけど、技術書の品揃えが個人的にはいまいちに見えてしまっていて、これはもう Amazon さんかヨドバシさんにお願いしないとだめかもと思い始めている。

今は素振りで SRE 本を少しずつ読んでいるのだけど、関連する新しい翻訳本が出たと知ったので、早めに買っておきたい。

www.oreilly.co.jp

他にも気になる本がいくつかあって、でも積まれているものもたくさんあって、Macbook も新しいのを買ったのでそのセットアップも必要だったり、テトリス作りたかったり、GolangCLI 書きたかったり、FF7 やりたかったり、やりたいことが無限にあるの、人生が比較的楽しい。

進捗

進捗ありました。

いずれも今の職場近くの中華料理屋さんでした。

毎週水曜日を出勤日にしているのだけれど、出勤日を作ると、在宅勤務のありがたみがわかってとてもよい。これで小中学校と保育園が完全復活となっていただけると、さらに幸福度が上がるのだけれど、なかなかに難しい。

引き続き頑張ってお店を開拓していきたいと思います。

Lambda + CloudWatch Events + KMS で AWS コンソールへのサインインイベントを Slack に通知する(2020年春版)

今更ではあるのですが、最近、少しずつ AWS を個人で触っています。

クラウドワークスさんの約3年半前の以下の記事を今のタイミングで実装した際に、いくつか変更が必要なところがあったので、自分向けの備忘録として残しておこうと思います。

engineer.crowdworks.jp

そもそも、今だと目的を達成するためだけであればもっとシンプルな実装方法がある気はしますが、そこはあえて気にしない。

変更した選択条件

  • AWS Lambda は Python3 を選択

  • AWS CLI はバージョン2をセットアップ

[ ~]$ 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 になる感じでした。

stackoverflow.com

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 エンコードしてあげる必要があるみたいです。

docs.aws.amazon.com

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')

まとめ

ということで、少し変更するだけで、とりあえず動かすことができました。しあわせです。

豚肉と卵と木耳の炒め物(と今後)について

一昨年からなんとなくはまっていて、お昼時に新しい中華料理屋さんを見つけては食べてる。 前職だと、最後の半年くらいはほぼお弁当だったので、あんまり機会がなかったのだけど、食べるたびに幸せな気分になる。

f:id:msfukui:20190829123156j:plainf:id:msfukui:20190815123039j:plain
青物横丁の「餃子広場」さん。濃いめの味付けで好き。

f:id:msfukui:20190821193552j:plain
品川シーサイドオーバルガーデン内にある「阿里城」さん。たけのこのシャキシャキ感と塩味がよかった。

f:id:msfukui:20190826193615j:plain
品川シーサイドのイオンさんの中にある「陳麻家」さん。塩胡椒の味付けはちょっと好みじゃなかったけど、ご飯多めでおいしい。準備不足とかで辛い麻婆豆腐をおまけしてもらったことがあって、店員さんが親切だった。

f:id:msfukui:20200412121721j:plain
仕事が変わってからの職場のすぐお隣にある中華料理屋さん。(名前忘れてしまった。あとで調べて書こう。)お野菜大きめで食べ応えがあった。

f:id:msfukui:20200412121748j:plain
新しい職場から駅までの帰り道にある中華料理屋さん。(やっぱり名前忘れてしまった)比較的好みのオイスター風?味付けでおいしい。卵はちょっと少なめ。

最後のは、新型コロナ(COVID-19)の緊急事態宣言の影響で明日から在宅勤務になるから、ということで最後の晩餐風だったけど、お店に他にお客さんはいなくて今後が大変そうだった。

しばらく経って、あれこれ落ち着いて、またこんなことができるといいけど、もうそういう風にはならないんだろうな、と漠然と思ってる。

2019年の振り返りと2020年の目標

を書くのをすっかり忘れていたのですが、というかそもそも日記を書くのをすっかり忘れていました。

書いてみます。

2019年の振り返り

  • 英語

    勇気を振り絞って TOEIC など受けてみたのですが、玉砕..。かけらも点数が上がらずでした。

  • コードを書く

    プロダクトコードは書けず..。TypeScript と OCamlGolang の写経などやってたくらいですね。

    でも、とても楽しかったので引き続き楽しみながら続けたい。

  • やりたい仕事アピール

    自分がやりたいことのアピールというよりも、自分が持っている何のスキルで、今の事業に貢献できるかをずっと考え続けた一年だったかなって思います。

    家庭の事情などもろもろあり、今年度いっぱいで今のお仕事からは離れることを決断したので、それで納得のいく一年だったかなって思います。

  • 資格

    PM は論述がだめだったのですが、SA はなんとか端っこに引っかかりました。当日二時間参考書を眺めただけの成果にしてはよかったです。

    あと AWS SAA を会社のお金で取らせていただいたのですが、資格そのものよりも社内の定期の勉強会(複数)がいずれもとても楽しく、ためになったので、勉強会だけ継続してもらえないかなって改めて申し入れたい。

2020年の目標

目標というほどちゃんとしたものじゃないですが、振り返れるために書き残しておきます。

  • ダイエット

    実家で親戚一同に「今年こそは!」と宣言してきたので、目指せ 20kg 減!

  • 仕事

    上にも書いた通り、今年度いっぱいで仕事を変わることになったので、引き継ぎとチャレンジでお腹いっぱいかなって思います。

    新しい仕事は、今のところインフラやシステム運用寄りの仕事になりそうで、覚えることいっぱいありそう。頑張る。

  • コード

    今年こそは、プロダクションコードを書いたり、OSS に少しでも貢献できるように取り組みたいです。

    引き続き Ruby, TypeScript, OCaml, Golang かなって思います。

  • 資格

    春の PM と AWS DA と AWS SAP を受ける予定で頑張りたいと思います。

英語は..もう僕には無理だ。

2018年の振り返りと2019年の目標

を書くのをすっかり忘れていたのですが、過去は振り返らず、今年の目標をただ書いてみます。

  • 英語の読み書き聞き取り

    上位上司から、年末に、英語を頑張れ、と謎の指令を受けたこともあり、真面目に勉強してみたいと思いました。とりあえず積まれている書籍を読みつつ TOEIC を受けてみようと思います。目標点数は、一旦、昔に買った入門書に書かれている 660 点..かな..。

  • 最低でも週に一度は何かのコードを書く

    ソフトウェアエンジニアは毎日コードを書くとよい(特にプロダクトに繋がるコードを)という話を、 google さんのサジェストにも出てくるほどにはよく聞きますが、できるだけ目標のハードルは低くしたいので。楽しんで作る感覚は保ちたいなあと思います。

  • もうちょっと自分のやりたい仕事を理解してもらう

    一昨年と昨年の特に前半は仕事面で色々あって、結果として、もうちょっとものづくりの現場に近い立場の仕事をしたい気持ちになったので、まずは少なくとも自分が何がしたいか、を形にして、周りにお知らせし続けていくところから始めようかなって思いました。

少しでも周りのみなさんのお役に立てる様に、恥ずかしくない仕事ができる様に、今年も自分なりに頑張らない程度に頑張りたいと思います。

今年もよろしくお願い致します。

追記(2019/01/04)

目標にあげるのをすっかり忘れていたのですが、今年も春と秋に情報処理技術者試験(PM と SA)を受けようと思います。今年こそは 2 週間前には勉強を開始したい。。