電気ひつじ牧場

技術メモ

外部のプライベートリポジトリへの依存がある時に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" ]

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

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

続きを読む