CloudFrontが更新前の証明書を返す

事象

なんか会社の テックブログ的な存在の証明書が切れた??

が、しかし普通に繋がる人もいるようで

f:id:hiroqn:20201018194746p:plain

gyazo.com

しかし私のiPhoneからは繋がらない...

f:id:hiroqn:20201018195343p:plain

上記のブログはCloudFront+S3で構成されているので、AWSの管理コンソールを見に行ったところ、ACMとCFの設定は特に問題はなさそう

どうやら証明書ガチャ(厳密にはCloudFrontのEdgeガチャ)が起きている??

経緯

確かに、現在の証明書の設定は問題ない、問題はないが実は10/2に証明書の更新に一度失敗している

You have an SSL/TLS certificate from AWS Certificate Manager in your AWS account that expires on Oct 17, 2020 at 12:00:00 UTC. This certificate includes the primary domain herp.co.jp and a total of 2 domains.

で、諸々対応した結果、 10/7に更新された旨の連絡がきて、確かにACM上は更新されていた

This is to notify you that AWS Certificate Manager (ACM) has completed the renewal of an SSL/TLS certificate that certificate includes the primary domain herp.cloud and a total of 2 domains.

対応

これは、CloudFrontの裏側のインスタンスというかエッジロケーション的なSomethingの証明書が更新された場合と更新されていない場合があるぞい、という排中律的な感じがしてきたので裏側をエスパーして対応を考えてみる

