この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、菊池です。
今回はタイトルの通り、BitbucketとAWS CodeDeployの連携を試してみました。
やってみる
以下の手順で実施します。
- CodeDeployアプリケーションの作成
- BitbucketでCodeDeploy連携の有効化
- IAMロールの作成
- BitbucketでCodeDeploy連携の設定
- 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を効率化しましょう。