簡體   English   中英

Cloudformation Cloudwatch 輸入模板格式化

[英]Cloudformation Cloudwatch InputTemplate Formatting

我正在嘗試使用 cloudformation 模板創建一個 cloudwatch 事件規則,該規則與膠水事件匹配並以 SNS 主題為目標發送消息,我可以在 cloudwatch 控制台中創建它,但不能通過雲監視模板創建。 這是我的活動規則:

NotifyEventRule:
  Type: AWS::Events::Rule
  Properties:
    Name: JobNotifyEvent
    Description: Notification event on job status change.
    EventPattern:
      source:
        - aws.glue
      account:
        - !Ref AWS::AccountId
      detail-type:
        - Glue Job State Change
      detail:
        jobName:
          - !Ref GlueJobName
    Targets:
        - 
          Arn: 
              Ref: "JobNotificationTopic"
          Id: 
              Ref: "JobNotificationTopicName"
          InputTransformer:
            InputTemplate: "Job finished in the following state: <state>."
            InputPathsMap: 
              state: "$.detail.state"

問題出在 InputTemplate 上。 我得到的錯誤是:

目標 JobNotificationTopic 的 InputTemplate 無效:[來源:(字符串)“作業在以下狀態下完成:空。”; 行:1,列:10]。 (服務:AmazonCloudWatchEvents;狀態代碼:400;錯誤代碼:ValidationException;請求 ID:12345678...)

似乎<state>可能是問題所在。

由於某些原因,InputTemplate 的語法在 CloudFormation 中非常嚴格。 它是字符串類型,但不接受任何形式的有效 YAML 字符串。

在您的情況下,您應該在輸入字符串之前使用 YAML 文字塊標量 |。

InputTransformer:
    InputPathsMap: 
        state: "$.detail.state"
    InputTemplate: |
        "Job finished in the following state: <state>."

如果輸入字符串是多行的,則每行都必須用雙引號引起來。

InputTransformer:
    InputPathsMap:
        state: $.detail.state
        name: $.detail.name
    InputTemplate: |
        "Job <name> has just been run."
        "Job finished in the following state: <state>."

請注意,您的字符串使用普通流標量,這對 : 字符很挑剔。 冒號不能出現在空格或換行符之前。 有關詳細信息,請參閱Yaml 多行 然而,正如我所指出的,大多數 YAML 多行規則不適用於 InputTemplate。

這不是 YAML 格式的問題,因為您使用 JSON 時會遇到同樣的錯誤。

InputTemplate 必須是 AWS 中的字符串:

InputTemplate=
                "\"The Pipeline <pipeline> Started\""

這個 AWS 開發人員論壇主題給了我答案: https ://forums.aws.amazon.com/thread.jspa?messageID=798687

我認為問題在於 InputTemplate 不是有效的 JSON。 請參閱: https ://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputtemplate

InputTemplate 必須是有效的 JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM