読者です 読者をやめる 読者になる 読者になる

うえきのブログ

妙高市に住んでいるサーバエンジニアのブログです

40歳になったのでこれまでの10年を振り返ってみた

40歳になったので、これまでの10年なにをやってきたのか振り返ると共に、自分のポートフォリオ的に記録をしておこうと思ったのでブログにまとめてみた。

ひっくり返した資料は下記のもの

  • メール履歴(試験の申込メールとか)
  • はてなダイアリー(読んだ本とか、当時の考えをまとめたメモとか)
  • Amazonの購入履歴(読んだ本)

2006年(30歳)

2005年の3月からはてなダイアリーを使って育児日記をつけはじめる。

前の年の1月に長男が生まれて、ちょっと意識が変わり始めてたんだと思う。ライフハック系の本やブログを読み漁ってた頃。
この時期に「Actionメソッド」と「安心メソッド」といういまでも自分の考えのベースとなる手法を身につける。GTDの本を読んで感銘を受ける。

2003年に転職した職場で担当したJava Webアプリケーションの開発も一段落して、次の役割を模索してた時期。UnixサーバーやOracleが触れたので「インフラ担当」として強みをだそうと社内整備を進めはじめてたと思う。
「ピープルウェア」とか「デッドライン」とかソフトウェア開発の本を読んでたのもこの頃。

■この年に関心のあった技術とか

■この年のイベント

  • 4月 有志で社内勉強会を企画して始める(この後2008年まで細々と続けてた)
  • 12月 次男誕生

2007年(31歳)

2004年の中越地震、3月の能登沖地震、7月の中越沖地震と震災が連続したので、職場でBCPが重要視されはじめる。

業務システムの冗長化やシステム復旧手段の明文化などいろいろ検討することが求められた。たぶん職場にITILコンサルタントが入って、ITILを知ったのはこの時期。

■この年に関心のあった技術

■この年のイベント、できごと

2008年(32歳)

プログラマ35歳定年説を感じマネージメント系の本を読んでた。自己啓発本を読み漁ってたのもこの頃。「おもてなしの経営学」と「夢をかなえるゾウ」は良い本だと思う。

自己啓発本を読んで自分の中で昇華した言葉が次の3つ。

  1. 自分を信じる
  2. 言い訳しない
  3. 仕事は楽しく

とにかく本を読んでいろいろ試してた年らしい。Amazonで買った本の冊数とか個人ブログの投稿数が他の年に比べてダントツに多い。

197x会ってメーリングリストを知って参加してみる。地方にいると他社のITエンジニアとの交流がないので。やっぱり東京のエンジニアは進んでるなー、華やかだなーと感じたのを覚えてる。
ここで自己紹介した人のTwitterとかをフォローして、その中に都元さんがいる(重要

■この年に関心のあった技術

■この年のイベント

2009年(33歳)

前年のリーマンショックの影響で常駐先の業績が悪化し常駐契約が解除される。代わりに保守契約として週に数日だけ客先で作業するという形態に。

前年から進めたシステム更改の企画も白紙に。この後数年、より安い新システムを企画しては話が流れ再企画という会議&会議をくり返す。

この10年で最悪の年。会社に行きたくなくて仕方なかった。軽い鬱病っぽくなってた。

■この年に関心のあった技術

■この年のイベント

  • 10月 IPA ITサービスマネージャ試験(不合格)

2010年(34歳)

客先で各地域のエンジニアを富山に集約することに。そのため4月から単身赴任が始める。
単身赴任者はやる事なくてアニメにハマるってのはあるあるらしいぞ。

この年からの3年は、とにかく既存システムを延命させるための仕事をしてて会議+資料整理+延命提案+実施作業で日が暮れる。

ITサービスマネージャの学習のためITILをちゃんと学んだのはこの頃。

■この年に関心のあった技術

■この年のイベント

  • 4月 富山での単身赴任開始
  • 10月 IPA ITサービスマネージャ試験(合格)

2011年(35歳)

3月に東日本大震災が起きる。家に戻った3月12日に長野でも地震があって自宅も結構揺れた。
このまま単身赴任が続いて、なにかあった時に家族の元にいれないのはどうなのかな?って転職を意識し始める。

■この年に関心のあった技術

  • あんまり技術本買ってない(とらドラ!とモンハンにハマってたっぽい)

■この年のイベント、できごと

2012年(36歳)

人員削減が進み、いよいよ来年は自分の番かなって感じになってきた。この1年は引き継ぎを意識しながら仕事をしてた。

年末あたりにAWSって言葉を知っていろいろ本を買ってた形跡がある。アカウントくらいは作ったのかも。

■この年に関心のあった技術

■この年のイベント

2013年(37歳)

この10年最大の転機。10年勤めた会社を辞め、東京の会社に転職。きっかけは197xでフォローしてた都元さんのツイートを見かけたため。
AWSまったく素人なので、急遽JAWS-UG北陸のハンズオンに参加するために金沢まで片道3時間 車とばして参加する。

この年は3月から10月くらいまで、とにかくガムシャラにAWSを学ぶ。出勤の電車の中、帰宅後、土日ほぼ全てをAWSを学ぶ時間をあててた。Chefも触ることが多かったのでRubyも再学習。

11月くらいからラノベにハマってたっぽい(スマホKindle本を読めるようになったので)。ここで知ったのが「なれる!SE

■この年に関心のあった技術

■この年のイベント

  • 2月 JAWS-UG北陸 第3回勉強会ではじめてAWSをさわる
  • 3月 JAWS Days ボランティアスタッフとして参加
  • 5月 クラスメソッドに転職
  • 6月 AWS ソリューションアーキテクト アソシエイト取得

2014年(38歳)

AWSオペレーションチームを立ち上げる。

運用業務を自分の強みとして自信を持っていえるようになったのはこの頃か。
OTRSを利用してサービスデスク業務の整備に着手する。

■この年に関心のあった技術

■この年のイベント

2015年(39歳)

オペレーション部を立ち上げてぶちょーになる。オペレーションチーム増員に向けた体制・仕組み化の整備でバタバタしてた。

オペ業務効率化のためにLambdaをちょっとずつ採用し始める。node.js に手を出すが非同期処理の管理が難しすぎて即時撤退を判断。

■この年に関心のあった技術

■この年のイベント

2016年(40歳)

だんだんAWSを提案・提供する業務から離れ、使用する立場に移る。

  • PCIDSS 3.1 認定に向けた運用システムの整備
  • AWS Managed Service Program認定に向けた運用システムの整備
  • 請求まわりとかバックオフィス業務の効率化

請求まわりの効率化と顧客情報の一元化を図るため、Salesforceを導入する。Salesforceに情報を集約するためPythonを覚えてLambdaで動かす。
Salesforceでもいろいろ機能を作りたかったのでVisualforceとAPEXを学ぶ。

■この年に関心のあった技術

  • Salesforce
  • Python
  • SRE
  • 経営企画
  • 486 CPU(第3次 低レイヤー強化月間)

■この年のイベント

  • 6月 AWS DevOpsエンジニア プロフェッショナル取得

まとめ

10年いろいろあったなーって感じだけど、ここで「踏ん張らないと!」って時にいつも心に浮かぶ言葉があるので紹介して締めたいと思います。

やりたいことに優先順位をつけて、努力しなくてもいいから、覚悟を決めるの。
それだけで、たいていのことはできるわ。
無限のリヴァイアス カレン・ルシオラ)

戦闘には必ず明確な目的を与えるのだ。そうすれば艦長のあらゆる操艦が 敵には人間離れした神業のごとく映る。
沈黙の艦隊 海江田四郎)

おまえを信じろ。

おれが信じるおまえでもない。
おまえが信じる俺でもない。
おまえが信じる、おまえを信じろ!

天元突破グレンラガン カミナ)

クローズアップ現代に取材されてました

事の始め

6月26日、社内チャットで嵩原さんから「ちょっとご相談。いまお時間ありますかね?」と。

話を聞くとクローズアップ現代からの取材申し込みがあったそうで。「リモートワークで地方の自宅で働きながら親の介護をする人」みたいなことらしいけど、親の介護してないし。じいちゃんピンピンしてるし。

で、7月の初めにNHKのスタッフの人と打ち合わせ。もちろん自分は上越からリモート参加。改めて説明を聞くと別に介護にこだわってないみたい。

取材される経験なんて人生でそうそうないイベントなんで了承してみる。

取材当日の様子

