ニクニクドットミー

カッコいいおっさんを目指すエンジニアの厳かなブログ

ブレイクダンスをカジっていた僕が選ぶ「最強の」ブレイクビーツ!

breakdance AGEPhotography

基本的にエンジニアはブレイクダンスをやってます(大嘘)

いまから十数年ほど前、まだ高校1年生のころにブレイクダンスをカジってました。

あ。ちなみにブレイクダンスのブレイクは曲の間奏部分(ブレイク)がダンスを一番披露できるからという由来があります。あくまでもぶっ壊すとか壊れたダンスではないです。

高知市にある中央公園という公園でイベントがあり、そこで初めてブレイクダンスを見ました。

クルクル回ったり、カッコイイ振り付けのダンスを踊ったりしていて、「すげー俺もやってみてー」と素直に感動したことを覚えています。

その時は中学3年とかだったと思いますが、その後入学した高校でブレイクダンスをやっている人と出会いました。

その高校では意外とブレイクダンスをやっている先輩がいて、一緒に昼休みに学校の廊下(変に広いスペース)で、練習していました。

同じ学年のブレイクダンスをやっている人のチームに入れてもらえることになって、小さい大会にも出た事があります。 ちなみに入ったチームの名前は「シャドウタウン」

練習は土日にあって、市営の球場の側にある、ガラス張りのところで練習していました。

といっても、その時バイトも初めており、両立できずバイトを優先したので、数ヶ月で退団してます。

練習中はもちろん曲をかけるのですが、その時に気に入った曲を紹介します!

Flying Steps - Breakin' It Down

ブレイクダンスは、曲に合わせてフリーズ(ポーズをとる)して、成り立つダンスです。この曲は合わせてダンスしやすいし、曲もカッコイイのでとても気に入ってます。iTunes storeで見つけたので買っていまでも聞いてます。

zeb.rock.ski. - Keep prepared for the battle

シンプルにカッコイイ曲。攻撃的な感じでブレイクダンスって感じの曲。アップロックという相手を威嚇する動作しやすい曲かなーと。it's battle time!でポーズ取るのをよくやってましたw(ふざけてだけど) ちなみにかなり昔のめちゃイケで岡村 vs ゴリのダンス対決で流れていた曲です。

Def Cut - Street Level

うーんカッコイイ。この曲も練習中によくかかってましたね。 この曲がかかっているHong10というダンサーのダンスの動画がとてもカッコイイので紹介。

フリーズも決まっていて、トップロック(床でダンスする前の曲にノッてダンスするやつ)もカッコイイですね。

Def Cut - Start the Panic

曲中盤のスクラッチが好きな曲です。この曲もiTunes storeにあったので買って聞いてます。

Incredible Bongo Band - Apache

Apache!まるでwebサーバーみたいですねw この曲もよくかかってました。スローテンポですが、盛り上がる曲です。

パワフルなダンサー Junior

好きなダンサーの紹介をしておきます。 動画で二人ダンスしていますが、黒人の方がJuniroです。パワフルで筋肉ムキムキでめちゃくちゃカッコいいんですよね。こんなにダンスできたらなー。

なんかふとブレイクダンスしていたことを書こうと思いました。たぶん久々にFlying Stepsの曲を帰り道に聞いたからだと思います。

ブレイクダンスの曲はカッコイイ曲が多いのでオススメです。

YAPC::Asia 2015 初めましてさようなら

初めましてさようなら

なんかおしゃれなフレーズを思いついたけど、生まれて初めて参加したYAPC::Asia 2015に参加してきましたよというお話です。

ちなみに初めての参加でしたが、いっきなり個人スポンサーで申し込みました。

個人スポンサーだとTシャツとかTシャツとかTシャツを貰えるので、いいなーと思い、12,000円をお支払いさせて頂きました。

沢山のノベルティ 赤yapc Tシャツ

yapc パーカー

yapc タンブラー

※チョコレートカラーのTシャツもありますが、ちょうど洗濯中だったので、写真はないです。

YAPCの存在は2年前?くらいに知って、去年か一昨年に参加しようかと思ったのですが、タイミングがあわずに参加できませんでした。印象としてはPerlのえぐい人達が集まるイベントだろうと思ってました。 さらに自分はPerlをほとんど書いた事がないので、参加しても面白いかな?と不安だったことを覚えています。今年も開催するよーとなにかで知り、まぁ思い切って参加してみるかーと思い、同僚に声を掛けてみたところその人は数年前から参加しており、さらに個人スポンサーで参加していました。 個人スポンサーだとたくさんノベルティ貰えるし、Tシャツ欲しいし(IT系のTシャツ集めてます)で、自分も個人スポンサーで初めてYAPCに参加させてもらいました。

