blog.youyo.info

GAE/Goで外部にhttpリクエスト送るには?

httpでGETリクエスト送るとそこからzabbixのapi叩いてアラートを停止するってのをGAE/Goの勉強がてら作り直してて、そのときいざzabbixにリクエスト送ろうとしたらエラー出て動きませんでした。 http.DefaultTransport and http.DefaultClient are not available in App Engine. See https://cloud.google.com/appengine/docs/go/urlfetch/ そこにはこう書かれていて、 This page describes how App Engine applications use the URL Fetch service to issue HTTP and HTTPS requests and receive responses. For guidance on how to issue HTTP and HTTPS requests from your Go-based App Engine application, see Issuing HTTP(S) Requests. To view the contents of the urlfetch package, see the urlfetch package reference. Requests App Engine uses the URL Fetch service to issue outbound requests.

Amazon EFSがリリースされたので触ってみた

EFSが正式リリースされたけど、そろそろクラメソさんがブログアップしてくれる頃だと思って待機してる。 — 洋@豆腐 (@youyo_) 2016年6月29日 と思って待ってたけどこのときはまだ出てなかったので自分で触ってみることにした。 とりあえずEFS作成してみた。オレゴンとか触らなすぎてVPCの作成からやった.. — 洋@豆腐 (@youyo_) 2016年6月29日 ほー、丁寧な説明付。 pic.twitter.com/8oKPwUoLXb — 洋@豆腐 (@youyo_) 2016年6月29日 key pairがない! オレゴンに振り回されている。 — 洋@豆腐 (@youyo_) 2016年6月29日 とりあえず丁寧な説明の通りにやったらすんなりマウントまでできた。 pic.twitter.com/sV4kbvqz0x — 洋@豆腐 (@youyo_) 2016年6月29日 [緩募] fioの雑なコマンド. いつもオプション何つけてたかなー — 洋@豆腐 (@youyo_) 2016年6月29日 とりあえずsequential write bs=4k で300iopsくらいかな。https://t.co/5ersogTlzF — 洋@豆腐 (@youyo_) 2016年6月29日 random writeでも変わらない。https://t.co/7fG7RCbJAE — 洋@豆腐 (@youyo_) 2016年6月29日 なお、t2.microという大変ケチったインスタンスでの検証であり、ロードアベレージが数十まで上がっているのでインスタンスがボトルネックであると大いに予想されます。鵜呑みにせぬようご注意願います。 — 洋@豆腐 (@youyo_) 2016年6月29日 同時接続数が増えてもiops落ちないとかそういうものだったりするのかなぁ。 — 洋@豆腐 (@youyo_) 2016年6月29日 用途にHPC,BIgDataとか書いてるから同時接続とシーケンシャルに振ってる可能性はあると思う — Masashi Terui (@marcy_terui) 2016年6月29日 とりあえず田舎は300iops出れば十分なのでこれでよしとする。 — 洋@豆腐

JAWS-UG青森開催してきた

ある日ふと思い立って、 という軽いノリでJAWS-UG青森開催することにしました。 当日の様子の写真はこちらです。あと詳細はトゥギャっときました。 「JAWSUG青森第5回勉強会」をトゥギャりました。 https://t.co/39VFXaGUyL — 洋@豆腐 (@youyo_) 2016年6月26日 以下発表者のみなさんの資料です! 「CloudDesignPatternで学ぶAmazonWebServiceとクラウド基礎知識」 澤田さん 「帰ってきたICDP」 立花さん 「EC2について」 對馬さん 「とあるサービスにおける、とあるAPIの、サーバーレス化を目指した 検証のアレコレ」 福井さん 「Amazon EMRことはじめ」 高橋さん 資料公開されたら… 資料非公開 「Advertisement for everyone」 後藤さん やってみて すげー疲れた。。 会場、備品、懇親会の手配。 県外スピーカーや遠方からの参加者の交通手段やホテルについて考えたりも。 もちろん僕一人じゃなくて他のコアメンバーと一緒に進めて、無事やりきった達成感がすごい。 アスキーさんに事前記事も書いていただいた。圧倒的感謝! 6月25日はJAWS-UG青森第5回勉強会に行くぞ! お金の管理でごたついた。反省。 次につながる話ができた。 なんだかんだでとにかく楽しかった! 参加してくれた方、登壇してくれた方、一緒に準備してくれた方、みなさんに感謝しかないです。 ありがとうございました!