7月6日に秋葉原オフィスを取材。翌7日に魚見さんとスタッフの方が上越まできて取材を行うことに。
午後3時くらいから5時までオフィスの様子を、その後家に帰ってから風呂と夕食風景を撮影してました。「妙高の風景を撮りたいので」とスタッフの方があがったのが6時半くらいなので、3時間半くらいずっとカメラがまわってました。そんだけ撮られてるとどこを使われるのかなんて分からず。放送をみて「あ〜ここが使われたんだ〜、こんなとこ撮影してたんだ〜」と言いながら観てました。

リモートワークについて

番組では使われなかったけど、リモートワークについて意見を聞かれたので3つ答えてる。

1. 会社や同僚の理解があること

番組でも何度か言われてましたけど「在宅だとサボるんじゃないか?」ってのは気持ちとしてあると思います。
そこで止めるか許可するかはやっぱり会社が決めることだと思うけど、自分の場合は入社面接時点から「いずれは地元に戻りますから」と言ってて「いいですよ」とアッサリ許可をもらってました。

あと、もしかしたら毎日オフィスで働く人から「あいつばかり出社せずに仕事できてズルい」と思われることもあるかもしれません。が、幸い私の場合は周りからそういう声はあがってません。リモートワークについての同僚の理解という点でもアッサリクリアすることができました。

新しい制度に対しては、反感・反発という感情的なものが大いに考えられるわけですが、そこを全然気にしなくて良い会社だったのでありがたいです。

2. ツールSkype、Hangout)や高速ネット環境が整備されてきたこと

社内チャットがあるとはいえ、やっぱり文字だけでは伝わりにくいです。

言葉と表情とでコミュニケーションを伝える手段としてSkypeやHangoutのようなツールが誰でも使えるようになったのは大きいと思います。またリアルタイムの動画をやりとりできる高速なネット回線が地方にも整備された(たぶん2008年くらいから)のも大きいと思ってます。

ノンバーバル大事。

3. お客様の理解があること

「客先との打ち合わせは?」という質問も受けました。「リモートでやってます」と答えました。

(超)有名企業でも、多くがリモートでの会議参加に対して受け入れてくれています。むしろ大手の方がそういう働き方について理解があるかも。大きな会社の方が、働き方の多様性についての啓蒙が進んでいるんですかね?

いくら会社が勧めていてツールがあったとしても、お客様の理解がなければ在宅仕事は難しいものだけど、むしろお客様の方から「1時間の打ち合わせのためにわざわざ来てもらうことないよ〜リモートで大丈夫」って言ってくれることが多い気がします。
(これまで10年間ずっと外回りをしてこなかったので、以前に比べて増えたのかどうかは分からない)

その他、リモートワークについて

リモートワークは特別か?

取材されて改めてリモートワークについて考えるきっかけになりました。で、結論としては「取材される程、特別なことか?」というのが正直な感想です。

これまでフリーランスの人なら地方にいながら東京の仕事を請け負うのは普通にあったでしょうし、全国にある拠点を社内テレビ会議システムで繋いで打ち合わせをやっている会社だってたくさんあります。

リモートだから意思疎通がし難いというのは確かにあると思いますが、だからと言って仕事ができないというわけではないです。自宅でまじめに働こうが、サボろうがアウトプットを出せばいいわけですし。評価についても同様。オフィス勤務者だから満足のいく評価を受けられるかって、そんなことないですし。

そう考えると「社員として自宅で一人でリモートワークをする」ってそんな大袈裟なことじゃないよな〜と思ってます。

すべての人にリモートワークを勧めるか

これはハッキリ「いいえ」と言いました。「リモートワーク=一番素晴らしい働き方」とは思ってません。設備とかの関係で職場にいかなきゃできない仕事だってあるでしょうし。仕事とプライベートをはっきり区別したいってのもあるでしょうし。

ただ自分の場合 クラメソ入社前は、単身赴任の終わりも見えず地元で再就職先の見当もつかない、自分で会社を始めるか、求人のある異業種に転職するかしか考えてませんでした。

なので、あくまでも「こんな働き方もあるんだよ」「地方で仕事がなくても、フリーランスにならなくても、こんなやり方で東京の仕事ができるんだよ」ってのを知ってもらえたらいいなと思います。

あわせて読みたい

