当前位置: 首页 > 知识库问答 >
问题:

使用Terraform将ECS任务ARN注入AWS Cloudwatch事件规则

拓拔泉
2023-03-14

我正在尝试创建一个AWS Cloudwatch事件规则,以便在运行特定任务的容器成功完成运行时发送SNS电子邮件通知。我已经浏览了Terraform文档,但找不到一种动态注入taskArn的好方法:

resource "aws_cloudwatch_event_rule" "important-task-complete-rule" {
  name = "reporting-task-completed"
  description = "Notification for when an important task finishes running successfully."

  event_pattern = <<PATTERN
{
  "source": [
    "aws.ecs"
    ],
  "detail-type": [
    "ECS Task State Change"
    ],
  "detail": {

    "lastStatus": [
      "STOPPED"
    ],
"stoppedReason" : [
    "Essential container in task exited"
  ],
"containers": {
  "exitCode": [
        0
      ],
  "taskArn": "arn:aws:ecs:us-east-1:MY_ACCOUNT:task/MY_TASK_ID_THAT_I_WANT_TO_INJECT"
    }
}
}
PATTERN
}

例如,这里的文档示例提供了相同的硬编码<代码>

是否有一种模板文件方法可以动态插入我的ARN而无需硬编码?

共有1个答案

邹祺然
2023-03-14

正如@matt Schuchard所说,您是否使用terraform资源属性来管理它?(顺便说一句,它不称为变量)。

resource "aws_ecs_task_definition" "service" {
   ...
}

resource "aws_cloudwatch_event_rule" "important-task-complete-rule" {
  name = "reporting-task-completed"
  description = "Notification for when an important task finishes running successfully."

  event_pattern = <<PATTERN
{
  "source": [
    "aws.ecs"
    ],
  "detail-type": [
    "ECS Task State Change"
    ],
  "detail": {

    "lastStatus": [
      "STOPPED"
    ],
"stoppedReason" : [
    "Essential container in task exited"
  ],
"containers": {
  "exitCode": [
        0
      ],
  "taskArn": "${aws_ecs_task_definition.service.arn}"
    }
}
}
PATTERN
}
 类似资料:
  • 每次更新ECS服务时(更新完成或达到所需状态后),我都希望收到一封电子邮件 我考虑过CloudWatch事件规则将SNS主题设置为目标(即确认的电子邮件地址)。然而,它不起作用。 这是我的自定义事件模式: 我也尝试过: TASKSET_STEADY_STATE CAPACITY_PROVIDER_STEADY_STATE SERVICE_DESIRED_COUNT_UPDATED 我正在通过中情局

  • Terraform ECS Fargate A set of Terraform templates used for provisioning web application stacks on AWS ECS Fargate. The templates are designed to be customized. The optional components can be removed

  • 我对Spring交易非常陌生。由于我的组织使用的一些代码标准,我要求在调用任何方法时加入父事务(如果存在)。 我的应用程序是一个SpringMVC应用程序,有三层 Web层(控制器类) 服务层(包含业务逻辑的服务类) DAO Layer(数据库相关查询的DAO(数据访问层)类) 现在,在服务层上的一个方法中使用了dao层的三种不同方法。我使用@transactional将此服务方法注释为事务性的。

  • 我正在尝试配置cloudwatch事件规则,这将触发sns主题。我一直面临着从cloutwatch规则和terraform创建的事件模式触发sns主题的问题。下面是我的地形代码: 在aws用户界面上应用选中的事件模式后,如下所示: 它在创建s3 bucket时出现调用失败错误。然后我从aws控制台重新保存为: 然后就过去了。 有人能建议我如何禁用地形重新安排事件模式。

  • 在Spring中,由于AOP代理的原因,您不能简单地从同一个实例调用方法。做一个自注入并从自代理实例调用该方法是个好主意吗?你看到什么缺点了吗?