Пример создания AWS Pipeline, где CloudWatch отслеживает состояние репозитория в CodeCommit, при изменении запускает CodeBuild который выкачивает содержимое репозитория и загружает его в S3 Bucket. CodeDeploy обращается к EC2 Instance и codedeploy-agent скачивает с S3 архив с содержимым репозитория и выполняет действия, описанные в скрипте.
S3 Bucket необходим только для передачи артефакта от CodeBuild до codedeploy-agent'а на EC2 инстансе, так как агент не может скачивать напрямую репозиторий с CodeCommit.
CloudWatch — Logs — Action — Create log group
CodeBuild
CodeDeploy
CodeDeploy -> Applications -> Create application
Deployment Groups -> Create deployment group
Environment configuration — выбираем EC2 Instance
Теперь по уникальному имени и значению тега нужно определить инстанс. Для его, если не создавали тег, то добавьте его к EC2 Instance. В данном примере тег с именем "ENV" и значением "Staging"
Проверьте количество уникальных совпадений.
Load balancer — снимаем галочку, в данном примере один EC2 Instance
Deployment group deployment -> Create deployment
https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html
https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html
sudo service codedeploy-agent start
service codedeploy-agent status
wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/latest/install
Создать роль для EC2 !!!!!!!!!!!!!!!!
CodeDeploy-EC2
Добавляем следующую полиси:
CodeDeploy-EC2-Permissions
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }