電気ひつじ牧場

技術メモ

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

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

そこでTerraformerを使ってそれらを取り込みコード化することができたので、方法を記載する。

続きを読む

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

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はそのプロジェクトに対するアクセス権限しか持っていないため、別のリポジトリへのアクセスは通常拒否されます。

続きを読む

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

「何もしてないのに壊れました」というふざけたチーム名で会社の同期(kypくん、shikiさん)とisucon11の予選に参戦しました。 使用言語はGo、結果は42525点、93位/約600チームで予選敗退でした。

  • 前日までにやったこと
  • 当日
    • -20分
    • 0分
    • +30分
    • +2時間
    • +4時間
    • +6時間
    • +7時間
    • +8.5時間
  • 競技を終えて
  • 追記
続きを読む

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は次の通り。Golangのアプリケーションをマルチステージビルドして、実行イメージとしてはDebian slimを利用した。

FROM golang:1.16 AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY app ./app
COPY main.go ./
RUN go build -ldflags="-w -s" -o myapp

FROM debian:10-slim
COPY --from=builder /src/myapp .
EXPOSE 8080
CMD [ "./myapp" ]

原因

なんとなくAWSのロールやポリシー周りのミスかと思いきやそうではなく、証明書にまつわるエラーだった。AWS SDKAPIリクエストを投げるときにTLSを利用するが、debian-slimにはルート証明書が含まれていないため、この通信が失敗していた。

解決方法

ca-certificateパッケージをインストールする。 Dockerfileはこうなる。

FROM golang:1.16 AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY app ./app
COPY main.go ./
RUN go build -ldflags="-w -s" -o myapp

FROM debian:10-slim
RUN apt update && apt install -y ca-certificates   # 追記
COPY --from=builder /src/myapp .
EXPOSE 8080
CMD [ "./myapp" ]