Azure Functions - очень удобный инструмент для автоматизации каких-либо задач. Как-только автоматизация настроена - сразу возникает вопрос: как получать уведомления о результатах? Самое логичное решение - использовать электронную почту для отправки оповещений.
Как делать это безопасно и бесплатно расскажу ниже.
Подсказка: данный мануал можно использовать не только для отправки почты, но и впринципе для безопасной работы с любыми секретами/сертификатами/ключами.
Постановка задачи
Пускай у нас уже есть:
- Function App с именем "test-azurefunctions-notifications"
- Учётная запись от почтового сервера (пускай будет Office 365)
Сделаем так, чтобы мы могли:
- Отправлять уведомления из Function App
- Не хардкодить учётку в коде Function App
Все настройки можно выполнить при помощи Azure Portal.
Настройка Function App
Открываем: Function App -> Platform features -> NETWORKING -> Managed service identityВключаем "Register with Azure Active Directory"
Это позволить приложению запрашивать access token для получения доступа к другим ресурсам Azure (в нашем случае Key Vault). Подробнее тут.
Настройка Azure Key Vault
Создаём Key Vault по инструкции. Добавляем логин и пароль от почтового аккаунта.Key vault -> Secrets -> Generate/Import
Разрешаем нашему Function App запрашивать эти логин и пароль. Для этого идём в Key vault -> Access policies -> Add new и выбираем:
- Secret permissions: Get, List
- Select principal: test-azurefunctions-notifications
Отправка уведомлений
Проверим, что мы можем использовать сохранённые учётные данные.Приведу вариант реализации на PowerShell. Примеры для других языков можно посмотреть в документации Microsoft.
Результат будет выглядеть примерно так:
Код на PowerShell.