2013年、先行きが見えない中で初めてAWSに触れて、JAWS-UG北陸の人に悩みを相談した時のです。kazuki-u.hatenablog.com
で、東京での単身赴任時代のお話。kazuki-u.hatenablog.com

おまけ 番組を見ての感想など

  • オレこんなに太ってたっけ?
  • 野郎の入浴シーンはいらんよね、オレもそう思う
  • 「これお風呂に入れてください」ってディレクターさんが入浴剤をくれましたw
  • 長男が読んでた本はJR時刻表で、次男がやってたゲームはマインクラフトです
  • 妻は番組で初めて夫が部長になってたことを知ったようです
  • じいちゃんのインタビューがカットされてて、ちょっと寂しそう

オレとJAWSと単身赴任

このブログはJAWS-UG Advent Calendar 2014の7日目です。6日目は西島さんの「2014年のJAWS-UG沖縄まとめ」でした。

はじめに

こんにちは植木和樹です。先日JAWS-UG上越妙高支部のキックオフをさせてもらいました。地元でJAWS-UGを立ち上げるにあたっての経緯やら思いやらを本日はポエムな内容で書き留めておきたいと思います。

JAWS-UGと出会うまで

ちょっと前 2012年冬

2010年の春から始まった富山での単身赴任生活も2年半を過ぎようとしていました。景気低迷により当時の赴任先では翌春(2013年春)の人員削減は免れない状況でした。地元に戻っても仕事はなく、次は大阪か名古屋かという話が出ていました。
いつまでたっても家族と一緒に暮らすことはできなさそう、ということで独立を真剣に考えていました。しかし自分が得意とするサーバーインフラ、それも数十台という中規模のシステムの保守運用というとなかなか個人で受けられるものではありません。なによりハードウェアの調達や顧客探しなどどうすればいいのかまったく先の見えない状態でした。

たぶんAWSを知ったのは、この頃。へぇ〜クラウドって世界があるんだね〜と少しずつ調べて始めた頃だったと思います。

JAWS-UG北陸との出会い 2013年2月

そんな時Twitterにとあるツイートが流れてきました。

AWSを使えば、ハードウェアを調達しなくてもサーバーの仕事ができる。なにより地元でも仕事ができる!ということで、すぐに採用応募フォームから申し込みをしていました。

採用応募をしてみたもののAWSのことは全く分かりません。そんな折、2月2日にJAWS-UG北陸 第4回勉強会が金沢で開かれることを知りました。AWSを知ることができるチャンスと考え、すぐに申し込みをしました。

JAWS-UG北陸とAWSエバンジェリスト堀内さんとの出会い

ハンズオンは強烈でした。たった数クリックでMulti-AZのサーバーとデータベースが用意できる。エンジニアが考えるのはOSより上のレイヤーだけ。まさに自分が求めていたものです。
勉強会後の懇親会にも参加しました。Amazonエバンジェリスト(横文字カッコイイ!)堀内さんと一緒に酒を飲みながら話せる。新潟の田舎エンジニアの目から見て、Amazonの中の人と気軽に話せているJAWS-UG北陸のコアメンバー松本さん、相羽さん、中道さんは羨望の対象でした。この人達と対等に話せるようになりたい、もっとAWSを知りたい!使いこなしたい!そんな思いを胸に単身東京へ赴任しました。

不安だらけでJAWS-UGへの参加

まわりはすごい技術者だらけ

いざ東京に出てきたものの、社内はすごい技術者だらけでした。技術の内容にも、会話のスピードにもついていけず、5月に入社して7月頃までは半泣きで仕事をしていた覚えがあります。

そんな中、JAWS-UG横浜へスピーカーとして参加してみないかというお誘いがありました。横浜!オシャレ!カッコイイ!

でも自分に何がしゃべれるんだろう?自分が知っている知識なんて当たり前のことで退屈だったら?それより間違った知識を話してしまったら恥をかくんじゃないか・・・そんな不安な思いで一杯でした。

JAWS-UG横浜の前日の夜、目黒でCDP Nightというイベントがあり、こちらでもスピーカーとして参加しました。発表後にスピーカーとAWSの中の人だけが集まっての懇親会がありましたが、まわりは知らない人だらけでした。でも、そんな自分にみんなが気軽に話しかけてくれました。新潟から出てきたばかりで何も知りませんって話したら、色んな人を紹介してくれました。怖くない!すごいイイ人達だ!ありがとうCP櫻井さん、得上さん。