wktkしていると知り合いが前夜祭で登壇するとTwitterで知り、自分が勤めているところの会議室を借りて、発表の練習をするというイベントが発生。

yapcのページ Perlワンライナー入門

Perlワンライナーすげぇっていうのが率直な感想。ワンナイナーでライブラリ読み込むってエグいですねw 非常に強力だなぁと。 YAPCは前夜祭から参加していたので、もちろんこちらの発表を拝見させて頂きました。結構ウケてましたし、自分の隣の席で聞いていた人も「そんなやりかたがあるのかなー」とつぶやいていました。

前夜祭では@tagomorisさんのOSSの話がインパクトありましたね。自分もOSSもどき的なものを作っていて、非常に参考になりました。みんな英語でやりとりしようね。あとtagomorisさんの怒濤のラッシュの感じ好きですね。 あと@uzullaさんのトークがすごく面白かった。PHPをイジりつつ、みんなPHPやろうっていう熱い気持ちが伝わってきました。さすが去年のベストトーク賞を取った方ですね。

一日目はなんとなんとまさかの不参加でした。行く気まんまんだったのですが、その日は朝から障害対応が入ってしまい、参加できず^^;

個人的に気になっていた発表は、 世界展開する大規模ウェブサービスのデプロイを支える技術 Consulと自作OSSを活用した100台規模のWebサービス運用

懇親会も参加してみたかったですが、残念でした。。。

二日目(最終日)は朝からいくぞーと張り切っていたけど、おもいっきり寝坊。 到着が11時頃となってしまいました。 二日目は、特にnginx luaは絶対に聞こうと決めていました。なんせ@cubicdaiyaさんの発表なので。

満員なセッションが多くて、仕方なく会場をウロウロしているとレバテックさんのブースがあり、タブレットとカップラーメンをもらいました。ちなみにパッケージの女性の方もブースにいらっしゃいました。

次にを聞こうと思って列に並んでいたのですが、列が進んだと思いきや、皆引き返してきて、どうしたんだろうと思ったら満員。 無限コーヒーがあったので、飲みまくり。

で、ランチセッションは必ず行くぞ!と思い、少し早めに列に並んでいると同僚を発見。同僚と立ち話していたら、外人の女性に話書けられ、この列はトイレの列ですか?と聞かれて、No. TrackB TrackB!と連呼。 なんとか分かって貰えましたw

一番楽しみにしていた、実践nginxモジュール開発〜CとLua〜

感想としては、C難しいけどLuaだとすごい楽だなーと感じました。nginxは業務で使っていますが、Luaでゴニョゴニョするということはやってないので、なにか出来ることないかなーと。 Cのモジュール作成方法もお話にあったので、試せるときに一度試してみたい。 nginxの実行順序もちゃんと把握しておかないとなーと自分の無知さが身に染みましたw

nginx_small_lightの話では、自身であまり使ってないとおっしゃれていたので、質疑応答の時に作成したきっかけを質問しました。

Q.nginx_small_lightはご自身ではお使いになってないということでしたが、作成した背景についてお聞かせ頂けますか? A.apacheのmod_small_lightをnginxでやってみたくて、作成しました。

既存のものを再現してみるって手を動かしやすいなと思いました。自分でいま作っているOSSもどきはPythonで書いてますが、Ruby,Goでも作って、言語を覚えたいなと思ってます。

クロージングは、感動でした。@lestrratさんのいままでのYAPCの気持ちが入っていて、うるっと来ました。 すごく明るくしゃべられていて、それがとても印象的でした。 YAPCのこれまでの10年がひしひしと伝わるそんなクロージングでした。

僕が思うにYAPCは終わってなんかなくて、ある日どこかで復活すると思ってます。 いろんなイベントに参加してきましたが、あんなに楽しいイベントは初めてです。 だって発表者がビールがぶ飲みしながら、マシンガントークですよ。しかも煽ってくるしw 遊びに行くっていう表現が正しいイベントでした。

@lestrratさん、トーカーの皆さん、ゲストの皆さん、スタッフの皆さん、本当におつかれさまでした。 とっても楽しいイベントでした。またお願いします。 クロージング!

調子にのってDocker化しまくったらしんどかった話

