- .envに値をsetする
$ cp .env.example .env
注意
APP_NAME 必ず対象アプリケーションのリポジトリ名にすること(小文字ハイフンつなぎ)
DB_MASTER_NAME ハイフンは使用不可
DB_MASTER_PASS ハイフンは使用不可
DB_NAME 文字列+数字にすること (ハイフン,文字列のみは使用不可)
LOKI_USER なくても動く
LOKI_PASS なくても動く
- public キーをセットする
$ vim src/dev/ec2-key.pub
$ vim src/prod/ec2-key.pub
- s3-tf-bucket の作成
$ make s3_tfbackend # Check TF_STATE_BUCKET in Makefile
init, apply時にtf.stateが同期されるようになる(同時作業にだけ注意)
- make ecr registry
$ make ecr-repo
- Terraform の読み込みと環境の作成
$ make apply
> Apply complete! Resources: 154 added, 1 changed, 0 destroyed!
- ssmに登録するために 構築したAWSの各種リソースの値を出力をする
$ make outputs
> DB_HOST末尾のportだけ削除(:5432 の削除)
- .env.github に保存される環境変数をアプリケーション側のSECRETにセットする
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_ACCOUNT_ID *awsにlogin後、右上の画面を確認すると以下画像のように見れる
SUBNETS *outputsで確認後 [] 内の内容のみを登録
SECURITY_GROUPS *outputsで確認して登録
LOKI_ID *コメントアウトで不要
LOKI_SECRET *コメントアウトで不要
> SUBNETS の [] は不要で、 "Aaa","Bbb","Ccc" のみをコピペする
> SECURITY_GROUPS はそのまま
-
.env にある環境変数に値をセットする
-
SSM (パラメーターストア)に値の登録
# .env.production にあるvalueを登録 or 上書き
$ make ssm-store
- ドメインをRoute53に登録していないと怒られるので注意
- laravel_backend のgithub_iam に対象のアプリケーションリポジトリ名を追加してください
- 本番運用するならaurora のsnapshot を false にすること
フロント側
- 必ずフロントエンドの locals = app_name -> フロント側のリポジトリ名 にしてください
- 先にRoute53にホストゾーンを設定してください
- frontend.tfのlocals内に必ずドメイン名を記載してください
Task-definitionの環境の参照先を注意する
# SSM に値がある場合
{
"name": "AWS_ACCESS_KEY_ID",
"valueFrom": "/SED_TARGET_APP_NAME/ACCESS_KEY_ID"
},
# 登録していない場合
{
"name": "APP_URL",
"value": "https://snails8.site"
},
Q how to connect ec2 ?
$ ssh -i ~/.ssh/秘密鍵 ec2-user@IPアドレス
Q. RDS instance failed to create please check .env value
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html
・1〜16文字の英数字とアンダースコアを含めることができます。
・その最初の文字は文字でなければなりません。
・データベースエンジンによって予約された単語にすることはできません。
✕: ハイフン(-), ✕:誰もが使いそうなusername=admin (すでに予約されているため)
github-actionsでアプリケーションのdeployをしているため、task-definition が二重管理になってしまっている。
外部デプロイを利用すれば回避できるが以下の問題がある
対応策
・AWS Copilot を使用 https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/getting-started-aws-copilot-cli.html
・パイプラインの使用 https://zenn.dev/reireias/articles/8e987af2762eaa
理想 github-actions にCodePipelineをかませる
.
├── Makefile
├── setting # command etc..
│ ├── bin
│ │ └── sessionmanager-bundle
│ │ └── bin
│ └── template
└── src
├── _module # common use
│ ├── acm
│ ├── alb
│ ├── aurora
│ ├── cloudmap
│ ├── ec2
│ ├── ecs
│ │ ├── cluster
│ │ ├── frontend
│ │ │ └── json
│ │ └── laravel_backend
│ │ ├── app
│ │ └── worker
│ ├── elasticache
│ ├── iam
│ │ └── github_oidc
│ ├── network
│ ├── rds
│ ├── security_group
│ │ ├── frontend
│ │ └── laravel_backend
│ ├── ses
│ └── waf
├── dev # dev env
└── prod # prod env