年中アイス

いろいろつらつら

韓国でSIMを購入してiPhoneを使う

韓国で現地SIMを買って、iPhone7 SIMフリー版に入れて過ごしたので、諸々メモです。 今回の要件は、以下です。 滞在期間が不定(これは十分には満たせませんでしたが) 普段使っているiPhoneを使いたい バッテリーの管理や通信の利便性を考慮してSIM自体を手に…

ECSのコンテナ間でNLBを経由した通信がつながらないことがある

gRPCで作った複数のサービスを、同じECS Cluster上で動かし、他のサービスを呼び出している時に、通信できなくなったことがあったので、その原因のメモです。 直接的な原因は、「NLBは、接続元と接続先が同一のIPへの通信ができない」という仕様に意図せず該…

hakoへのプルリク その2

前回に引き続きcontainer health checkの対応をプルリクしました。 github.com 設定追加するだけだし、簡単だーと思ってましたが、何箇所か指摘頂いたので、備忘録。 簡単かなーと思ってましたが、危うく変な挙動を仕込むところでした。 設定値はオプション…

Goでファイルの特定位置から読む

bashで組んでたログの検知スクリプトを、メンテナンス性と拡張性考えてGoで書き直すことにしました。 ファイルを定期的にtailして一定行数読み込んで処理する方式を取っていましたが、最後に読んだとこから後にしたいと調べていたら、Mackerelが似たようなこ…

elasticsearch bulkAPIで地味にはまる

