Мне было довольно сложно настроить автоматизацию с помощью Beanstalk и Codepipeline ...
Наконец-то я запустил его, основная проблема заключалась в событии S3 Cloudwatch, которое запускало Codepipeline
. Я пропустил необходимую часть Cloudtrail и не нашел ее ни в одной документации.
Итак, текущая настройка такова: файл S3 загружается - ›Событие CloudWatch запускает Codepipeline -› Codepipeline развертывается в среде ElasticBeanstalk.
Как я уже сказал, чтобы получить триггер CloudWatch Event, вам понадобится Cloudtrail
след, например:
resource "aws_cloudtrail" "example" {
# ... other configuration ...
name = "codepipeline-source-trail" #"codepipeline-${var.project_name}-trail"
is_multi_region_trail = true
s3_bucket_name = "codepipeline-cloudtrail-placeholder-bucket-eu-west-1"
event_selector {
read_write_type = "WriteOnly"
include_management_events = true
data_resource {
type = "AWS::S3::Object"
values = ["${data.aws_s3_bucket.bamboo-deploy-bucket.arn}/${var.project_name}/file.zip"]
}
}
}
Но это только для того, чтобы создать новый след. Проблема в том, что AWS допускает не более 5 трасс. На AWS console
вы можете добавить несколько событий данных в один трейл, но мне не удалось сделать это в терраформе. Я пытался использовать то же имя, но это вызывает ошибку
Ошибка при создании CloudTrail: TrailAlreadyExistsException: Trail codepipeline-source-trail уже существует для клиента: XXXX
Я изо всех сил пытался объяснить свою проблему. Не уверен, понятно ли это. Вкратце: я хочу добавить data events:S3
в существующий след облаков с терраформой.
Спасибо за помощь, Даниэль