Как ссылаться на ресурс AWS, созданный с помощью SAM, в Lambda?

Я пытаюсь записать в очередь SQS, которую создаю в том же шаблоне SAM, что и моя лямбда. Чтобы отправить сообщение в очередь, мне нужен URL-адрес.

client.send_message(QueueUrl='string', MessageBody='string', ...)

Я могу получить URL-адрес, если у меня есть имя очереди (client.get_queue_url(QueueName='string', QueueOwnerAWSAccountId='string')), но оно генерируется случайным образом при развертывании SAM. Для функции вы можете указать имя функции в файле template.yaml, но я не нашел примера этого для очереди.

Я знаю, что в template.yaml я могу использовать !Ref MyQueue, но я не знаю эквивалента для использования в лямбде. Я предполагаю, что уловка есть, просто я не знаю этого трюка :)


person Sam Morehouse    schedule 05.03.2020    source источник


Ответы (1)


Вы можете передать URL очереди в качестве переменной среды лямбда-выражению. Это позволяет вам использовать !Ref MyQueue в шаблоне для ссылки на очередь. Просто добавьте это в раздел Environment -> Variables конфигурации лямбда.

person Jason Wadsworth    schedule 05.03.2020
comment
Получил, спасибо. Единственный недостаток, который я вижу здесь, - это локальное тестирование. Я предполагаю, что для этого мне нужно использовать локальный стек? - person Sam Morehouse; 06.03.2020