翌日のJAWS-UG横浜で出会った人達も、同じでした。みんな楽しそうに技術を語り、悩みを話し、自分ならこうすると意見を言い合える場でした。会社の枠を超え、AWSというキーワードでエンジニアが集う場が新鮮で驚きでした。

恥を捨てて飛び込んでみた

勉強会は楽しい。
もっと人前で発表する経験しよう。
恥をかいたっていいじゃない。
単身赴任している今、なにも得ずに地元に戻れば、また仕事探しに怯える日が待っているだけだ。
もっと勉強会に参加しよう。もっとAWSを学ぼう。もっと自分を知ってもらおう。

その後はcloudpack Night、JAWS千葉團など、都合のつく限り参加して、話をさせてもらいました。


多くのJAWS-UG勉強会に参加するにつれ、知り合いも増え、相談し相談される関係が広がっていきました。そして自分だけでなく、AWSを触ったばかりの人が多いこと、興味はあるけど意外なところで躓いている人がいることを知りました。自分の意見が誰かのヒントになりお礼の言葉をもらえるにつれ、仕事に対する自信も徐々についてきました。(そう!クラスメソッドのエンジニアのレベルが当たり前じゃなかったんです!)

JAWS-UGさいたまへの誘い

横浜の懇親会の席での話。単身赴任で大宮に住んでますと話したところ、さいたま支部の金谷さんが「じゃあ、さいたまのコアメンバーになりませんか?」と誘ってくれました。もちろん二つ返事でOKです。

アメンバーが集まった企画打ち合わせの場で、若林さんから次のさいたまの勉強会では50分の枠をもらえることになりました。ライトニングトークでなく、時間を使ってAWSの話ができる機会がもらえた事がうれしかったです。そして9月に開催された勉強会当日まで、何度も何度も資料の修正をやり直したのを覚えています。

東京や千葉の勉強会ももちろん素晴らしいのですが、住まいから30分で行ける距離でエンジニアが集まり勉強会が開けるって素敵な事だなって思いました。JAWS-UG上越妙高支部を立ち上げようという気持ちになったのは、きっとさいたま支部での経験による部分が多いです。

まとめ:JAWS-UGに興味がある方へ

単身赴任している間に、さいたま支部の他、横浜、千葉、東京、浅草、JAWS FESTA Kansai、そしてJAWS Day 2014といった支部・イベントにお邪魔させていただきました。どの支部の勉強会も技術者の笑顔と熱意にあふれていました。そして、どの支部の人達も外から見るよりもずっと(本当に!)親切でした。全然こわくありませんでしたw

AWSに興味がある方は、ぜひお近くのJAWS-UG支部勉強会に参加してみてください。どんなテーマでも良いのでLTをしてみてください。そしてできればコアメンバーとして中からコミュニティに関わってみてください。

もちろんJAWS-UG上越妙高支部への、ご参加もお待ちしております!


以上、JAWS-UG Advent Calendar 2014の7日目でした。明日8日目は古渡さんです。

IE9のメニューが英語になってしまったので直していたらIE10にバージョンアップされていた

知り合い(女性)からインターネットエクスプローラのメニューが英語になってしまったので直してほしいとの依頼があったので対応した。その時の記録。

症状

対応1. IE9をアンインストールする

やったこと

  • コントロールパネル - プログラムと機能から”インストールされた更新プログラム”を開き、”Internet Explorer9”をアンインストールする

結果

  • IE9のアンインストールが完了
  • なぜかIEのバージョンが10になった!?
  • メニューは英語のまま

対応2. IE10をアンインストールする

やったこと

  • IE9と同様に”インストールされた更新プログラム”からIE10をアンインストールしようとするが項目がでてこない(困)
  • Microsoftフォーラムの書き込みを参考にコマンドラインからIE10をアンインストールする

結果

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\windows\system32>FORFILES /P %WINDIR%\servicing\Packages /M Microsoft-Windows
-InternetExplorer-*10.*.mum /c "cmd /c echo Uninstalling package @fname && start
 /w pkgmgr /up:@fname /quiet /norestart"

