BitbucketとCodeDeployの連携を試してみた

2017.12.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、菊池です。

今回はタイトルの通り、BitbucketとAWS CodeDeployの連携を試してみました。

やってみる

以下の手順で実施します。

  1. CodeDeployアプリケーションの作成
  2. BitbucketでCodeDeploy連携の有効化
  3. IAMロールの作成
  4. BitbucketでCodeDeploy連携の設定
  5. AppSpecの作成・デプロイ

まずは、CodeDeployアプリケーションの作成です。

任意のアプリケーション名/デプロイグループ名を入力します。今回はEC2向けのデプロイを設定しました。そのほかはデフォルトの設定で作成しています。

続いて、BitbucketでCodeDeploy連携を有効化します。Bitbucketの設定で、[統合の検索]に進みます。

AWS CodeDeploy for Bitbucketがありますので、[追加]しましょう。

確認画面を進みます。

有効化したら、リポジトリ単位の設定です。連携したリポジトリで、[設定] -> [CodeDeploy Settings]を選択します。IAMロールの設定に必要な、ポリシーとアカウントID/外部IDが表示されますので控えます。

次に、IAMロールを作成します。クロスアカウントアクセスのロール作成に進み、先ほど控えたアカウントID/外部キーを入力して作成します。

ポリシーは以下を設定しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:*"
            ],
            "Resource": "*"
        }
    ]
}

IAMロールが作成できたら、BitBucketの設定に戻ります。作成したIAMロールのARNと、利用したいリージョンを選択します。

問題なければ、CodeDeployに作成したアプリケーションとS3バケットが読み取りできます。連携するアプリケーションとバケットを選択します。

これで連携の準備ができました!

リポジトリに、appspec.ymlとデプロイするコードをアップします。

今回は試しなので、以下のみ記述してます。

version: 0.0
os: linux
files:
  - source: /html
    destination: /var/www/html

デプロイするブランチの画面から、[Deploy to AWS]をクリックします。

デプロイメントグループを選択し、Submit!

しばらくすると、デプロイが完了します。CodeDeployの画面を見ると、デプロイが成功したことが確認できます。

というわけで、BitBucketと連携したデプロイができました!

最後に

サードパーティのGitホスティングサービスである、BitbucketとCodeDeployの連携を試してみました。GitHubとAWS Codeサービスの連携は多くサポートされていますが、Bitbucketなど、他のサービスとの連携も拡大していっています。うまく組み合わせてCI/CDを効率化しましょう。