🀄
BitbucketとAppRunnerを連携してサーバレスなアプリ環境を構築する。
はじめに
インフラストラクチャを管理せずにAWSにアプリケーションをデプロイする方法としてAppRunnerが挙げられる。
しかし、現在、AppRunnerではGitHubまたはECRとしか連携ができない。
Bitbucket上でGitリポジトリ管理している場合は、ECRで連携するしかない。
そこで、BitbucketとECRを連携するパイプラインを構築する手順をまとめる。
IAMポリシーを作成
BitbucketからECRを操作するためのIAMポリシーを作成する。
IAMユーザを作成
BitbucketからECRを操作するためのIAMユーザを作成する。
先程のポリシーをアタッチする。
アクセスキーとシークレットを発行して、SercretsManagerにキー/バリューを保存する。
BitBucket Pipelinesに環境変数を追加する。
以下を追加する。
- AWS_DEFAULT_REGION
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_REGISTRY_URL
BitBucket Piplinesをつくる
タグとIMAGE_NAMEはECRリポジトリ名と同じにしないと行けない。(ハマった)
bitbucket-pipelines.yml
image: atlassian/default-image:3
pipelines:
branches:
master:
- step:
name: Build and AWS Setup
services:
- docker
script:
# builds docker image from a local dockerfile
- docker build -t ここは作成したECRリポジトリ名 .
# use pipe to push the image to AWS ECR
- pipe: atlassian/aws-ecr-push-image:1.5.0
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
IMAGE_NAME: ここは作成したECRリポジトリ名
TAGS: '${BITBUCKET_BRANCH}'
格闘の末、Bitbucket上のmasterブランチの変更を検知して、自動コンテナビルドしてプッシュすることに成功。
ECRへコンテナイメージもきちんとプッシュできていた。
AppRunnerの設定
AppRunnerを作成する。
以下のように先程準備したECRを設定して、あとはよしなに設定。
AppRunner上でアプリが動くことを確認。
AppRunnerは従量課金のため、利用していない際はサービスを停止しておくのが良い。
Discussion