【问题标题】:How to access CloudWatch Event data from triggered Fargate task?如何从触发的 Fargate 任务访问 CloudWatch 事件数据?
【发布时间】:2020-08-07 01:18:23
【问题描述】:

我阅读了有关如何Run an Amazon ECS Task When a File is Uploaded to an Amazon S3 Bucket 的文档。但是,本文档没有说明如何从 Fargate 任务代码本身的 in 触发事件中获取存储桶/键值。怎么办?

【问题讨论】:

  • 看起来这不是 Cloudwatch 事件的好例子。 ECS 任务通常用于长时间运行的服务器。 Lambda/Batch 非常适合 S3。对象放置事件。
  • 我也碰壁了,我想为我的 fargate 任务安排一个 cloudwatch 事件,并为该任务提供一个恒定的 json 输入。代码里怎么读?
  • 我发现这个可以很好地显示步骤...medium.com/@bowbaq/…
  • 这太残酷了,并不是每个人都使用 Terraform。

标签: amazon-ecs amazon-cloudwatch aws-fargate


【解决方案1】:

我不确定你是否还需要这个答案。但我做了类似于 Steven1978 提到的事情,但只使用了 CloudFormation。

您要查找的配置是 InputTransformer。检查此示例以获取事件规则的 YAML CloudFormation 模板:

rEventRuleForFileUpload:
Type: AWS::Events::Rule
Properties:
  Description: "EventRule"
  State: "ENABLED"
  EventPattern:
    source:
      - "aws.s3"
    detail-type:
      - 'AWS API Call via CloudTrail'
    detail:
      eventSource:
        - s3.amazonaws.com
      eventName:
        - "PutObject"
        - "CompleteMultipartUpload"
      requestParameters:
        bucketName: "{YOUR_BUCKET_NAME}"

  Targets:
    - Id: '{YOUR_ECS_CLUSTER_ID}'
      Arn: !Sub "arn:aws:ecs:${AWS::Region}:${AWS::AccountId}:cluster/${NAME_OF_YOUR_CLUSTER_RESOURCE}"
      RoleArn: !GetAtt {YOUR_ROLE}.Arn
      EcsParameters:
        TaskCount: 1
        TaskDefinitionArn: !Ref {YOUR_TASK_DEFINITION}
        LaunchType: FARGATE

        {... WHATEVER CONFIG YOU MIGHT HAVE...}

      InputTransformer:
        InputPathsMap:
          s3_bucket: "$.detail.requestParameters.bucketName"
          s3_key: "$.detail.requestParameters.key"
        InputTemplate: '{ "containerOverrides": [ { "name": "{THE_NAME_OF_YOUR_CONTAINER_DEFINITION}", "environment": [ { "name": "EVENT_BUCKET", "value": <s3_bucket> }, { "name": "EVENT_OBJECT_KEY", "value": <s3_key> }] } ] }'

通过这种方法,您将能够获取 s3 存储桶名称 (EVENT_BUCKET) 和 s3 对象键 (EVENT_OBJECT_KEY) 作为容器内的环境变量。

确实,信息不是很清楚,但这里有一些我用来最终让它工作的资源:

容器覆盖; https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html

输入转换器: https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_InputTransformer.html#API_InputTransformer_Contents

【讨论】:

    猜你喜欢
    • 2019-05-11
    • 2020-07-16
    • 2019-11-25
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    相关资源
    最近更新 更多