Как использовать очередь SQS в одном стеке CloudFormation в качестве триггера для лямбда-функции в другом стеке CloudFormation? - PullRequest
0 голосов
/ 08 февраля 2019

enter image description here

Что я сделал до сих пор : я экспортировал Арн Очереди и Имя очереди из стека, где очередь создается и используетсяони в событиях под лямбда-функцией, которую я хочу вызвать, а также определили QueuePolicy в этом стеке, чтобы получить разрешения для ReceiveMessage из очереди.

Этот подход работает, когда я сначала строю оба стека, нов следующий раз, когда я собираюсь, это отключение триггера под триггерами Lambda в определении очереди SQS.Мне никогда не удавалось увидеть его как триггер под лямбда-функцией.

Дайте мне знать, что я делаю неправильно.

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете вызвать действие стека облачной информации (создать / обновить / удалить ...) с параметром NotificationArns.

Это отправит сообщение для каждого события ресурсов стека.Затем он дает способности вызывать лямбду.

Сообщение следует за этим типом полезной нагрузки:

{
    "Records": [
        {
            "EventSource": "aws:sns",
            "EventVersion": "1.0",
            "EventSubscriptionArn": "arn:aws:sns:eu-west-1:12345678912:my-sns-topic:00000000-0000-0000-0000-000000000000",
            "Sns": {
                "Type": "Notification",
                "MessageId": "00000000-0000-0000-0000-000000000000",
                "TopicArn": "arn:aws:sns:eu-west-0:000000000000:my-sns-topic",
                "Subject": "AWS CloudFormation Notification",
                "Message": "
                    StackId='${STACK_ID}'\n
                    Timestamp='2018-01-01T00:00:00.000Z'\n
                    EventId='00000000-0000-0000-0000-000000000000'\n
                    LogicalResourceId='${STACK_NAME}'\n
                    Namespace='000000000000'\n
                    PhysicalResourceId='${STACK_ID}'\n
                    PrincipalId='ABCDEFGHIJKLMNOPQRSTU:1234567890123456789'\n
                    ResourceProperties='null'\
                    ResourceStatus='${RESOURCE_STATUS}'\n
                    ResourceStatusReason=''\n
                    ResourceType='AWS::CloudFormation::Stack'\n
                    StackName='${STACK_NAME}'\n
                    ClientRequestToken='null'\n
                ",
                "Timestamp": "2018-01-01T00:00:00.000Z",
                "SignatureVersion": "1",
                "Signature": "_",
                "SigningCertUrl": "_",
                "UnsubscribeUrl": "_",
                "MessageAttributes": {}
            }
        }
    ]
}
...