電気ひつじ牧場

技術メモ

ECSヘルスチェックベストプラクティス

AWS

ECSの文脈でヘルスチェックといえば、次の2通りが挙げられる。 ELBのターゲットグループで指定するヘルスチェック タスク定義のコンテナ定義パラメータで指定するヘルスチェック 1はECSではなくELBの機能なので、これら2つを組み合わせて使う場合に限定され…

ISUCON11のベンチマーカーを高速化

Go

ISUCON12に向けて過去問をやっていたら、ISUCON11のベンチマーカーの実行に時間がかかっていたので高速化してみました。

TerraformerでNewRelicのリソースをTerraformに取り込めるようにした

あるプロダクトの監視にはNewRelicを使っているが、手作業で作られたNewRelicのアラートが大量に放置されていた。 そのため、どのアラートが作成されているのかがわからない、不要なものもわからない、レビューがやりにくいといった問題があった。 そこでTer…

AWS SESで信頼性の高いメール送信(SPF, DKIM, DMARC) with Terraform

メール認証の仕組みと、SESでのTerraformを使った設定方法について紹介します。

バッチ処理の基盤をEC2からECSに移行する

AWS

バッチ処理基盤をEC2からECSへと移行させるにあたって考えたこと、Terraformでの構築方法をメモしておきます。本稿で単にECSと書いた場合は全てECS Fargateを指しています。

【zsh】pure-promptをM1 macで使う

zshのプロンプトをいい感じにするのに普段pureを使っている。 しかし新調したM1 macbookだとインストールガイドの通りにやっても上手く読み込んでくれなかった

CircleCIのcheckoutステップで失敗する

Git

CircleCIでcheckoutしたらいきなりこんなエラーが出てきた。 error cloning repository: unknown error: ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type.

外部のプライベートリポジトリへの依存がある時にCircleCIでビルドする

組織内部で管理しているプライベートリポジトリのライブラリなどを使いたい時は、CircleCIがそのリポジトリに対するアクセス権限を持っている必要があります。普通にプロジェクトをセットアップした場合、CCIのExecutorはそのプロジェクトに対するアクセス権…

JSONを書くのが1ミリくらい楽になるシンタックスチェッカーを書いた

Go

JSONのチェックくらいjqでやればええやろ、そう思っていた時期が私にもありました。

cloudfrontでログバケットにログが流れてこない

cloudfrontでコンテンツ配信をする際、Terraformであれば次のようにlogging_configを指定することでアクセスログを残すことができる。

isucon11予選に参戦してきました

「何もしてないのに壊れました」というふざけたチーム名で会社の同期(kypくん、shikiさん)とisucon11の予選に参戦しました。 使用言語はGo、結果は42525点、93位/約600チームで予選敗退でした。 前日までにやったこと 当日 -20分 0分 +30分 +2時間 +4時間 +6…

Post: "https://cognito-idp.ap-northeast-1.amazonaws.com/": x509: certificate signed by unknown authority" となるエラー

概要 Post \"https://cognito-idp.ap-northeast-1.amazonaws.com/\": x509: certificate signed by unknown authority" プログラムからAWSのリソース(今回はcognito)にアクセスしようとしたときにこのようなエラーになった。 利用していたDockerfileは次の…

Software Design誌に約半年間連載を書いていました

Twitterなどで散々言っていましたが、今年の1月〜7月号までの7回、技術評論社さんのSoftware Designに連載記事を寄稿していました。自分の中では今年上半期のビッグイベントだったので振り返ってみます。

DNSレコードを設定した後の確認

結論 www.blacksheep.link IN A 13.231.154.170のようなレコードを権威サーバに設定したとする。

【Terraform】CIでinitした時にdoesn't match any of the checksums previously recorded in the dependency lock fileとなる

codebuildでterraform initをした時に下記のようなエラーが出力されて落ちた Initializing provider plugins... - Reusing previous version of hashicorp/aws from the dependency lock file - Installing hashicorp/aws v3.42.0... Error: Failed to insta…

【Elasticsearch】時間経過でインデックスを削除・設定変更

ログデータにはある種の鮮度のようなものがあります。一般的に1年前のログと2日前のログだと、おそらく後者の方が取り出される頻度も重要度も大きいため、より早く、確実に取得したいと考えるでしょう。 そのため、これらのデータを同様のストレージに同様の…

シェル色付け対応早見表

ターミナルに文字を出力する際に $ echo -e "\033[<パラメータ>m <表示する文字> \033[0m" とすることでパラメータに応じた文字色、背景色をつけることができる。パラメータは;で区切ることで複数種類指定することが可能。

CircleCIでyarn installした時に出る"EPERM: operation not permitted, copyfile ~"みたいなエラー

CircleCIでnodeアプリケーションのイメージをビルドしている時にエラーが出てfailした時の対処法メモ

vectorでelasticsearchにEchoのログを収集してみる

この記事について golangのechoが吐き出すログをvectorで収集し、opendistro版 Elasticsearchに収集、可視化する方法についてメモ

技術書典10で「Rustで始めるTCP自作入門」を頒布してます

どんな本か 最終的に出来上がるもの 対象読者について 各章について 1章 2章 3章 4章 頒布先リンク 書籍で解説しているソースコード おわりに

Rustでbrainf*ckインタプリタ作ってみた

この記事は,HUITアドベントカレンダー2020の20日目の記事です.一昨年はスクリプト言語「Sheep」を作ってみた - Qiitaを書きました.去年は卒論で戦死してたのでアドカレがあったのかどうかも知らないです().

Rust エラー処理2020

このエントリは,Rust 3 Advent Calendar 2020の8日目の記事です.

Gitでコミットを分割する

Git

ハッシュがa6e0229のコミットは関係ない2ファイルを同時にコミットしており,これを1ファイルずつのコミットに分割したいとする.コミットログはこのようになっている.

旅行記【箱根・下部温泉編】

8~10月の間ずっとインターンやら何やらをしていて休みという休みがなかったので,3密に気を付けながらgotoしてきました.自分が5年後くらいに見返して懐かしむ用の記事なので内容は期待しないでください. 前回↓ cha-shu00.hatenablog.com

はてなのサマーインターン2020に参加してきた

8/24~8/28の5日間,Webに関する豊富な講義と京都観光で有名なはてなのインターンに参加してきました.

GoアプリケーションからAWS SecretsManagerの値を取得

EC2にデプロイされたGoのアプリケーションからDBのアクセス情報を受け取って使うときのメモ

ドメインと証明書を無料で取得

freenomでドメインを,let's encryptで証明書を取得します.

GCP: googleapi: Error 400: Role roles/** is not supported for this resource., badRequest

GCP

terraformでサービスアカウント作って,IAMロールを付与しようとしたときにこうなった. 付与しようとしたのはroles/cloudsql.adminなど,ロールについてに掲載されているもの.

TerraformでGKEにクラスタを構築+Goのアプリケーションデプロイ

InfraStudyのIaC回に触発されてTerraformを触ったので構築めも

Dockerのマルチステージビルドで,Alpine Linuxを使った時にno such file or directoryになる

状況 GoのプログラムをDockerのマルチステージビルドを利用してビルドして,バイナリ実行用のイメージを作成することを考える.この時,バイナリ実行用のコンテナイメージのベースとしてAlpineを指定し,そのイメージをdocker runした際に次のようなエラーが…