Amazon web services AWS CloudWatch触发代码管道执行在一个帐户中工作,但在另一个帐户中不工作
我们使用两个AWS帐户,一个用于开发(dev)和一个用于生产(prod)和一个主要AWS代码管道 目前在prod中运行的这条主管道正在将我们的应用程序构建到Docker映像中,并将其推送到dev中的ECR存储库,从那里应该触发一条单独的管道,以开始部署到dev中的ECS。 如果在ECS dev中部署成功,则在管道1中会有一个手动批准步骤,将容器升级到ECR prod,从而触发到ECS prod的部署 现在有一个问题: 我们正在使用CloudWatch事件规则来触发两个部署管道,该规则正在检查来自CloudTrail的“PutImage”事件 这只适用于在prod中放入ECR的映像,而在dev中不适用。规则根本不会触发,尽管我可以在dev中的Cloudtrail中看到事件 可能是什么问题?使用Terraform,dev和prod的设置是相同的 我首先认为在prod中运行的管道可能需要能够将事件发送到dev(),但这不太可能,因为我已经可以在CloudTrail dev中看到事件 可能是因为管道本身正在prod中运行吗 管道1:应用程序git->Docker构建并推送到dev ECR-如果在dev中部署 成功:手动批准->推送到产品ECR 管道2(未触发) Alibi git source->从ECR获取最新图像标签 dev,output imagedefinitions.json->input imagedefinitions.json, 部署到ECS dev 管道3(手动批准后正确触发) Alibi git源-> 从ECR pro获取最新图像标记,输出imagedefinitions.json-> 输入imagedefinitions.json,部署到ECS产品 我们使用的是alibi git源代码,因为Codepipeline在开始时需要一个源代码;因此,我们正在检查回购协议,但从ECR获得最新的图像标签是重要的一步 适用于prod,但不适用于dev的Cloudwatch事件规则:Amazon web services AWS CloudWatch触发代码管道执行在一个帐户中工作,但在另一个帐户中不工作,amazon-web-services,amazon-ecs,aws-codepipeline,Amazon Web Services,Amazon Ecs,Aws Codepipeline,我们使用两个AWS帐户,一个用于开发(dev)和一个用于生产(prod)和一个主要AWS代码管道 目前在prod中运行的这条主管道正在将我们的应用程序构建到Docker映像中,并将其推送到dev中的ECR存储库,从那里应该触发一条单独的管道,以开始部署到dev中的ECS。 如果在ECS dev中部署成功,则在管道1中会有一个手动批准步骤,将容器升级到ECR prod,从而触发到ECS prod的部署 现在有一个问题: 我们正在使用CloudWatch事件规则来触发两个部署管道,该规则正在检查来自
resource "aws_cloudwatch_event_rule" "latest_image" {
name = "latest-image"
description = "Capture push to ECR"
event_pattern = <<PATTERN
{
"source": [
"aws.ecr"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"ecr.amazonaws.com"
],
"eventName": [
"PutImage"
],
"awsRegion": [
"${var.region}"
],
"requestParameters": {
"repositoryName": [
"${var.application_name}"
],
"registryId": [
"${var.account_id}"
]
}
}
}
资源“aws\u cloudwatch\u事件规则”“最新图像”{
name=“最新图像”
description=“捕获推送到ECR”
event_pattern=在此确认几件事:1.所有管道1、2和3是否都在prod帐户中?2.创建的CloudWatch规则(prod或Dev)在哪里?3.ECR存储库在哪里?(prod或Dev)4.管道2未正确触发是否正确?