Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go初心者のクラウドエンジニアが、デプロイを通して旨味を知っていく話

穴田竜大
November 10, 2026

 Go初心者のクラウドエンジニアが、デプロイを通して旨味を知っていく話

GoをAWSにデプロイするときにどんなことが気になるのか?という観点をもとに、Goの良さを学んでいきます

穴田竜大

November 10, 2026

Transcript

45 slides
  1. 手元と同じ arm64のEC2向けにビルドする CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \ go build -o probe-arm64

    ./cmd/probe • GOOS=linux:Linux向けのバイナリを作る • GOARCH=arm64:Arm64のCPU向けに作る © 2026 Anti-Pattern Inc. 11
  2. go buildで何をどこへ出力するか指定する CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \ go build -o probe-arm64

    ./cmd/probe • go build:ソースと依存をビルドする • -o probe-arm64:作る実行ファイルの名前 • ./cmd/probe:ビルドするパッケージの場所 © 2026 Anti-Pattern Inc. 12
  3. x86_64のEC2でも動く? CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ go build -o probe-amd64 ./cmd/probe

    • GOARCH=amd64に変えてx86_64向けにビルド • 出力ファイル名もprobe-amd64へ変更 © 2026 Anti-Pattern Inc. 14
  4. ビルド用と実行用のステージを分ける FROM golang:1.27.3 AS build # ソースと依存を用意してビルド RUN CGO_ENABLED=0 GOOS=linux

    GOARCH=arm64 \ go build -o /out/server ./cmd/server FROM gcr.io/distroless/static-debian13:nonroot COPY --from=build /out/server /server ENTRYPOINT ["/server"] ① 前半:コンパイラ・ソースを使ってビルド ② 後半:できたバイナリだけをCOPYして実行 © 2026 Anti-Pattern Inc. 24
  5. Lambda向けにビルドする CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \ go build -tags lambda.norpc \

    -o bootstrap ./cmd/lambda • • • Linux・arm64のLambda向けにビルドする -o bootstrap:Lambdaの仕様で決まっている名前 -tags lambda.norpc:不要な旧方式の処理を除く © 2026 Anti-Pattern Inc. 36
  6. LambdaへZIPを送り関数を作成する aws lambda create-function \ --function-name "$FUNCTION" \ Lambda関数の名前 --runtime

    provided.al2023 \ OS環境(AL2023) --architectures arm64 \ CPUの種類(arm64) --handler bootstrap \ Goではbootstrapを起動 --role "$ROLE_ARN" \ IAMロール(AWSへの権限) --zip-file fileb://function.zip 送るZIP(バイナリ読込) © 2026 Anti-Pattern Inc. 38
  7. LambdaをCLIから呼び結果を確認する aws lambda invoke \ --function-name "$FUNCTION" result.json cat result.json

    result.jsonに実行結果を保存しcatで内容を表示する 実際の応答(抜粋) { } "url": "https://go.dev", "architecture": "arm64", "status": 200 © 2026 Anti-Pattern Inc. 39
  8. 関数URLを作るとブラウザからも呼べる aws lambda create-function-url-config \ --function-name "$FUNCTION" \ --auth-type NONE

    • • • 関数ごとに専用のHTTPS URLを発行できる NONE:今回はログインせず呼べる設定で検証 URL作成に加え公開用の呼び出し権限も設定する © 2026 Anti-Pattern Inc. 40
  9. Goの更新はビルドと ZIPの差し替えで済む Node.jsのメジャー更新 1. 2. 3. 4. ビルド・テスト ZIPを更新 Lambdaのランタイムを変更

    更新後の動作確認 © 2026 Anti-Pattern Inc. Goのバージョン更新 1. 2. 3. ビルド・テスト ZIPを更新 更新後の動作確認 43

More Decks by 穴田竜大

Other Decks in Technology