Docker

前回Sentryというエラートラッキングツールのplaybookを書きました。 もってけエンジニア!エラートラッキングツール【Sentry】のplaybookを書いたよ

このSentryをDocker化してしまえ!と思い、Dockerで構築してみたのですが、しんどいことに気づいたので、メモっておきます。

※Kubernetes,composeとか使えば楽になるんじゃないかと思います。あくまでもDockerのみでやろうとした時の感想です。

結論 --linkだらけにすると地獄をみる

githubに上げました。MySQLはsentryのmigration済みのデータが入っています。 MySQLの容量が300MBあったので、上げれませんでした^^;なんか方法考えます。。。 https://github.com/maaaato/docker-lab/tree/master/sentry ※一応リンク。

どういう構成でDocker化したか図を載せます。 docker sentry

インターネットからのアクセスはnginxで受け、バックエンドのsentryサーバへproxyする形です。 あとはsentryで必要なMySQL(PostgreSQL)、Redisを用意しています。

これらをコンテナ化しましたが、図を見て頂くとわかると通りにコンテナ同士を通信させる必要があります。

Dockerのコンテナ同士の通信には

docker run -d --link CONTAINER_NAME:ALIASE IMAGE_NAME

といった様に

--link

オプションが必要になります。

図の例で言いますと、nginxはsentryサーバへproxyさせています。この時どのようなconfになっているかと言うと、


upstream sentry {
    server sentry-docker:9000;
}


server {
    listen 80;
    location / {
        proxy_redirect     off;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;

        proxy_pass http://sentry;
    }
}

proxyさせる先をsentry-dockerといった様に書いています。

--linkでCONTAINER_NAME:ALIASEで、ALIASEをsentry-dockerと指定してdocker runさせています。 こうすることでnginxのコンテナ内の/etc/hostsには、


172.17.0.9      2b312db7e6b4
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.8      sentry-docker 1f4c972658c2 sentry

このようにsentryサーバのIPアドレスが書き込まれます。 sentryサーバの--linkも同様で、MySQL、Redisも同じように各コンテナのIPが/etc/hostsに登録されます。

docker ps

の結果

CONTAINER ID        IMAGE                  COMMAND                CREATED             STATUS              PORTS                NAMES
2b312db7e6b4        maaaato/nginx          "/bin/sh -c '/usr/sb   4 minutes ago       Up 4 minutes        0.0.0.0:80->80/tcp   nginx
1f4c972658c2        maaaato/sentry         "sentry --config=/et   5 minutes ago       Up 5 minutes        9000/tcp             sentry
5473ad46ec96        maaaato/redis          "/entrypoint.sh redi   17 minutes ago      Up 17 minutes       6379/tcp             redis-docker
cdb6a0adf437        maaaato/mysql-sentry   "/usr/bin/mysqld_saf   18 minutes ago      Up 18 minutes       3306/tcp             mysql-docker

つまり!!

ここでMySQLのコンテナをstopし、新規にrunしたらどうなるでしょうか? MySQLのコンテナが新規に立ち上がるので、新たにIPが割り振られます。

つまり!MySQLへlinkしているコンテナはIPが変わった事なんてしらないので、あれ?接続できないぞ。。。となってしまいます。南無。 まぁ当たり前か。。。

先ほどの図では、sentryコンテナからMySQLコンテナに接続していました。これを再び接続し直すには、sentryコンテナをrestartして、nginxコンテナもrestartが必要です。 restartでうまくいかない場合は、コンテナの作り直しが発生してしまいます。

まとめ

Dockerでlinkさせまくると一カ所が死んだときに影響範囲が大きくなってしまう可能性があります。 Docker化を進めるにあたり、Docker化にするところしないところをしっかり設計する必要があると感じました。 Kubernetes,composeはまだ試していないのですが、Dockerの管理が楽になるもの?だと思いますので、次は試してみます。

参考サイト

Dockerのネットワークについてはこちらの記事がとても分かりやすいです。 Dockerのネットワークの基礎 Dockerコンテナ間のlink,database.ymlの書き方

もってけエンジニア!エラートラッキングツール【Sentry】のplaybookを書いたよ

sentry

Ansibleのplaybookをちょくちょく書いてます。

業務で【Sentry】というエラートラッキングツールを使っているのですが、それを構築するplaybookを書いてみました。

といってもすごく簡単な事しかしてません。

https://github.com/maaaato/Ansible-Sentry

