AWS CDK ищет ARN из лямбда

Я новичок в AWS, и у меня может быть простой вопрос, на который можно ответить.

(Я использую localstack для локальной разработки, если это имеет значение)

В лямбде я получил следующий код, который должен опубликовать сообщение в aws-sns.


def handler(event, context):
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.INFO)
    logger.info("confirmed user!")

    notification = "A test"

    client = boto3.client('sns')
    response = client.publish(
        TargetArn = "arn:aws:sns:us-east-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        Message=json.dumps({'default': notification}),
        MessageStructure='json'
    )
    return {
        'statusCode': 200,
        'body': json.dumps(response)
    }


На данный момент я «жестко запрограммировал» ARN темы sns, которая выводится на консоль при развертывании (с помощью cdklocal deploy).

Мне интересно, есть ли удобный способ поиска ARN ресурса AWS? Я видел, есть

 cdk.Fn.getAtt(logicalId, 'Arn').toString();

Функция, но я не знаю логический идентификатор sns перед развертыванием. Итак, как я могу искать ARN во время выполнения? Что такое лучшая практика?

(Это довольно раздражающая задача, отслеживать все ARN, если я просто жестко закодирую их как строки, и это определенно кажется мне неправильным)

[JS за 1 час] - 9. Асинхронный
[JS за 1 час] - 9. Асинхронный
JavaScript является однопоточным, то есть он может обрабатывать только одну задачу за раз. Для обработки длительных задач, таких как сетевые запросы,...
Топ-10 компаний-разработчиков PHP
Топ-10 компаний-разработчиков PHP
Если вы ищете надежных разработчиков PHP рядом с вами, вот список лучших компаний по разработке PHP.
Скраппинг поиска Apple App Store с помощью Python
Скраппинг поиска Apple App Store с помощью Python
📌Примечание: В этой статье я покажу вам, как скрапировать поиск Apple App Store и получить точно такой же результат, как на Apple iMac, потому что...
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
Подъем в javascript
Подъем в javascript
Hoisting - это поведение в JavaScript, при котором переменные и объявления функций автоматически "перемещаются" в верхнюю часть соответствующих...
Улучшение генерации файлов Angular
Улучшение генерации файлов Angular
Angular - это фреймворк. Вы можете создать практически любое приложение без использования сторонних библиотек.
0
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать функцию !GetAtt в своем шаблоне CloudFormation, чтобы получить и передать ARN темы SNS в вашу Lambda.

Resources:
  MyTopic:
    Type: AWS::SNS::Topic
    Properties:
      {...}
  MyLambda:
    Type: AWS::Lambda::Function
    Properties:
      Environment:
        Variables:
          SNS_TOPIC_ARN: !GetAtt MyTopic.Arn

Другие вопросы по теме