github action CD to AWS ECS ECR part 1

·

1 min read

建立 github action, to aws ECR, ECS

建立 ECR entry.

建立 ECS Cluster.

建立 github action,

我照著這篇來建立我的 ECS: https://blog.devgenius.io/host-any-app-to-aws-and-github-using-continuous-deployment-ci-cd-pipeline-step-by-step-d4150dbee2e8

照著做就可以看到結果,可以在 container ip:80 看到字樣跑出來。 但修改一些字樣, commit & push 跑一次 workflow 之後,沒有看到字樣更新。 錯誤訊息好像有說到「沒有 instance 有足夠 cpu」 我似乎是修掉這兩個地方,就可以順利的更新修改了:

  1. task: Task CPU (unit)=1 vCPU - -> 2 vcpu
  2. service: Minimum healthy percent: 100 - -> 0

再來試試看到底是哪一條真的造成影響。

code example

我把 react 版本改成為自己需要的 fastapi 版本,code 放在 gibhut 一個 branch: github.com/sunpochin/fastapi-ecommerce/tree..

應該是照著參數寫好:aws.yml 裡面的 cluster, task, service, push上去之後就可以看到順利跑出來。


SQLite 換成 MySQL

AWS Secret

加上 MySQL, 要把 MySQL URI 寫到 AWS environment variables 而不是在 codes 裡面,參考: stackoverflow.com/questions/43330278/how-to.. Secret Manager:直接輸出得到的會是

{\"DB_HOST\":\"mysql://xxx:ooo\"}

它似乎不是一個 python dict, 直接 .get 不出來,要用以下方法,似乎要安裝一些套件,還有點麻煩: docs.aws.amazon.com/secretsmanager/latest/u.. hands-on.cloud/working-with-secrets-manager..

Parameter Store

於是我選擇用 Parameter Store, 用這兩篇的方法來設定跟得到: medium.com/@giritech7/aws-set-environment-v.. shazi.info/aws-%E5%88%A9%E7%94%A8-parameter.. parameter寫法: "secrets": [ { "valueFrom": "arn:aws:ssm:ap-southeast-1:789819000571:parameter/DB_HOST", "name": "DB_HOST" } ],

Trivia:

DB_HOST 我原本粗心寫錯 DBHOST,也漏掉了 mysql+pymysql字串,這些小地方要注意。 連線字串應該是像這樣: mysql+pymysql://[user]:[password]@[endpoint]:3306/testdb

加上 https, SSL, custom domain name.

load balancer: stackoverflow.com/questions/5309910/https-s.. dev.to/ryands17/deploy-a-node-app-to-aws-ec.. bogotobogo.com/DevOps/AWS/aws-ELB-ALB-Appli.. stackoverflow.com/questions/63440909/make-a.. youtube.com/watch?v=TsVO14-lqp0