CloudFormationとCodePipeline
gitlabとCodePipelineの連携で何とかしてみる
これは別にgitlabである必要はないけど例として
プロジェクトを作りcloneしてきた例
% git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
この時前回作成したCloudFormationのスタックは削除することにした(削除するとvpcも削除される)。
simple-vpc.yaml(network.yaml)の作り直し
というかsimple-vpc.yamlというファイル名は流石にvpcしか作れなそうでイカツイのでnetwork.yaml としてやり直す事とする
AWSTemplateFormatVersion: "2010-09-09"
Description: "CloudFormation Template for VPC and Networking Components"
Resources:
MyVPC:
Type: "AWS::EC2::VPC"
Properties:
CidrBlock: "10.0.0.0/16"
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: "Name"
Value: "MyVPC"
git add network.yaml
git commit -m "Add initial VPC definition (work in progress)"
AWS CodePipelineを整備
とかから。
テンプレートを使ってビルドするようにしてみたいがそういうのは慣れてからやるもんだというのが落とし穴ではある。さて、パイプラインの名前を適当に付けよう、SimpleCloudFormationTestとか
ソースステージ
この辺は過去のドキュメントを見るなりしてサクっと設定して欲しい
ビルドステージ
Commandsを選択し
bash deploy.sh
ってことでdeploy.shを呼び出す。deploy.shは今はまだ追加してないから後から書く
デプロイステージはスキップ
これでpipelineが作成され、進行する。
ただし進行すると当然、ファイルが何も揃ってない為、エラーになる。
これは予定通り。
必要なものを揃えてpushする
deploy.sh
#!/bin/bash
echo "Starting CloudFormation operation..."
# 必要な変数を定義
STACK_NAME="SimpleVPCStack"
REGION="ap-northeast-1"
TEMPLATE_FILE="network.yaml"
# スタックの存在確認
if aws cloudformation describe-stacks --stack-name $STACK_NAME --region $REGION; then
echo "Stack exists. Updating stack..."
aws cloudformation update-stack \
--stack-name $STACK_NAME \
--region $REGION \
--template-body file://$TEMPLATE_FILE
else
echo "Stack does not exist. Creating stack..."
aws cloudformation create-stack \
--stack-name $STACK_NAME \
--region $REGION \
--template-body file://$TEMPLATE_FILE
fi
echo "CloudFormation operation completed."
とか作って、add&commitする
git add deploy.sh
git commit -m "add deploy.sh"
でpush
git push
すると
当該vpcが作成されている事を確認
まとめ
このようにシンプルなdeploy.shスクリプトでgit経由でCloudFormationできるようになったから、次回はnetworkをもう少しカスタマイズしていくってことになるね。そしてネットワークだけ作っても意味ないからどんどん広げていく事になる。
#aws #aws初心者 #aws学習 #CloudFormation #cloudformation #CodePipeline #CodeBuild