This repository is a sample using Amplify Gen 2, NestJS and Prisma.
sudo apt update
sudo apt install -y default-mysql-client
SHOW TABLES;
# Run app
npx nest start hoge
# Add new terminal
curl -i http://localhost:3000/hoge
# Run app
npx nest start todo
# POST
# Create
curl -i -X POST -H 'Content-Type: application/json' -d '{"content" : "apple"}' localhost:3000/todo
# GET
# Findone
curl -i -X GET localhost:3000/todo/1
node ➜ /workspaces/buttermilk-backend-app (main) $ curl -i -X POST -H 'Content-Type: application/json' -d '{"content" : "apple"}' localhost:3000/todo
HTTP/1.1 201 Created
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 26
ETag: W/"1a-bGdeTm2pUnJ8LzJ94glaBxzKJVI"
Date: Wed, 05 Jun 2024 04:32:24 GMT
Connection: keep-alive
Keep-Alive: timeout=5
{"id":1,"content":"apple"}
node ➜ /workspaces/buttermilk-backend-app (main) $ curl -i -X GET localhost:3000/todo/1
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 26
ETag: W/"1a-bGdeTm2pUnJ8LzJ94glaBxzKJVI"
Date: Wed, 05 Jun 2024 04:32:30 GMT
Connection: keep-alive
Keep-Alive: timeout=5
node ➜ /workspaces/buttermilk-backend-app (main)
npm install prisma
npx prisma init
npx prisma migrate dev --name init
node ➜ /workspaces/buttermilk-backend-app (main) $ npx prisma migrate dev --name init
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "kbpAmpxDb" at "amplify-buttermilkbackendap-kbprdsinstance0000-yyyy.xxxx.ap-northeast-1.rds.amazonaws.com:3306"
Applying migration `20240605043023_init`
The following migration(s) have been created and applied from new schema changes:
migrations/
└─ 20240605043023_init/
└─ migration.sql
Your database is now in sync with your schema.
✔ Generated Prisma Client (v5.15.0) to ./node_modules/@prisma/client in 78ms
node ➜ /workspaces/buttermilk-backend-app (main)
export MY_PROFILE_NAME=""
echo $MY_PROFILE_NAME
aws configure sso
# Set AWS environment variables
vi ~/.aws/credentials
cat ~/.aws/credentials
# Get profile-name from AWS access portal
cat ~/.aws/config
# Set secrets
npx ampx sandbox secret set BACKEND_API_TAG --profile ${MY_PROFILE_NAME}
npx ampx sandbox secret list --profile ${MY_PROFILE_NAME}
# Run sandbox
npx ampx sandbox --profile ${MY_PROFILE_NAME} --identifier xxxx
# Delete sandbox
npx ampx sandbox delete --profile ${MY_PROFILE_NAME} --identifier xxxx
node ➜ /workspaces/buttermilk-backend-app (main) $ npx ampx sandbox --profile hoge-9999
Amplify Sandbox
Identifier: node
Stack: amplify-buttermilkbackendapp-node-sandbox-xxxx
node ➜ /workspaces/buttermilk-backend-app (main) $ npx nest start todo
webpack 5.90.1 compiled successfully in 22426 ms
[Nest] 10689 - 06/05/2024, 4:32:11 AM LOG [NestFactory] Starting Nest application...
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [InstanceLoader] AppModule dependencies initialized +61ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [InstanceLoader] HogeModule dependencies initialized +1ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [InstanceLoader] TodoModule dependencies initialized +0ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RoutesResolver] HogeController {/hoge}: +45ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RouterExplorer] Mapped {/hoge, GET} route +3ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RoutesResolver] TodoController {/todo}: +0ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RouterExplorer] Mapped {/todo, POST} route +1ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RouterExplorer] Mapped {/todo, GET} route +1ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RouterExplorer] Mapped {/todo/:id, GET} route +1ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RouterExplorer] Mapped {/todo/:id, PATCH} route +1ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [RouterExplorer] Mapped {/todo/:id, DELETE} route +0ms
[Nest] 10689 - 06/05/2024, 4:32:12 AM LOG [NestApplication] Nest application successfully started +462ms
# README at : https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/create-container-image.html#create-container-image-create-image
export AWS_ACCOUNT_ID=""
export AWS_DEFAULT_REGION="ap-northeast-1"
echo $AWS_ACCOUNT_ID
echo $AWS_DEFAULT_REGION
docker tag hello-world ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/hello-repository
aws ecr get-login-password --region ${AWS_DEFAULT_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com
docker push ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/hello-repository
Footnotes
-
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2-readme.html ↩
-
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_rds-readme.html ↩
-
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecr-readme.html ↩
-
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecs-readme.html ↩