GCP User GroupでStackdriverについて発表してきた

だいぶ間が空いてしまった。先日開催されたGCPUG Tokyo DevOps Day September 2017というイベントで発表してきたメモ。 「RocroにおけるGCP活用事例」という発表の後半を担当した。前半は現在開発中のサービスとそのデプロイについて、後半がStackdriverにつ…

CloudFormation Custom Resourceの意図しない削除を防ぐ

AWS

最近はCloudFormationをよく使っています。大変便利なのですが、S3オブジェクトやDynamoDBのItemの作成には対応していないため、Lambda-backed Custom Resourceで作成しています。ただCustom Resourceのライフサイクルは少し独特なところがあって、理解せず…

mitmproxyでHTTPSプロキシする時、どんな通信が発生しているのか追ってみる

前回の記事で、ブラウザからアクセスするURLはそのままで接続先サーバだけ変える方法と、その際のHTTP通信の様子を確認しました。今回はその続きで、HTTPSの場合について、ブラウザとmitmproxy間、mitmproxyとサーバ間の通信内容を追っていきたいと思います…

mitmproxyを使って、アクセスするURLはそのままで接続先サーバだけ変える

最近App Engineでの開発中に、ブラウザからはexample-a.comというURLでアクセスしたいけど、実際にはexample-b.comのサーバに接続させたい、ということがありました。こういうとき、mitmproxyというツールを使うと楽だったので、やり方をメモしておきます。…

GoogleのContainer Registry (gcr.io) からDocker Imageのメタデータだけを取得する

GCPではContainer RegistryにDocker Imageを格納できる。格納したImageの取得にはdocker pullコマンドが使えるけど、時々Imageのメタデータだけを参照したいことがある。そういうとき、いちいちdocker pullするのは時間がかかるし、ストレージも食う。 そう…

Scheme interpreter in Clojure (SICP 4.1: The Metacircular Evaluator)

SICPをようやく読み終え、Schemeインタプリタの実装に興味が出てきたので、Clojureで実装してみた。Schemeの仕様に則ったしっかりしたものではなく、SICP 4.1節のコードをClojureで書き換えて、パーサーを足したりしただけのもの。パーサー周辺は遅延シーケ…

SICP 3.3.4: A Simulator for Digital Circuits

SICP 3.3.4節にあるデジタル回路シミュレータをClojureで実装する機会があったので残しておく。Clojure初心者なので色々問題あるかもだけど、参考までに。 emacsのciderが便利すぎた。

pkg/errorsの導入時につまづいたところのメモ

Go

最近、既存のプロジェクトにpkg/errorsを導入する機会がありました。使い方のガイドラインが開発者のブログ記事の後半部分にあったので、参考にさせて頂きました。大体問題なく導入できましたが、悩んだ・つまづいたところもあったのでメモしておきます。 そ…

Mac OS X El Capitanにrlwrapをソースからインストールする

つまづいたところのメモ。 rlwrapをbrewからインストールしようとしたら、パッケージのダウンロードで失敗していた。 % brew install rlwrap [master] ==> Downloading http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.42.tar.gz curl: (7) Failed to conne…

luciでAppEngine/Goの異常系テストを手軽に書く

こんばんは。アドベントカレンダー Google Cloud Platform(2) 24日目担当の @ks888 です。 昨日の記事に続いて、AppEngine/Goのテストに便利なluci/gaeというライブラリを紹介していきます。昨日は簡単な紹介として、AppEngine/Goのテスト実行時間を短縮する…

AppEngine/Goのテストを100倍高速化するライブラリluciの紹介

こんばんは。アドベントカレンダー Google Cloud Platform(2) 23日目担当の @ks888 です。 突然ですが、luciというライブラリをご存知でしょうか。AppEngine/Goのテストに効果を発揮する素晴らしいライブラリなのですが、あまり使っているという話を聞きませ…

NightmareでE2Eテストをするときに役立った独自アクションのメモ

アドベントカレンダー ソフトウェアテスト6日目担当の @ks888 です。 ソフトウェアテスト Advent Calendar 2016 - Qiita 最近はNightmareでE2Eテストを書くことが増えてきました。Nightmareを使うと、例えば以下のような感じでテストを書けます。 var Nightm…

OSSプロジェクトにLambCIを導入しようとした話

最近はLambStatusというOSSを作っているのですが、今回は、このプロジェクトでCIを回すためにLambCIを導入しようとした話です。結果は失敗に終わったのですが、つまづいた箇所とかが参考になるかもしれないので残しておきます。 LambCIとは LambCIは、AWS La…

Go言語のインターフェースの値は、メモリ上でどう表現されているか

Go

前回の記事では、Go言語のスライスと文字列の値がメモリ上でどう表現されているか見てみました。今回はインターフェースへの理解を深めるべく、インターフェースの値がメモリ上でどう表現されているかGDBでみてみます。 インターフェースの値 まず、インター…

GDBでGo言語のスライスの値をのぞいてみた

Go

最近Go言語をよく触っています。触っているうちに、スライス、文字列、インターフェースなどの値がメモリ上でどう表現されているか知っておくと実装やデバッグ時に役立ちそうだなーと思うことが度々でてきました。そこでGo言語本体のソースコードを読みつつ…

StackdriverでGCP上のサービスを監視してみた

