見出し画像

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を整備

https://ap-northeast-1.console.aws.amazon.com/codesuite/codepipeline/pipeline/new?region=ap-northeast-1

とかから。


custom pipelineからやる

テンプレートを使ってビルドするようにしてみたいがそういうのは慣れてからやるもんだというのが落とし穴ではある。さて、パイプラインの名前を適当に付けよう、SimpleCloudFormationTestとか

ソースステージ

この辺は過去のドキュメントを見るなりしてサクっと設定して欲しい

ビルドステージ

Commandsを選択し

bash deploy.sh

ってことでdeploy.shを呼び出す。deploy.shは今はまだ追加してないから後から書く

デプロイステージはスキップ

これでpipelineが作成され、進行する。
ただし進行すると当然、ファイルが何も揃ってない為、エラーになる。

deploy.shがみつからないエラーとか


これは予定通り。

必要なものを揃えて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

いいなと思ったら応援しよう!