ポイントとして、postfixをAnsibleで入れるときにdebconfを使いました。

参考サイト

sentry Sentry + Django コトハジメ

まとめ

OSSと商用版があるのですが、OSS版ですと7.5.4でユーザ作成時にプロジェクトを作るにチェックを入れて、登録ボタンを押すと、エラーとなってしまいます^^;

さらに、チェック入れずに登録しても、作成したユーザでログインするとリダイレクトループが発生してしまいます... スーパーユーザでプロジェクトを作り、そのプロジェクトに招待するという形であればリダイレクトループやエラーにはなりませんでした。

だれがこの現象知ってますか?

【オススメ】最高にうまい梅干しが食べれるおうすの里には京都に行ったら必ず行くべし!

白寿の梅

さてGWが終わって1ヶ月ほど経ちましたが、いかがお過ごしでしょうか。

僕はGW開けにリフレッシュ休暇という5日間休みが貰える制度を利用して、さらに休んでダラ〜と過ごしていました。

ただ、ダラ〜と過ごしていた訳ではなく、友人に会うため、奈良県に行って参りました。

高知の友人なのですが、現在は奈良に住んでおり、来年あたりに結婚するとのことでこれは会わなければと思い、高知に住んでいる共通の友人と共に行きました。

そこで、せっかくだから大阪・京都を周ろうということになり、京都に立ち寄った訳です。

実は京都に行くのは二回目で、去年の11月頃に奥さんと一緒に2泊3日の旅行に行きました。そのときに出会ったのが「おうすの里」です。

おうすの里って?

天保の時代より梅作り一筋に励んでまいりました。祇園店は平成11年に開店。 梅本来の持ち味を生かしながら、可能な限り塩分を控えた、うす味でさわやか な後味が特徴です。これからも、梅を知り尽くした職人達の繊細な技によって、 その味を大切に守り続けてまいります。 一粒一粒丹念に仕上げられた梅干しをぜひご賞味ください。

京都の梅干し屋さんです。梅作りのプロ中のプロ。 たくさんの種類の梅干しや梅を使った商品があります。祇園が本店のようです。 京に咲く梅 おうすの里 祇園本店 | 祇園商店街振興組合

今回の旅行で友人におうすの里に連れて行ってあげたいと思い、嵐山店へ向かいました。前回に行ったのも嵐山店です。

お店に入るとズラーっと商品が並んでおり、店の奥にはカウンターがあります。そこでほぼ全ての商品の味見ができます。ほぼ全てってやばい。

オススメ商品の味見をしつつ、商品一覧を見せてもらい、そこで気になったものを味見します。全部おいしいので、本当に迷います。

おうすの里で買ったもの

これが買った商品たち!前回は梅ひじきを買い忘れたので、忘れずに購入!

買った商品の紹介

梅すぐき

梅すぐき 梅すぐき

すぐきとは京都の伝統的な漬け物の一種みたいです。そこに梅が入っていて、すっぱうまい仕上がりになってます。

ご飯に乗せて食べてもいいですが、昆布茶をかけたご飯の上にたっぷり乗せて食べるとめちゃうまいです。

梅ひじき

梅ひじき 梅ひじき 梅ひじき

前回買い忘れてしまった梅ひじき。今回は忘れずに買いました!

しょっぱ過ぎない味付けで、梅はすこし甘い仕上がり。ひじきとの相性が抜群で、お弁当によく乗せてます。うまい。

梅のり

梅のり 梅のり 梅のり

梅のり。磯の香りと梅のさわやかな香りとご飯に乗せるだけで食欲が爆発。

梅の身がはいっていて、いい感じにすっぱくて最強にうまい。

白寿の梅

白寿の梅 白寿の梅 白寿の梅

おうすの里で最強にうまい、マジでオススメの一品。梅にんにく。

青森産の臭くないにんにくを使用しているので、にんにく臭くなることはない。

梅のすっぱさとにんにくの歯ごたえがバツグン!おかずにもいいですが、お酒のおつまみにも合います。

5tくらいほしい商品。マジでいっぺん食べてほしい商品。

通販できるの?

電話注文もしくはFAXでの注文になります。こんなページを見つけました。 おうすの里祇園本店 お問合ご注文専用 - 京都市/食品:マピオン電話帳

実は電話注文、FAXでの注文の存在を知らなくて、実際に店舗に行かないと買えないものだと勘違いしてました(笑)

嵐山店にしか行った事がないですが、梅酒もたくさんおいてあります!試飲はできないですが^^;

これは前回に買った梅種セット。赤い梅酒からメープルの梅酒など5種類のセットです。 梅酒

まとめ

また行きたい!!!

【AWS】CodeDeployでS3をRevision Locationにしてデプロイしてみた

Codedeploy つい先日CodeDeployを試してみました。【AWS】5分で分かるAWS CodeDeploy その時はGithubと連携してデプロイを試したのですが、今回はS3で試してみたいと思います。

前回の記事で用意したApplicationを使いまわします。

S3バケットの作成

肝心のS3バケットを作成します。バケットのリージョンに注意しましょう。 CodeDeployはヴァージニア、オレゴンにしか対応してないので、それ以外のリージョンに作ってしまうとデプロイがDownloadBundleでコケます。 s3

aws deploy pushでリビジョンのアップロード

リビジョンとはデプロイするソースコードを指します。 リビジョンのアップロードにawscliを使ってみます。 ちなみにawscliのversion。2015/04/22時点の最新。

aws-cli/1.7.23 Python/2.7.5 Darwin/13.4.0

awscliにdeployとかあったんですね。知らなかった^^; ドキュメントはこちら。 http://docs.aws.amazon.com/cli/latest/reference/deploy/push.html

aws deploy push --application-name WordPress_App --description "This is my deployment" --ignore-hidden-files --s3-location s3://CodeDeployDemoBucket/WordPressApp.zip --source /tmp/MyLocalDeploymentFolder/

sourceで指定したディレクトリをzip圧縮して、それをs3-locationで指定したS3バケットにアップロードします。 今回は前回作ったApplicationを使い回してますが、aws deployコマンドでApplication作ることもできます。

サンプルを例にdeploy push してみます。前回のApplicationを使うので、test_v1という前回作ったものを指定してみます。


aws deploy push --region us-west-2 --application-name test_v1 --s3-location s3://s3-deploy/test_v1.zip --source ./CodeDeployLab/

push成功すると、こんな感じ


To deploy with this revision, run:
aws deploy create-deployment --application-name test_v1 --s3-location bucket=s3-deploy,key=test_v1.zip,bundleType=zip,eTag="66f02fcb38c7e4987e7bb0ee246c6b50" --deployment-group-name  --deployment-config-name <deployment-config-name> --description <description>

eTagというのがつきました。

Etagはオブジェクトのハッシュです。Etagはオブジェクトのコンテンツの同一性を識別するものなので、メタデータの変更はEtagには反映されません。 Etagはオブジェクトが作成されたときに決まります。 PUTまたはPOSTオペレーションにより作成されたオブジェクトの場合、Etagはクォート付の32桁の16進数となり、これはオブジェクトデータのmd5ダイジェストを表しています。

オブジェクトのコンテンツの同一性を識別するものみたいです。 s3_1

CodeDeployでデプロイする

Create New DeploymentでRevision TypeをS3を選択します。 s3_2

これでデプロイ! s3_3 無事成功ですね。

失敗もしたのですが、その時はS3のバケットをTokyoリージョンで作ってしまったが原因でした。

まとめ

自動化必須! 次はLambdaと組み合わせて自動化してみよう!

参考

LambdaでCodeDeployの自動デプロイ機能を実装する

【AWS】5分で分かるAWS CodeDeploy

Codedeploy

久々にAWSのサービスを触ってみました。というのもデプロイの仕組みをカイゼンしたいなーと考えていて、社内でもどうしよか?と話をしていました。 現状はfabricというPython製のツールを使っているのですが、fabricを動かす為に環境を整えてあげる必要があったり、依存しているライブラリのバグが影響して、デプロイができない時があったりと、深刻な状況です。 AWS CodeDeployであればマネジメントコンソールから実行もできるので、環境構築の手間が省けるので、良いのではと思い軽く触ってみました。 触ってみた感想と、CodeDeployを簡単に説明したいと思います。 ※5分は釣りです^^;

AWS CodeDeployとは

AWS CodeDeployはEC2,AutoScaling,オンプレミスに特化したデプロイサービスです。 たしか2014年11月ぐらいに登場しました。ただ、サービスを提供しているリージョンがオレゴン、ヴァージニアのみ(2015/04/19時点)ですので、 東京リージョンはまだ使えないです。残念。はやく対応してほしいです。

リポジトリとして、S3、Githubが対応しています。今後はAWS CodeCommitと連携もするようです。 うちの会社ではリポジトリをStashで管理している為、対応していません。今後に期待!?

