AWS CloudFormation: AWS :: События :: Правило - InputTemplate - PullRequest
0 голосов
/ 04 июля 2019

Я создаю файл AWS CloudFormation и застрял в сервисе AWS::Events::Rule.Я пытаюсь создать правило, которое будет отправлять разработчикам электронное письмо для каждого этапа CodePipeline.Это весь файл:

{
    "PipelineWebpageAccessStageNotification": {
        "Type": "AWS::Events::Rule",
        "Properties": {
            "Description": "Send out notifications to developers about the CodePipeline stages status for the websites.",
            "Name": "codepipeline-webpage_access",
            "RoleArn": { "Fn::GetAtt": ["PipelineWebpageAccessStageNotificationRole", "Arn" ] },
            "EventPattern": {
                "source": [
                    "aws.codepipeline"
                ],
                "detail-type": [
                    "CodePipeline Stage Execution State Change"
                ],
                "detail": {
                    "pipeline": [
                        { "Ref": "PipelineWebpageAccess" }
                    ],
                    "state": [
                        "FAILED",
                        "CANCELED",
                        "RESUMED",
                        "SUCCEEDED",
                        "STARTED"
                    ]
                }
            },
            "State": "ENABLED",
            "Targets": [
                {
                    "Arn": { "Ref": "SNSTopic" },
                    "Id": "SNS",
                    "InputTransformer": {
                        "InputPathsMap": {
                            "pipeline": "$.detail.pipeline",
                            "stage": "$.detail.stage",
                            "state": "$.detail.state"
                        },
                        "InputTemplate": "Hello Human, This message is related to the CodePipeline: <pipeline>. Bellow are some details: \r\n\r\n - Stage: <stage>\r\n - Status: <state>\r\n\r\n Thank you for reading, Enjoy your existence."
                    }
                }
            ]
        }
    }
}

Проблема с InputTemplate.CloudFormation говорит мне, чтобы отправить строку.Что я и делаю ... Оказывается, вам действительно нужно отправить строку, содержащую JSON.Итак, я сделал это, как и в других местах, например, вы передаете строку с JSON при создании панели мониторинга в CloudWatch.Это работает без проблем.Но здесь - это продолжает терпеть неудачу.

Интересно то, что такая же проблема возникает в панели инструментов AWS.

Я разговаривал с AWS Tach Support, и они также не знают, как решить эту проблему, они предоставили некоторыеподходы попробовать, но никто не работал.

Они сказали мне, что спросят команду, которая отвечает за эту часть AWS, но у меня нет больших надежд.

Вопрос

Если бы у вас былота же проблема и кое как разобраться, будем благодарны за решение :)

1 Ответ

0 голосов
/ 04 июля 2019

Это должна быть допустимая строка внутри AWS, а не только в шаблоне JSON. Таким образом, InputTemplate должно быть таким в JSON CloudFormation (обратите внимание на экранированные кавычки):

"InputTemplate": "\"your text here <placeholders>\""

Для YAML должно быть так:

InputTemplate: |
    "Line 1 <placeholders>."
    "Line 2 <placeholders>."

Когда я создал его из консоли, он показывает мне, как показано ниже:

Input Transformer: {"InputPathsMap":{"state":"$.detail.state"},"InputTemplate":"\"bla <state>\""}   
...