今関わっているサービスは、GCPのGoogle App Engine (GAE) とGoogle Container Engine (GKE) を使って開発しています。そのサービスの監視にStackdriver Monitoringを使ってみたときのメモです。 現在の印象としては、かなり面白い機能はあるけど、基本的に…

AWS LambdaでCI環境を作れるOSS「LambCI」試用メモ

これまでそれほど縁がなかったサーバレスですが、LambCIというOSSを使うとAWS LambdaでCI環境が作れるという話を聞き、ちょっと使ってみました。 GitHub - lambci/lambci: A continuous integration system built on AWS Lambda LambCIとは LambCIの紹介とし…

各EC2インスタンスに配置したSnortのアラートをELK (ElasticSearch, Logstash, Kibana) で監視する

EC2でネットワークのパケット監視をしたい場合、どうするのがいいんでしょうか。商用だとDeep SecurityとかAlert Logicとかありそうですが、値段もそれなりにします。なんとかOSSでできないかということで、ネットワーク型IDS/IPSであるSnortと、ELK (Elasti…

Site Reliability Engineering: How Google Runs Production Systems の読書メモ

SRE

最近Site Reliability Engineer(SRE)という職種やチームがよく話題になります。当初は、コードをよく書けるインフラエンジニアがふつうにやっていたことに名前を付けただけと思っていましたが、Googleの出しているSRE本(Site Reliability Engineering: Ho…

AWS WAFをバイパスしてSQLインジェクション攻撃をしてみる

最近はAWS WAFを触っています。こういう防御ツールは、やはり攻撃をどれぐらい防いでくれるか気になります。AWS WAFの場合、SQLインジェクション系の脆弱性を探ってくれるsqlmapをかけたところ、攻撃をブロックしてくれたという記事があります。 記事を読ん…

ApacheのDigest認証モジュールがどのようにnonceを生成しているか

前回の記事で、Digest認証がどうやって攻撃に対策しているかまとめました。いくつかの攻撃への対策として、nonceと呼ばれるワンタイムトークンが重要な役割を果たしていました。このnonceの生成方法は実装者に任せられているのですが、実際のWebサーバではど…

Digest認証はどのような脆弱性対策をしているか

最近CTFをやってみたのをきっかけに、Digest認証のRFC(RFC2617)を読みました。今どきDigest認証を使うことはあまりなさそうですが、RFCにはセキュリティ面で考慮したことが色々書かれていて勉強になりました。古典大事。というわけで、いくつかの攻撃手法…

Ansible Playbook向けデバッガをStrategy Pluginとして作り直しました

細々と開発を続けていたAnsible Playbook向けデバッガですが、ここ数ヶ月Ansible v2では動かない問題がありました。Ansible v2はPlaybookのレベルではv1との互換性を保持していますが、内部はがっつり書き換わっています。開発していたデバッガはAnsible内部…

JAWS DAYS 2016でAmazon Auroraの話を聞いてきた

AWS

3月12日に開催されたJAWS DAYS 2016に行ってきました。いくつかセッションを聞いてきたのですが、今回は[Deep Dive]Amazon Auroraセッションについて復習がてら書きます。 「クラウドソーシングLancers」を支えるAurora 【JAWS DAYS 2016】ランサーズを支え…

PackerのAnsible Provisioner利用時につまづいたところのメモ

PackerがリモートホストへのAnsible実行に対応しましたね!リリースノート。これまでもAnsible LocalというProvisionerはありましたが、構成管理の対象になるホストにAnsibleがインストールされてしまう問題がありました。今回追加されたAnsible Provisioner…

LVS(Linuxロードバランサ)のスケジューラの実装をみてみた

最近あるロードバランサにさわった時、参考のためにLVSのlc(Least-Connection)スケジューラの実装を確認していました。lcスケジューラは文字通り、接続数が一番少ないサーバに処理を割り振るアルゴリズムを実装しています。ただ実際の実装を見ると、もう少…

AWSサポートへの質問と回答のメモ(監視編)

AWS

前回に引き続き、昨年AWSサポートに質問した内容とその回答をまとめていきます。 CloudWatchのアラームがINSUFFICIENT_DATA状態になる条件について 背景と質問 CloudWatchのアラームは、OK、ALARM、INSUFFICIENT_DATAの3つの状態間を遷移します。このうち、…

AWSサポートへの質問と回答のメモ(データストア編)

AWS

あけましておめでとうございます。昨年もAWS上でインフラを構築・運用していく中で、AWSサポートにはずいぶんとお世話になりました。今回は年明け最初のブログということで、昨年AWSサポートに質問した内容とその回答をいくつかまとめてみたいと思います。 R…

海外のAnsible Meetupではどんなトークがあるのか調べてみた

先日Ansible Meetup in Tokyoが開催されました。僕は、Serverspecのテスト作成を補助するKirbyというツールについてLTしてきました。 発表資料: Serverspecを導入したものの放置気味な人へ Kirbyチュートリアル: Ansible + Serverspec + Kirbyによるサーバの…

Ansible + Serverspec + Kirbyによるサーバの自動構築

最近、Serverspecによるテストが不足している場合に指摘してくれるツールとして、Kirby(カービィ)というものを作りました。 GitHub Ansible MeetupのLTで紹介したときの資料 この記事では、Kirbyをちょっと試してみたいという方の参考になるように、Ansibl…