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

Что я сделал до сих пор: я экспортировал Arn of the Queue и QueueName из стека, в котором создается очередь, и использовал их в событиях в функции lambda, которую я хочу вызвать, а также определил QueuePolicy в этом стеке, чтобы получить разрешения для ReceiveMessage из очереди.

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

Дайте мне знать, что я делаю не так.

1 ответ

Вы можете вызвать действие стека облачной информации (создать / обновить / удалить...) с помощью 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": {}
            }
        }
    ]
}
Другие вопросы по тегам