shuntaka9576 / go_api_sqlite

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

go_api_sqlite with Litestream on AppRunner

はじめに

本リポジトリは、GoのREST APIアプリケーションをAppRunner上にホスティングしつつ、LitestreamでSQLite3のデータをS3にレプリケートするサンプルコードです。

GoのREST APIアプリは、詳解Go言語Webアプリケーション開発で実装するbudougumi0617/go_todo_appをベースにSQLiteに差し替えています。

AWS環境作成手順

構成

サービス名 物理名 用途 スタック名
ECR go-api-sqlite AppRunnerに載せるコンテナイメージレジストリ dev-go-api-sqlite-ecr
S3 (dev)-go-api-sqlite-replica-(アカウントID) Litestreamのレプリカ先S3 dev-go-api-sqlite-bucket
App Runner dev-go-api-sqlite-app-runner TODO dev-go-api-sqlite-app-runner

ECR作成

CDKディレクトリへcd

cd ./_cdk
yarn cdk deploy -c stageName=dev dev-go-api-sqlite-ecr

コンテナイメージ作成とECR登録

make build

# ログイン(要assume-role)
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin <アカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com
# latestタグうち
docker tag go-api-sqlite:latest <アカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/go-api-sqlite:latest
# コンテナをECRへpush
docker push <アカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/go-api-sqlite:latest

AppRunner with S3を作成

# 依存でS3もデプロイされる
yarn cdk deploy -c stageName=dev dev-go-api-sqlite-app-runner

Goアプリデバッグ

API一覧

API PATH 用途
POST /tasks タスク作成
GET /tasks タスク一覧取得

環境変数

変数名 デフォルト値 説明
PORT 8080 REST APIの待ち受けポート
DB_PATH todo.db SQLite3のDBファイルパス

コマンド

go run .
curl -XPOST localhost:8080/tasks -d '{"title": "test1"}'
curl -XGET localhost:8080/tasks

About


Languages

Language:Go 67.6%Language:TypeScript 24.5%Language:Dockerfile 3.2%Language:Makefile 2.2%Language:Shell 1.6%Language:JavaScript 0.9%