![](/img/trans.png)
[英]How to define Resource Policy for CloudWatch Logs with CloudFormation?
[英]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.