CodeDeploy用語

codedeploy-agent デプロイ対象となるサーバには必須になる。 S3からコピーしてインストールする必要がある。


$ sudo yum update
$ sudo yum install aws-cli
$ cd /home/ec2-user
$ aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
$ chmod +x ./install
$ sudo ./install auto

appspec.yml アプリケーションのソースコードをどのディレクトリに配置するか、どのような権限で付与するかを決めるファイル。 またCodeDeployのライフサイクルに応じた処理をどうするかとかも記載する。必須

Application Name アプリケーション名。そのまんまだけど、実際につけるとするとプロジェクト名_環境名って感じになるのかな? hoge_productionとか。

Deployment Group Name デプロイ対象のグループ。グループの選び方はEC2のタグのKey,Value、AutoScalingGroup名、オンプレミス。 codedeploy codedeploy

Deployment Configuration デプロイ方法。デフォルトでは、

  1. CodeDeployDefault.AllAtOnce
    一度にすべてのインスタンスにデプロイする。最低1つのインスタンスにデプロイが成功した場合、全体のデプロイが成功したものとする。すべてのインスタンスへのデプロイが失敗した場合、全体のデプロイが失敗したものとする。
  2. CodeDeployDefault.OneAtTime
    インスタンス1つずつにデプロイする。全てのインスタンスにデプロイが成功した場合、全体のデプロイが成功したものとする。デプロイが失敗した時点で失敗と扱われるが、既にデプロイが成功したインスタンスはそのまま。
  3. CodeDeployDefault.HalfAtTime
    一度に総インスタンス数の半分までデプロイする。総インスタンス数の半分までデプロイが成功した場合、全体のデプロイが成功したものとする。全体のデプロイが失敗した場合でも、既にデプロイが成功したインスタンスはそのまま。

codedeploy_3

Service Role CodeDeployがEC2インスタンスにアクセスするロール。 codedeploy_4

デプロイの流れ

他のブログを参考にデプロイするリポジトリ作りました。 1.Applicationの作成 実は上の画像がほぼApplicationの設定の流れになります。ここではアプリの名前とデプロイ対象のグループを作る感じ。その枠を決めたイメージです。

2.デプロイするリビジョンの選択 1でCreate Applicationしたら遷移する画面。 deploy_settings 右のオレンジ枠がデプロイされたリビジョンの履歴が記載される所。ここから前のリビジョンをデプロイしたりする。つまりロールバックに使う感じ。 左の赤枠が、Deploy Group。ここからデプロイするソースを選択する。

deploy_settings_1.png

S3,Githubを選択する画面。 Create New Deployment

実はデプロイを実行する度にこの画面の入力はしないといけない。 リポジトリ名、コミットIDをいちいち入力するのがすごく面倒くさい。 自動化必須

Deploy結果とNGパターン

デプロイに成功するとこうなります。 deploy_success_1 デプロイ対象のインスタンスは2台あったので成功してますね。

次にNGパターン deploy_success_2 Deployment ConfigurationをCodeDeployDefault.OneAtTimeに設定していたので、一台ずつデプロイしています。 まず一台にデプロイしてFailedとなったので、残りのもう一台にはSkippedとなってデプロイ実行されてないです。 View All Instancesをクリック。

deploy_success_3 実際にどこで失敗したのかは赤枠を見ると分かります。 BeforeInstallで失敗したようです。 次に青枠のView Eventsを見てみましょう。

deploy_success_4 View Logsをクリック。

deploy_success_5 エラーメッセージが出てますね。よくわかりませんが。。。 この時どこに問題があったかというとappspec.ymlです。 appspec修正。 appspecのosの書き方が違ったので、修正

ほんとしょうもないミスなのですが、先ほどのメッセージからでは分かりにくいですよね。

まとめ

かなり雑になってしまいましたが、触ってみた感想を。

  • 自動化しないとツライ。コミットIDとかいちいち入力するのツライ
  • ロールバックするときにどのリビジョンがどういう修正だったかわからない。UIにタグが付けれて、デプロイする時に追加できると良いと思う。
  • codedeploy-agentの死活監視必須

参考

GitHubリポジトリと連携してAWS CodeDeployを使う(準備編) GitHubリポジトリと連携してAWS CodeDeployを使う(デプロイ編) AWS CodeDeploy を使って Rails アプリケーションをデプロイしてみた [新サービス] AWS CodeDeployを触ってみた #reinvent