0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto(@kazuma_dev)です!
自動デプロイ(CodeDeploy)の開始と終了をSNS / Chatbot
でSlack通知
させる方法です。
0-1. 前回記事
- 【AWS】LaravelアプリをEC2デプロイ【まとめ編】
- 【AWS】LaravelアプリをEC2デプロイ①【CloudFormation / EC2 / RDS編】
- 【AWS】LaravelアプリをEC2デプロイ②【Route53編】
- 【AWS】LaravelアプリをEC2デプロイ③【ACM / ELB編】
- 【AWS】LaravelアプリをEC2デプロイ④【CircleCI / CodeDeploy編】
0-2. 全体の流れ
0-3. 本記事の対象者
- CodeDeployの自動デプロイ開始と終了をSlack通知させたい
0-4. 事前準備
- AWSアカウント作成済み
- Slackアカウント作成済み
- リージョンはアジアパシフィック(東京)ap-northeast-1
-
grfl
やhoge
はサンプル名なので適宜変更して下さい
0-5. 要件
- Slackワークペース作成
- CodeDeployで通知ルールの作成
- Chatbotでチャネルの作成
0-6. 本番環境
ツール | バージョン |
---|---|
OS | Amazon Linux 2 |
nginx | 1.12 |
PHP | 7.4.28 |
Laravel | 6.20.44 |
MySQL | 5.7.37 |
Composer | 1.10.26 |
Node.js | 13.14.0 |
0-7. AWS構成図
1. Slack
2. SNS
3. Chatbot
3-1. チャネル作成
3-2. service-linked role作成
- 『AWS ChatbotはSlackのチャネル設定を作成できません。』のエラーが発生するため、Chatbotに
iam:CreateServiceLinkedRole
のインラインポリシーを作成
AWS Chatbot was unable to create the service-linked role for account xxxxxxxxxxxx. Rate exceeded (Service: AmazonIdentityManagement; Status Code: 400; Error Code: Throttling; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Proxy: null). Learn more https://docs.aws.amazon.com/chatbot/latest/adminguide/using-service-linked-roles.html.
JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole",
"iam:UpdateRoleDescription",
"iam:DeleteServiceLinkedRole",
"iam:GetServiceLinkedRoleDeletionStatus"
],
"Resource": "*"
}
]
}
- 『Slackチャネルを設定』に戻って再び『設定』を押下してみると完了
3-3. 自動デプロイ実行
補足
開発環境(FW/ツールのバージョンなど)
ツール | バージョン |
---|---|
Vue.js | 2.6.14 |
jQuery | 3.4.1 |
PHP | 7.4.1 |
Laravel | 6.20.43 |
MySQL | 5.7.36 |
Nginx | 1.18.0 |
Composer | 2.0.14 |
npm | 6.14.6 |
Git | 2.33.1 |
Docker | 20.10.11 |
docker-compose | v2.2.1 |
PHPUnit | 8.0 |
CircleCI | 2.1 |
heroku | 7.59.4 |
MacBook Air | M1,2020 |
macOS | Monterey 12.3 |
Homebrew | 3.3.8 |
ディレクトリ構造
【ルートディレクトリ】
├─ .circleci
│ └─ config.yml
├─ aws / CloudFormation
│ └─ ec2.yml
├─ docker
│ └─ mysql
│ └─ nginx
│ └─ php
│ └─ phpmyadmin
├─ src
│ └─ 【Laravelのパッケージ】
└─ docker-compose.yml
Reference
次回記事
- 【AWS】LaravelアプリをEC2デプロイ⑥【S3編】
- 【AWS】LaravelアプリをEC2デプロイ⑦【API編】
- 【AWS】お役立ちリンク集【随時更新】