elasticsearch 6.3が出たので、データ突っ込んで試してみるかと、index作ってデータを投入することに。 curl叩きながら、確認を進めてましたが、BulkAPIを使って、データを入れるときに、以下のようなエラーが出ました。 {"error":"ActionRequestValidationE…

hakoに機能追加

ECSを本格利用し始め、デプロイの管理にhakoを使うことにしました。最近ECSに機能追加があり、hako未対応のものを使いたくなったこともあり、hakoに追加してみることにしました。 作った機能 いくつか機能を追加して、プルリク投げてマージされたもの、プル…

API Gateway+LambdaのSlack通知APIをCloudFormationで作る

以前、三編に分けて、SlackへPostするWebAPIを、API Gateway+Lambda+node.jsで作りました。 AWS API Gateway+LambdaでSlackにメッセージをPOSTする(前編) - 年中アイス AWS API Gateway+LambdaでSlackにメッセージをPOSTする(中編) - 年中アイス AWS API Gat…

GoでJSONの数字/数値を扱う

JSONはデータの表現形式です。表現はできますが、項目があるかや、型が何であるかを検査する仕組みはありません。*1 そのため、システムや実装が分かれている場合に、数値を期待しているが、JSONの表現上、数値か数字かがずれていることが起き得ます。どうい…

Amazon echo (Alexa) がやってきた

スマートスピーカーが盛り上がってきてますが、Amazon echoの招待メールが来て、ポチって届きました。前の日にだいぶ購買欲落ちたってツイートしてたら、その翌日に招待メール来ました。招待メールから4日以内に注文しないと、購入権がなくなるので、注文し…

CircleCI 2.0でGoのテスト触ってみた

CI周りを触ってみている中で、Dockerイメージが動くようになったという、CircleCI 2.0が気になったので触ってみました。ちなみに1.0も触ったことはないです。参考で見たページだと、2.0はBeta版の時期もありましたが、今は正式にリリースされています。 circ…

docker for macのホストを指すドメイン名

手元のMacで開発をしていて、コンテナからホスト上で動作しているサーバに繋ぐ必要がありました。単純にlocalhostを使うとコンテナ自体を指してしまうので、それでは通信できません。ホストのIPをいちいち指定するのもなーと思っていたんですが、docker for …

格安Android(g06+)買ってみた

持っているガラケーのバッテリー寿命が来て、5分も通話すれば落ちるぐらいになってしまいました。*1もう一度ガラケーに変えるという手もあるんですが、契約もめんどいので、MNPして格安SIMに電話番号も移そうかなと検討しています。それで今回移行する端末候…

GoでJSON文字列を整形し直す

Goで、JSONを返すWebAPIを呼んだ時、普通は結果をプログラムで使うので、対応する構造体を用意して、json.Unmarshal()などで変換します。 しかし、JSONをそのまま整形だけして出力したい場合があります。例えば、WebAPIを呼んで、そのレスポンスを見せるだけ…

Apexでlambda slack POSTにGoを使う

以前のエントリで、Lambda Node.js 4.3を使ってSlackにPostしていました。 reiki4040.hatenablog.com 普段Javascriptは書かないので、Goで書いてApexでデプロイする版を試しました。 ApexはLambdaのコードを管理(?)、デプロイするツールで、PythonやNode.js…

AWS CodeBuildでGoプロジェクトをビルドする

AWS TokyoリージョンにもCodeBuild等のCodeシリーズ(?)一式揃い、使ってみようということで、まずはCodeBuildを試してみました。 公式にGoのサンプルはあるんですが、他のライブラリ使ってないhello worldなので、CodeBuildの説明だけという感じでした。vend…

DeploymentとServiceをyamlファイルで定義する

kubectlコマンドとオプションでnginxをminikube上で動かしました。 今回は、コマンドで起動内容を指定するのではなく、定義ファイルを使って動かすようにします。定義ファイルにすることでgitで管理できるようになります。 コマンドの振り返り 以下のように…

Linuxでメモリ使用量が増え続けた

AmazonLinux 2017.03にnginx乗せて稼働させてたら、なぜかメモリ使用量が、1日ちょっとで2GB後半にさしかかりました。cacheではなくusedを徐々に消費してたので、これは何かリークしてる疑い。 プロセス等を見てもメモリを使っているものもいないし、疑いの…

minikubeで自分の作ったimageを使う

前回minikubeの実行環境を作りました。公開されているnginxのimageを使いましたが、実際は自分でimageを作成し、それを実行させることがほとんどだと思います。minikubeはdockerを内包しているので、そこでdocker buildすればimageが登録され、使うことがで…

ローカルでkubernetesを動かせるminikubeを試す

kubernetes(以降k8s)は、GKE(GoogleContainerEngine)を使うのが簡単らしいですが、とりあえずローカル実行できる環境が欲しくなったりします。 minikubeは、VirtualBoxなどの上にk8sの環境を構築してくれるツールです。今回はとりあえずMac上にk8s環境を作り…

リリースを自動化したら思ったより楽になった

rnzooの0.5.0を開発していくにあたって、機能的な追加の他に、リリースの自動化を行いました。もともとビルド自体はbashスクリプトで自動化していて、dockerを使ったコンテナ上でのビルドとアーカイブファイルの作成を行っていました。 今回、devバージョン…

rnzoo 0.5.0開発中

EC2関連のコマンドをGoで実装したrnzooですが、0.5.0に向けて追加実装を色々やってます。 2017/03/23時点で0.5.0-dev5をリリースしています。devバージョンを使いたい場合は、以下で入ります。 brew tap reiki4040/rnzoo brew install --devel rnzoo 0.5.0の…

rnzooにinstance type変更機能を追加しました

rnzooのdevelopバージョンにec2typeというインスタンスタイプを変更するサブコマンドを追加しました。 # すでに入れている場合はtap不要 brew tap reiki4040/rnzoo # developバージョンの指定でインストール brew install rnzoo —devel AWSコンソールからや…

Pull Requestを自動で作成する

rnssh, rnzooの新しいバージョンを出そうとするときに、別リポジトリになっているhomebrew-rnssh, homebrew-rnzooを編集してpushするのが、地味に面倒だと思うようになり、他の自動化でも使えるかなと考えて、Pull Requestの自動作成をやってみるようにして…

golangのHTTPサーバを構成しているもの

golangのHTTPサーバは、少量のコードで動くものを作ることができます。内部的には、net/httpパッケージのServerとHandlerで構成されます。 Serverは名前の通り、Serveするもので、HTTPをどのネットワークソースで提供するかを定義するものです。 Handlerは、…

homebrewのformulaフォーマットをチェックする

ふとQiita見てたら、homebrewで配布するという記事に、auditでフォーマットチェックするといいよってコメントがついていました。 goでcliのコマンドを作ってhomebrewで使えるようにしてみた - Qiita rnzooもrnsshも数年前にpecoを参考に作っただけで、チェッ…

rnzoo 0.4.1をリリースしました

去年ふっとgolang 1.7に上げといたrnzooですが、先日v0.4.1をリリースしました。アップデートはhomebrewなら以下で。 brew update brew upgrade rnzoo 内容は、rnzoo ec2listに、-t, -tsvオプションを追加しました。rnzoo ec2listは、ec2のインスタンスリス…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(後編)

前編、中編にて、AWS API Gateway + Lambdaを使って、post-slack WebAPIを作り、テスト実行まで行いました。後編では、API keyの設定と実際に使えるようにデプロイをしていきます。 Slack Webhook URLは、それを知っていれば誰でも使うことができます。せっ…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(中編)

前回、Slack Incoming Webhookの作成と、それを使うLambdaを作成したので、続いてAWS API GatewayとLambdaを繋いでいきます。書いていたら思ったより長くなったので、API Gatewayのテスト実行までを中編にして、後編で、API keyの設定とデプロイを行います。…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(前編)

Slackはincoming webhooksがあり、POSTするだけで、簡単にメッセージを送ることができます。 スクリプトで直接Incoming Webhook使ってもいいんですが、これ自体は別に認証も何もないので、誰かが知ってしまうと、好き放題投稿できます。そんな時に入れ替えた…

iPhone7に変えました

こっちにも書きましたが、2016年末に、iPhone5sからiPhone7に変えました。決め手はやっぱりApplePayでのSuica(後述しますが、停滞中)で、副産物としてQuicPay(ポストペイ型の電子マネー)が便利という気づきがありました。 値段 AppleStoreOnline SIMフリー…