ロールは2つ必要となる。
- EC2用
- CodeDeploy用
EC2のサービスロールとして作成する。
EC2用はEC2のインスタンス起動時に必ず割り当てること。 すでに起動してしまった場合は削除するしかない。
AWSCodeDeployRoleの管理ポリシーをアタッチする。
CodeDeployのサービスロールとして作成する。 AWSCodeDeployRoleの管理ポリシーをアタッチする。
またTrustedEntiries(信頼関係)を編集し、
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "codedeploy.ap-northeast-1.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
などと入力する。利用するリージョンによって変更すること。
$ aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/install . --region ap-northeast-1
$ chmod +x ./install
$ ./install auto
EC2ロールが正しく設定されていればCredentialの入力は求められないはず。 (面倒になってAnsibleでCredentialを送りつけてしまったため真相の程は不明)
$ travis setup codedeploy
してから
deploy:
- provider: codedeploy
access_key_id: AKIAXXXXXXXXX
region: ap-northeast-1
application: XXXXXXX
deployment_group: XXXXXXX
on:
branch: develop
after_deploy:
- /bin/bash ci/after_deploy.sh
記述はこんな感じで。 access_keyの入力は
travis encrypt --add deploy.secret_access_key
で暗号化される。