🀄

BitbucketとAppRunnerを連携してサーバレスなアプリ環境を構築する。

2022/06/19に公開

はじめに

インフラストラクチャを管理せずに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は従量課金のため、利用していない際はサービスを停止しておくのが良い。

参考

atlassian

Discussion