電気ひつじ牧場

技術メモと日常のあれこれ

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" ]

【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 install provider

Error while installing hashicorp/aws v3.42.0: the current package for
registry.terraform.io/hashicorp/aws 3.42.0 doesn't match any of the checksums
previously recorded in the dependency lock file
続きを読む

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

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

そのため、これらのデータを同様のストレージに同様の構成で格納しておくのはコスト面であまり良いとは言えません。1年前のログに対して3日前のログと同様の取得速度と信頼性を求めない場合、より安価なストレージに移動させる、あるいはレプリカ数を減らすなどといった変更を行うことで、インフラのコストを削減することが可能になります。

Elasticsearchにはこのように自動的にインデックスのライフサイクルを管理し、設定を変更する機能が備わっています。

本稿ではAWS Elasticsearch Service(AES)について述べます。AESで利用できるインデックスライフサイクル管理機能にはISMという名前がついています。

続きを読む

シェル色付け対応早見表

ターミナルに文字を出力する際に

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

続きを読む