まず、Cache Invalidationを /* を対象にやってみる

結果、駄目

次に、同じドメインを対象とした新しいCertificateを作ってCloudFrontの証明書を変えてみる。

結果、会社のメンバーのうち見れてなかった人が「見れるようになった」と報告

う〜ん、直ったんじゃね?

感想

俺たちは悪くないという自信がそこそこあるんですが、AWSさんどうなんでしょう????

これはCFの正常な動作だよ的なことを知っている人がいたら連絡お願いします

はてなサマーインターン行ってきました

はじめに

まず最初にdisclaimerを書かせてもらうと2015年の話です。この記事はインターンに参加したあと5年の月日が流れた30歳の労働者が書いている。 ちょうどはてなインターンが終わって「今から就活だな〜」みたいに考えている人が書いた記事ではない。

なぜ書いたか

事の発端といえば、何の因果か、今ははてなインターンのチームで同じだった id:SWIMATH2 と働いている。

別に急な話ではなくてもう3年以上一緒に働いているのだが、逆に3年働いていると世間話をする機会が出てくる。 そこで急に当時のインターンの話になったので過去サイトを見ながらを振り返っていたら、「(インターンの)参加記録を書いてくれると思ってたのに〜」と言われてしまった。

hatenacorp.jp

最初、自分の記事リンクされてね〜〜〜って思ったけどそもそも書いた事実がなかった。疑ってすみませんでした。

そして、懐かしさを感じながら当時のチームメイトのブログを読んだ。

swimath2.hatenablog.com

自信がないからといってはてなインターンに応募しないというのは絶対にやめましょう

結構いいことが書いてあって、普通にいいことが書いてあった。

私は当時に25才だったので少し参加を迷ったりしてはいたんだよなぁ、そういう人間にも参加した方がいいと伝えるためにも今からでも参加記事を書いた方が良いな、という優しい気持ちになった。

 振り返って

振り返ってみるといろんなシーンを断片的ながら結構覚えていた、自分は結構記憶力ある方なんで。 ただ、上記のブログを読むとなんか大体書かれてて、当時の自分も書くことないな〜ってなって書かなかったのかもしれない、これはおそらく言い訳だが。

以下インターン良かったことリスト

  • 研修
  • ペアプロ(これは本当に良いメソッド)
  • 実際のプロダクトへの参加
  • perlのhash
  • カマルのカレー
  • hatena社員の個性(特にid末尾に数字がつく人)

振り返ってみると、やっぱ研修がちゃんとしてるのがすごいんだなぁ。 Perl書いたことがなかったけど、なんだかんだ何とかなる(という気持ちにさせてくれる)というのは研修がよく出来ているということだ。

つまり参加ハードルが実質0なんだよ。あと、5年たっても参加記録を書くというハードルも0だ。

謝辞

当時ののメンターの id:t_kyt id:shiba_yu36に感謝を。

あと過去を含めインターン参加者へ,

時間がたったからと言ってはてなインターン参加記事を書かないのは絶対にやめましょう

著者近影
著者近影(5年前)

そういえば完全に私事だけど印象深いことがあって、当時デパスを飲んでたがなんか覚えてないけどインターン中に飲まなくなった。そのあと今までベンゾジアゼピンは摂取してない。 あれは働きながら飲むもんじゃないなって思ったし、今もそう思っている。

Static Named Directoryの話

abst

Static Named Directoryの話をします。history../../とかが入って嫌な人は解決する可能性があります。

困り

おおよそのケースでcwdに依存したビルドは開発体験が悪くなる傾向にあると言われている(私に)

うまくMakefileを書いている場合はそれはまぁ最高なんだけど、適当にcdしてcommandを打っていると引数の中に ../ が混じってきたりする。

混じると何が困るかってhistoryの再利用性が低くなる。怠惰寄りの人間なので過去に打ったcommandを手で打ちたくないのだ。

提案手法

shellの ~ みたいにいい感じにしてぇ~って思って調べたら ~ はexpansionと呼ばれる機能らしい。

zshにはexpansion周りの機能が複数あって、Static named directoriesを使うことにした。

static named directory

zsh: 14 Expansion

~hoge のようなものがparameterにあった際にzshhoge と呼ばれるnamed directoryを探して展開しようとする。

named directoryは以下の方法で定義される

  1. / から始まる shell のvariable
  2. hash commandを使う (ex. hash -d hoge=/hoge/fuga)

example

今回は git のtop levelをnamed directoryにした。

なので chpwd のhookを使いながらnamed directoryを変えていくことになる。

    chpwd_static_named_directory() {
      local gitroot=$(git rev-parse --show-toplevel 2>/dev/null)
      if [ ! "$gitroot" = "" ]; then
        hash -d "git=$gitroot"
        return
      else
        hash -d git=
      fi
    }
    chpwd_static_named_directory

    add-zsh-hook chpwd chpwd_static_named_directory

これによってgit 管理下においてはどの位置であっても~git をprefixにつけることでgitのtop levelを使うことができる

ex. hoge ~git/src/fuga

評価

top levelにいる際は ~git をつける手間が面倒なのであまりつけないが、それ以外にいる場合 ../をつけなくていいのは便利だしhistoryもclean

git submoduleは使うつもりがないので試していない

あと、 git repoをおくディレクトリを named directoryにしても便利 (ex. hash -d dev=$HOME/git/atsumeta/directory )

僕はmacからiPhoneに通知を送りたいだけなのに

macappleで連携がiphoneで最高、そう思ってました。

ボタン一つでmacからiphoneに通知が送れてほしい。

時間のかかる長いコンパイルtwitteriphoneでみたい。

見たいtwitteriphoneからに限る。

つまり、人はコンパイルが終わったらiphoneに通知がきてほしい。

調査した結果3パターンの提案手法を公開する。

リマインダー.app

リマインダーをmacから登録することで、icloudを経由してiphoneに通知させる手法である。

ただ問題点があってリマインダーの仕様上1分以内のリマインダーを登録することができないらしい。

github.com

上のツールの作者が言ってた。ちなみにこれは雑に書かれたリマインダーにswiftで予定を登録するcli toolsで、サンプルとして使ってあげてほしい。

1分ぐらいの誤差を気にしなければこれでok

Universal Clipboard

macos iosのデバイス間でclipboardを共有できるOS標準の機能とショートカットアプリを使った手法である。

ざっくり言うと、mac側からclipboardにcopyして、ios側のショートカットを使ってクリップボードをポーリングする。

以下の画像を見るとショートカットがいかに悲しいか伝わると思う。

ただこれのメリットはmac側のwifiを切っていても成功することである。Universal Clipboardすごい。

f:id:hiroqn:20190715195433j:plain

下記のリンクからiosの方は取得できる。clipboardにnotificationと言う文字が含まれていた場合、ショートカットが終了して通知される。

https://www.icloud.com/shortcuts/5c275d7f4dc74040960998816f13fe6d

おおよそのmacユーザは使い方を察してくれると思うが、わからない人は pbcopy とかで調べて察してほしい。「どうやってCmd+Cを自動化するんだ?」とか聞かれても困るので。

macos http server化手法

ショートカットとmacosにhttpサーバーを立ち上げてポーリングする手法である

f:id:hiroqn:20190715202129j:plain

うーん、多分できるけどめんどくさいよね。

SSH

f:id:hiroqn:20190715202457j:plain

面白い奴だな、気に入った。試すのは最後にしてやる

Q

Universal ClipboardやAirDropwifiもしくはbluetoothを使っていい感じに通信できているっぽいが、それを開発者に使わせてくれないAppleとか言う企業は一旦OSをGPLで公開すべきである。

ぼくの考える最強ののmacos*ios連携募集してます

僕とaviciiとk8sの1年ちょっと

1

これは余談だけど、aviciiのWithout Youの曲は自分にしか聞こえない音が聞こえる。

これは2016年6月5日にあった千葉 QVCマリンフィールドLiveの最初の曲だ

Liveでavicii本人が登場するとすっと静かになって、イントロが流れ始めると同時に周りから湧くように上がった歓声が、

いまだにこの曲を聴くたび頭に流れる。

www.youtube.com

2

今の仕事でk8sをやり始めて1年半ぐらいになろうとしている。

もともと今のプロダクトがマイクロサービスよりに作っていたのでコンテナオーケストレーションをしたかったのもあるし、

マルチインスタンスにおけるコンテナ間通信がやれた方が便利だと思ったのでk8sを研究し始めた。

いや、それは若干語弊があって正直に言うとdocker swarmから始めた。ちょうどaws向けのdocker swarmのclosed betaに申し込んでいて試せる環境はあったので。

確か限定公開されたaws cloud formationで立ち上がる感じで立ち上がって、手元で動くdockerと使い勝手が変わらない感じで便利と言う代物に思えた。

もう昔になるのであまり覚えてないけれど、機能面の不安や障害時へ対応の不安、そしてそもそもdocker swarm projectの先行きへの不安、一旦やめましたね。

確か一旦そのころにclosed betaでその時作っていたのものをデプロイする必要があったのでECSでとりあえずデプロイした記憶がある。

とはいえECSは昔から使って慣れてはいたけれど不満はあったのでk8sを研究し始めた。

3

ぼんやり何ができるとか、ぼんやり仕組みがどうなって、は理解していたが実際に何が動いてどういう理屈で動くのか理解を深めたかったので、

最初はterraformでaws上にkubernetesを立てることを目標にcodeを読み始めた。

これに関して今思うと時期の悪さに笑ってしまうのだが、

当時k8sのversionが1.4とか1.5で、多くのk8sを立ち上げる系のプロジェクトのやり方がバラバラだった。

例えばflannelやkubeletがコンテナで動いてなかったり、etcdのversionや管理方法が違ったり、master nodeの構成とか。

その中で自分の望む構成に近いプロジェクトが以下だったのでcodeを読んでスクラッチで立てようとした

https://github.com/xuwang/kube-aws-terraform

結果的には理解不足からmaster nodeが再起動時にうまくbootstrapできなかったので一旦はやめることにしたが、このトライによって理解が深まった。

4

次に試したのはcoreosのtectonicで、これはterraformで全て管理できることができたのもアドだった。

coreos.com

今はredhatによる買収もあって別プロジェクトに統合されたみたいだけど。

確かこの時のクラスタ名がdeadmau5になる。

しかしこのdeadmau5には不運なことに2週間でクラスタが死んでしまう問題を抱えていた。

k8sを動かすために必須のpodが立ち上がらずにclusterが応答しなくなるというものだった。

kube-dns, kube-controller-manager,kube-scheduler status become pending · Issue #2945 · coreos/tectonic-installer · GitHub

2週間ごとのclusterのbackupが走った際にぶっ壊れてしまうのだがいまだによくわかっていない。

5

流石に安定させなやばいな、ということでkopsを使うことにした。

僕はcoreosが好きというのもあって、kopsはubuntuを使うために避けていたが実はcoreosが使えた。

最初のうちはkopsのterraform生成機能を試したが、これはカスタマイズが効きにくいのが微妙でterraform生成はやめて 自分で書いたterraform + kops.yamlで行くことにした。

この時 masterはt2.medium * 3の3az構成にした、この3az構成は正解でメンテナンス時のトラブルが回避できたのでよかった。

この時のステージング環境のクラスタ名がskrillexで、

本番環境のクラスタ名が、そう、avicii だった。

最終的にmaster nodeが無駄になるのでskrillexはすぐにaviciiに統合されたが、大きな事件が起きた。

6

2018年4月20日、avicii本人が死んでしまった。

正直kopsはaws eksが出るまでのつなぎで使うつもりだったので本人がクラスタより先に死んでしまうのはあまりに衝撃だった。

そして昨年11月にeksが発表され、先月我々のaviciiクラスタは役目を終え、EKSに変わった。

EKSのクラスタ名を何にするかはかなり迷った。

もともとの次のクラスタ名はaphex twinsquarepusherを考えていたが、我々(僕個人)の思いとしてaviciiを忘れたくないためにavciiの本名であるところの

tim berglingクラスタ名にした。

7

インフラエンジニア募集してます。

www.wantedly.com

2018年サブスクリプション課金まとめ

2018年に使ったサービスなどまとめ

aws

4000¥/year? ドメインとかおいてあるだけなので、一旦解約するかも

PLAYSTATION NETWORK

5,200¥/year

PSN+オンラインゲームに必要なやつ かなりゲームしてるのでペイしている。

netflix

1,296¥/month = 15000¥/year 途中で値上がりしたの辛いね 年額にするとちょっと高く感じるけどだいぶ使っているのでよし

kindle unlimited

980¥/month = 11760 ¥/year

月3〜4冊は少なくとも読んでいそうだけど、prime readingと被っている範囲はありそう 解約を迷い中

apple music

9800¥/year

年間一括払いでお得 ペイしてんじゃないかなぁ〜

GITHUB INC

7$/monthで使っていたけど、個人のprivate repoへのcommitがなくなったので10月ごろ解約

ダーツライブ

324¥/month

使ってなかったので10月ごろ解約

ドメイン

7000¥/yearぐらい

使ってないのに払ってるドメイン多すぎでは???

Webの自治

1

Webやってる人います?僕はやってます。というかWebが好きなので。

ブラウザ上で動く何かって難しい、とは言え自分もわかんない。

この難しさってなかなか表現しづらくて今まで言葉にすることを躊躇ってきた感じがする。

でも個別のことに対しては文句は言ってきた。例えば、古いのだと右クリックを禁止しているサイトとか、最近だといきなり通知の許可/非許可を出してくるサイトとか。

だけど、全体を通したルールのようなものってなかなか自分の中で明確に持ててない。

結局Webは自由だからなーみたいなのも真ではあるから、これは全員絶対禁止みたいなルールってダサいし。

だけど自分でWeb作ってる時ぐらいは持ちたい。

書いている今現在あるわけではないけど。

2

表示する上で何を満たしていたらいいかって難しい。

Webがどう表示されるかって多様なので全て満たすのは難しいにしても、いろんな人にWebして欲しいから気持ちとしては対応したくなっちゃう。

PCとかスマフォのブラウザなんか序の口で、たとえばプリンターで紙にプリントされたものとかブラウザが乗ったTVとかPS4とかKindleとかApple TVとか音声ブラウザとか

”ビジネス”Webは主要ブラウザ対応でオッケーみたいな世界観で語って悲しくない??

どういう人がどう使うかという点を議論せずにブラウザシェアで語っちゃうのってヤバくない??

3

まぁ全部盛りって無理だけどね。

多くの企業向けSaaSでAppleTV対応って意味がなく思える。流石にAppleTVで仕事している人見たことないから

開発しててもChromeだけ対応の方が楽すぎるし、IEに対応してくれって言われるだけでその場で血を吐いて死ぬ発作が出るかもしれない。

それでもアクセスする人全員に向き合ってなんとか使いやすいようにしてあげたい。

だからこそヌルい実装とか仕様を見ると辛い気持ちになる、けどルールがない

4

何を求めているのかわからないけど、 AndroidiOSのデザインガイドラインという言葉は多分近い、けどUXという言葉からは遠い。

いや、"UX"っていう言葉が企業からすると「どれぐらい儲かりそうか」でユーザーからすると「使っていて腹たった」みたいな意味で使われているせいかもしれないけど。