Как использовать очередь 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": {}
}
}
]
}