初めに
ローカル環境からGit pushをトリガーにCloudFormationにもスタックを作成するワークフローを使用してCFnの自動デプロイを試してみます。
リポジトリ構成
├── .github
│ └── workflows
│ └── cfn-deploy.yml
└── template.yml
※ファイルの置き場所を間違うとGithub Actionsがトリガーされないです
流れ
- プライベートリポジトリの作成
- AWSの認証情報を作成したリポジトリのシークレットに追加
- GitHubにローカルからpush
- pushをトリガーにGitHub Actionsが動く
- CFnスタックを自動で作成
CFnテンプレート
使用するテンプレートは以前作成した冗長VPCのテンプレートです。
冗長構成WebサーバーのCloudFormationテンプレートを作成、デプロイ
ワークフロー
使用するワークフローは下記のものです。
name: Deploy CFn Stack
on: push
jobs:
deploy-cfn:
name: Deploy CFn Stack to AWS
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Deploy CFn Stack
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: test-cfn-stack
template: ./template.yml
no-fail-on-empty-changeset: "1"
ワークフローの詳細
on: push
- プッシュイベントが発生するとトリガーされる
jobs:
deploy-cfn:
name: Deploy CFn Stack to AWS
runs-on: ubuntu-latest
- ジョブの実行名と実行環境
- name: Checkout
uses: actions/checkout@v2
- actions/checkoutを使用してリポジトリのコードをクローンする。
- リポジトリ内のCFnテンプレートにアクセス可能となる
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- AWSにアクセスするための認証情報をリポジトリのシークレットからもってくる
- name: Deploy CFn Stack
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: test-vpc-stack
template: ./template.yml
no-fail-on-empty-changeset: "1"
- CloudFormationスタック作成
ローカルからリポジトリにプッシュ
git clone https://github.com/<ユーザーID>/<リポジトリ名>.git
git add .
git commit -m "(コミットの説明コメント)"
git remote add origin (リモートurl)
git push origin master
動作確認
スタックの更新
test-vpc → test-vpc-2