Uninstalling package "Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~x86~en-US~10.2.9200.16521"
Uninstalling package "Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~x86~~10.2.9200.16521"
Uninstalling package "Microsoft-Windows-InternetExplorer-Package-MiniLP~31bf3856ad364e35~x86~en-US~10.2.9200.16521"
Uninstalling package "Microsoft-Windows-InternetExplorer-Package-TopLevel~31bf3856ad364e35~x86~~10.2.9200.16521"
Uninstalling package "Microsoft-Windows-InternetExplorer-Package~31bf3856ad364e35~x86~en-US~10.2.9200.16521"
Uninstalling package "Microsoft-Windows-InternetExplorer-Package~31bf3856ad364e35~x86~~10.2.9200.16521"
Uninstalling package "Microsoft-Windows-InternetExplorer-VistaPlus-Update~31bf3856ad364e35~x86~~10.2.9200.16521"
  • IE10のアンインストール成功
  • IE8に戻り、メニューも日本語になった

対応3. IE9にバージョンアップする

やったこと

  • Windows UpdateIE9へバージョンアップしようとするが "800F081E" というエラーコードでインストールに失敗する
  • Microsoft FixIt!を試すが結果は同じ(ちなみにFixIt!はダウンロードしてから実行しないと画面が表示されなかった)
  • IE9以外の重要な更新をすべて適用する
  • 再度試みるがインストール作業が1時間たっても終わらない(→強制的に電源オフ)
  • IE9のインストーラをダウンロードして手動でインストールする

結果

途中の昼休憩もはさんで4時間かかった。なんだかまだ怪しいけど、直ったから、まぁいいか・・・


一度データバックアップとってクリーンインストールしてあげた方がいいんだろうけど、パソコン預かって作業する時間がない。

AWS Game Day 2013 Tokyoに参加してきたよ

6月8日にAWS Game Day 2013 Tokyoに参加してきました。以下は備忘録を兼ねた日記です。

開催前

6月6日のAWS Summitの夕方に開かれたJAWS東京勉強会でルール説明があるというので参加したのですが、英語がサッパリ分からないので結局当日何をするのか、何を準備したらいいのか分からないまま臨みました。

一応開催案内メールで紹介されていたLearning from First Responders: When Your Systems Have to Workはダウンロードして読んではみましたが、サッパリサッパリです。

当日開始前

目黒のAmazonビルに集合。受付をすませ待合室で待機。ボッチな自分にも話しかけてくれる方がいたおかげでお互いのAWS歴などを話していました。

先日のJAWS東京にはたぶん300人以上来てたと思うので、今回の50人枠にはどれだけマッチョな人たちがくるのかと内心ビクビクしていました。ところが、意外に「AWS1ヶ月くらいです」とか「AWS未経験ですが見学枠がなかったので応募しました」な方が結構いたようです。もちろんTokyoリージョン開設前からAWSをバリバリ使ってましたよ〜みたいな人達も多くいたようです。(全18チームのリーダが熟練者だとしても全体の3分の1くらい?)

環境構築

ルール説明があった後、51名の参加者は3つの部屋に分かれ、さらに2〜3人のチームを作って環境を構築しました。自分はティターンズに配属されました。構築は手順書だけで10ページx4冊くらいあって、ハンズオンなら余裕で一日コースじゃね?ってくらいのボリュームです。しかもスクリプトがVirginiaリージョンでしか動かないとか、サンプルで用意されていた画像URLがいまは404 Not Found状態というワナがあり、原因調査してどうにか動くようになりました(Pythonコードを初めて触ったよ)。

今回の画像サムネイル生成バッチ処理の全体構成がどうなっているのかも把握できていないまま、いつの間にやらお昼の時間になってしまいました。環境構築は途中にして、間に合わなかったときのために用意された救済用CloudFormationだけ実行しておいて昼食を食べに出たのですが、帰ってきたらスタック作成に失敗してて泣きそうになりました(たしかリージョンが違っててTokyoリージョンで作ったKeyPairが見つからなかったため)。

攻撃

環境構築でバタバタしてたので攻撃手段を考える余裕もなく。でも存在しないURLをキューに渡すと404エラーでおかしな挙動をするようだったので、変なURLを送りつけてバッチ処理が困っているあいだに何か攻撃手段を考えようとしていました。