go buildしたバイナリを実行したら'/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory'エラーが出た

alpine linuxでgo buildしたバイナリでこの現象に出くわした。 https://t.co/smbA3ONLiX — 洋@豆腐 (@youyo_) 2016年6月23日 で、 http://www.howtodoityourself.org/how-to-fix-libld-linux-so-2-bad-elf-interpreter-no-such-file-or-directory.htmlによると解決策は glibc をインストールすることらしい。 なるほどなるほどと思い早速インストールしようと思ったのだが、ビルドに使用していたコンテナイメージのalpine linuxではパッケージで提供されていないらしい。 / # apk search glibc / # apk search glibc してもないみたいだし、すっと諦めて別のコンテナイメージ使おう。 — 洋@豆腐 (@youyo_) 2016年6月23日 glibc入りのパッケージも見つかるし、インストールできなくはないけどそこまでalpine linuxにこだわる必要はないなーと。(軽いは正義。これは間違いないけど。 glib入りのイメージあるにはあるけど、ここまでしてalpineにこだわる必要はないかな。 https://t.co/swunId0pFK — 洋@豆腐 (@youyo_) 2016年6月23日 んで使用するイメージを golang:1.6.2-alpine から golang:1.6.2-wheezy に変えてbuildし直したら無事実行できました。

Werckerを使ってフェーズ間のパッケージの受け渡し周りでハマった

まとめ パッケージを次のフェーズに渡すには ${WERCKER_OUTPUT_DIR} ディレクトリの中に入れる ${WERCKER_OUTPUT_DIR} の中にパッケージを入れると元のソースコード類はコピーされない ${WERCKER_OUTPUT_DIR} の中が空であれば元のソースコード類がコピーされ次のフェーズに渡される 今回のサンプルコード一式はこちら https://github.com/youyo/wercker-test https://app.wercker.com/#applications/5764c96dc961d9eb3f0f515e やりたかったこと phase1で生成したパッケージ(今回は go build で生成されるバイナリ)を次のphase2でデプロイというフローを作りたかった。 phase2のときにソースコードに含まれる version.go ファイルからバージョンを取得し、デプロイに利用したかった。 とりあえずやってみる 下記 wercker.yml を作成してとりあえずやってみた。 とりあえずやってみたら version.go ファイルがないよーというエラーが吐かれた。 あれーと思いつつwercker.ymlにlsコマンドを仕込んだりして見てみたら確かになかった。 そこには生成されたパッケージだけが。 ググってみたらすぐにわかって、こちら解説されてた。 http://qiita.com/ngyuki/items/47a66b26e1bbf833e8c8 ビルドで $WERCKER_OUTPUT_DIR になにかが出力されていれば、デプロイではそのディレクトリの内容が $WERCKER_SOURCE_DIR にコピーされます。もし、ビルドで $WERCKER_OUTPUT_DIR が空っぽなら、ビルドの $WERCKER_SOURCE_DIR がデプロイの $WERCKER_SOURCE_DIR にコピーされます。 なーるーほーどー。 今の wercker.yml だと go build で作成されたバイナリしか渡らないわけで、 version.go は次のフェーズでは存在しないわけだ。 こうやることにした version.txt というバージョンが書かれたファイルも ${WERCKER_OUTPUT_DIR} に入れて渡すことにしました。 んでwercker.ymlはこうなりました。 無事 version.txt も渡されてバージョンを得ることができました。