Установка типа данных сообщения SNS для json в boto3 / cloudformation - PullRequest
0 голосов
/ 02 ноября 2018

Я развертываю стеки облачной информации с использованием boto3 и настраиваю NotificationARN темы SNS для получения уведомлений о событиях Cloudformation.

cfClient = boto3.client('cloudformation')
myCloudformArgs = {
    'StackName' : cloudformTemplateName,
    'TemplateBody' : cloudFormTemplate,
    'Capabilities' : ['CAPABILITY_IAM', 'CAPABILITY_NAMED_IAM'],
    'NotificationARNs' : ['arn:aws:sns::123456789012:snsTopic']
    }
response = cfClient.update_stack(**myCloudformArgs)

Cloudformation успешно публикует уведомления по этой теме. Однако часть «Сообщение» объекта SNS отправляется в виде строки, а не в виде JSON.

{
    "Records": [
        {
            "EventSource": "aws:sns",
            "EventVersion": "1.0",
            "EventSubscriptionArn": "arn:aws:sns:ap-southeast-1:123456789012:snsTopic:bf50e908-b372-4466-a5b5-025eb8742fc0",
            "Sns": {
                "Type": "Notification",
                "MessageId": "4cdf8ea4-8e45-515b-8432-daf00f3909ac",
                "TopicArn": "arn:aws:sns:ap-southeast-1:123456789012:snsTopic",
                "Subject": "AWS CloudFormation Notification",
                "Message": "StackId='arn:aws:cloudformation:ap-southeast-1:123456789012:stack/CF-Base-v01/8f147550-dd8d-11e8-bbce-0a2033e4b11e'\nTimestamp='2018-11-01T04:21:15.951Z'\nEventId='localenv-CREATE_COMPLETE-2018-11-01T04:21:15.951Z'\nLogicalResourceId='localenv'\nNamespace='123456789012'\nPhysicalResourceId='58a2b290-8e2f-43f4-a8e0-62665002fedf'\nResourceProperties='{\"RepositoryName\":\"localenv\",\"RepositoryDescription\":\"localenv Repo\"}'\nResourceStatus='CREATE_COMPLETE'\nResourceStatusReason=''\nResourceType='AWS::CodeCommit::Repository'\nStackName='CF-Base-v01'\nClientRequestToken='null'\n",
                "Timestamp": "2018-11-01T04:21:16.135Z",
                "SignatureVersion": "1",
                "Signature": "n5bZL7GAe5gf5WQLxjklsLAZ/FsKqgfNCCmBveXuBzOvJRUsEtVgxKhsIaKyEiaNc3fY2/iYnlcoKs7mAir+aFHrQICWSfiXBW2/j1CA5sVsmQBiLcJfB0Vk60bJIf8IMAEjPj2nnX/gzlrmFy0TpoS0L2xpAUOaMYcNuBwdXiNz5prnE4iTR3xyRQ+XDDpz+K/xyeVrHrVyvGyOF6MS5buLWrKP5uCmaGxI+D99PvCaBnwHoWoXxf6YW0SPjx+gYio/htVngpstgAViKcll5nKINsl643fZ8+Q5tAgJWsqa79TO+R4Exu1MpHxzQyyjpsIgNBPELjXK/zwGRfUeLA==",
                "SigningCertUrl": "https://sns.ap-southeast-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem",
                "UnsubscribeUrl": "https://sns.ap-southeast-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:ap-southeast-1:123456789012:snsTopic:bf50e908-b372-4466-a5b5-025eb8742fc0",
                "MessageAttributes": {}
            }
        }
    ]
}

Чтение документов и несколько поисков в Google говорят мне, что когда я публикую сообщение SNS в boto3, я могу решить эту проблему, установив для MessageStructure значение «json». Однако в этом случае Cloudformation публикует SNS, а не меня. Я не могу найти какой-либо способ в Cloudformation для передачи этой опции конфигурации.

Как настроить стек облачной информации для отправки элемента Message уведомлений в виде JSON, а не строки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...