PowerUser権限のIAMユーザは渡されていたので、SQSやS3の読み込み・書き込み権限を剥奪すればバッチ処理は動かなくなることは明らかなのですが「それじゃ芸がないよね」ってことでしませんでした。夕方の懇親会で「サムネイル画像生成バッチ処理自体は動いているんだけど、なんだか挙動がおかしいってのがいい攻撃じゃない?」って話をしたら「いやいや、処理がちゃんと動いてて見た目にも問題ないように見えるけど実はやられてるってのがいいでしょ」という答えが返ってきて、まだまだエグさの精進が足りないなって思いました。


で、結局まともな(?)攻撃手段も浮かばないままタイムアップ。ふがいない。

復旧

攻撃中にも自分たちのEC2インスタンスの様子をCloudWatchでチェックしてたのですが、なにも攻撃されている様子がなく安心してました。ところがいざ様子をみてみるとS3やSQSへのアクセスはDENYされているは、S3にあるはずの作成された画像はすべて削除されているわ酷い状況でした。


1つ1つおかしなところを見つけながら直していったところ、無事インプットキューから元画像のURLを読み込んでサムネイル画像を作成しS3にファイルが作成されることが確認できました。「やれやれ、これで復旧完了か」と安心していたのですが、アウトプットキューに結果通知がたまるはずなのにいつ迄たってもゼロ件のままなのです。どうしてか分からず調べまわっているうちに、SQSの設定が変えられていていることが分かりました。"Delivery Delay"が最長の"15分"に設定されていて、"MessageRetentionPeriod"が"1分"になっていたためにキューにメッセージがたまらないように見えていました。


正直この復旧の時間が一番楽しかったです。自分で触っていると「ふつーそんな設定しないよ」ってことがされているので、たとえば前例のキューのように「こう設定すると、こういう挙動になるのか〜」となんだか感心しながら復旧していました。

ディスカッション

復旧が終わったら、参加者全員がひとつの部屋に集まって攻撃と復旧手段についてのディスカッションを行いました。

Google Docsで各チームの攻撃方法と復旧内容をリアルタイムに書き込み・共有しながら進めていったのですが、他のチームの攻撃方法は自分では思いつかないようなものばかりで、その資料をみてるだけでもすごく面白かったです。あまりネタバレすると第2回以降がつまらなくなってしまうかもしれないので簡単にご紹介すると、

  • SQSのキュー(本来サムネイル化する元画像のURLを送る)に無限リダイレクトするURLを流す
  • SQSのURLを処理するPythonコードの入力チェックの脆弱性を利用してOSをshutdownさせるコードを送りつける
  • CloudWatchのALARM設定でCPU使用率が高い状況が続いたらインスタンス止める

などなど。表彰された方は「EC2のScheduled Eventsを使って毎分AutoScalingの台数をゼロにする」という攻撃をした方でした。Scheduled Eventsでそんな設定できること知らなかったよ(AWSからのreboot/shutdownのお知らせ欄かと思ってた)。

講評

OFA(Obama for America)のマイルスから今回の感想と堅牢なシステムを作る上で重要な事の説明がありました。


堅牢なシステムを作る上で重要なのは「システムがあるべき姿を定義し、そこから外れたら自動復旧する仕組みにしておくこと」。これは今までのような「壊れた環境を早く・正しくリストアする」という技能よりも一つ上のレイヤーにある、ということでした。個人的にはCloudFormationでリソースを作成し、Chefでサーバをあるべき姿に「収束」させるって考え方に繋がる内容ですごく同感でした。



ハードウェア的な考え方であれば「調子の悪いサーバは捨てて新しいのを買ってくる」という復旧方法はなかなか選択できませんが、クラウドの場合はそれがいとも簡単にできるわけで。AMIを用意しておけば、おかしな環境を捨ててCloudFormationで一発元通りってことも可能です。その辺の「いままでの常識ではできなかった復旧方法」を受け入れるってのも今後大切なことなのかもしれませんね。



まとめ

本当に楽しい一日でした。たくさん考えて、たくさん笑った一日でした。


冒頭にも書いたけど、集まった方達全員が「できる人」ばかりじゃなく、NoviceからExpertまでいろんな経験値の人達が集まってたと思います。AWSあんまり触ったことないからちょっと自信ないなって人でもチームを組んだ人の(エグい)攻撃や復旧の手際を横でみてるだけでもすごい勉強になると思いますよ!


興味がある人は次回の告知がでたら、すぐに参加申し込みしよう!!(次回もすぐに席埋まっちゃいそう)

JAWS北陸第5回勉強会でLTしてきた クラウド破産しないためのEBS入門

JAWS北陸第5回勉強会でLTしてきました。

使った資料はこちらです。
クラウド破産しないためのEBS入門


当日Ustreamで配信もしていただけたのでアーカイブでみることができます。相羽さんありがとうございます。本編は10分ちょっとの内容になっています(01:10頃から始まります)。当日機材トラブルでご迷惑をお掛けしました松本さん、中道さん、急遽LTの順番変わってもらった川下さん、ありがとうございました。

JAWS北陸第5回勉強会#6 クラウド破産しないためのEBS入門


Video streaming by Ustream


(スライドの切り替えと声のタイミングが合っていないのはUstreamで画面が切り替わったのを確認してからSkypeで話しているせいです。中盤以降はスライドの内容を話している途中で、次のスライドに切り替えてるので画面の方が早目に進むかたちになっています。)

仕事でAWS使っていないのでなかなかネタが決まらず、4月5日に「LTのタイトルどうしましょう?」と相羽さんから催促あった時点でもまだ構成も結論も決まっていない状態でした。あせりつつなんとか水曜と木曜の夜にスライドを作成して、当日も他の人のセッションをUstで聞きながらちょこちょこと修正してました。本当に間に合ってよかった。

他の人のセッションは自分の開発経験からの発表なので、なんだか試行錯誤の実感がこもってて「いいなぁ・・・自分も早く仕事でAWSバリバリ使いたいなぁ・・・」というのが正直な感想です。特に川下さんの「Android meets AWS」なんかは自分が未経験のAndroid使った開発に加えて、Androidフロントエンド+AWSバックエンドという"両刀使い"な発表で「レベルたけぇ」とSkypeのこっちであせってました。中道さんのfluentd使った"Web Storage Archiveパターン"もAutoscalingでEC2インスタンスが自動的に作成・破棄されるAWS環境ならではの問題に対しての取り組みで興味深く聞かせてもらいました。

これだけ多くの人が集まって技術ネタを発表しあうって機会が最近なかったので、とてもいい刺激になりました。


次回はJAWS北陸の「名ばかりコアメンバー」でなくちゃんと運営や企画に参加したいです。


P.S.

はてなブログslideshareUstreamを埋め込むのってどうやるんだろ? 知ってる人がいたら教えてください。

追記 2013-04-17 07:14

id:yoshidashingo さんにブログに埋め込む方法を教えてもらいました。ありがとうございました!

Vagrant-AWSでうまくいかない時の調べ方

環境変数 VAGRANT_LOG を設定する

$ export VAGRANT_LOG=debug
$ vagrant up

すると詳細な動作ログを読むことができるので原因特定できるはず。

"[default] Waiting for SSH to become available..."で止まる

AWSプロバイダーを使って vagrant up した時に"[default] Waiting for SSH to become available..."で止まってしまうのは

ERROR warden: Error occurred: There are errors in the configuration of this machine.
Please fix the following errors and try again:

vm:
* The host path of the shared folder is missing: /Users/username/aws/cookbooks

ということでVagrantfileのあるディレクトリ直下にcookbooksディレクトリが存在しないため mkdir すれば直る。

mkdir -p '/vagrant' が失敗する

INFO interface: error: The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mkdir -p '/vagrant'
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mkdir -p '/vagrant'

Amazon Linux の /etc/sudoers でsudoにTTYを要求するため。失敗メッセージが表示されたら

$ vagrant ssh

してEC2インスタンスにログインし、requirettyの行をコメントアウトすればOK。

$ sudo visudo

#Defaults    requiretty

EC2インスタンスをexitしたら改めてプロビジョニングを実行する。

$ vagrant provision

Vagrant でEC2にChef-SoloするときのChefはいつインストールしたらいいんだ?

The chef binary (either `chef-solo` or `chef-client`) was not found on
the VM and is required for chef provisioning. Please verify that chef
is installed and that the binary is available on the PATH.

vagrant provision する前にvagrant sshして、必要パッケージを手作業で yum install してあげるしかないのかな・・・

$ vagrant ssh

$ sudo yum -y install git rubygems make gcc ruby-devel
$ sudo gem install chef --no-ri --no-rdoc
$ exit

$ vagrant provision