/cloud-news-summarizer

Summarise cloud news and send it to Slack

Primary LanguagePythonMIT LicenseMIT

cloud-news-summarizer

An Azure Function and associated resources that takes RSS feeds of cloud news (eg AWS What's New), generates a 3-sentence summary with Azure's Text Analytics, and sends the summary to Slack (with a link to the original post).

The Function polls the relevant RSS feeds every 30 minutes.

It is expected that the total usage cost of all the included resources (Functions, Storage Accounts, and Language Cognitive Services) will be approximately $1/month. For additional pricing information, see

Architecture

Architecture diagram

Usage / Deployment

Supporting resources are maintained in IaC with Pulumi.

  1. Head to the pulumi/ directory and follow the instructions to deploy that stack.
  2. Deploy the Azure Functions in the functions/ directory using either the Functions CLI, or the VS Code extension, choosing the python3.9 runtime. Ensure that you set the required Applications Settings as detailed below in the deployed Function App resource.
    • Note: If you deployed the Functions before setting the below config in the Function App resource, you may need to redeploy the functions for it to take effect.

The following Application Settings are required to be present on the deployed Function App:

  • AWS_ENABLED: whether to poll for AWS news - set to 1 or true to enable
  • AZURE_ENABLED: whether to poll for Azure news - set to 1 or true to enable
  • TABLE_SA_CONNECTION: connection string for storage account created in Pulumi - available in your Storage Account resource in the Portal
  • TABLE_NAME: table name within storage account - listed as a Pulumi output
  • ENVIRONMENT: table row key - string to differentiate multiple deployments, can be anything alphanumeric, eg prod
  • TIMER_QUEUE_NAME: timer queue name within storage account - listed as a Pulumi output
  • PROCESS_QUEUE_NAME: processing queue name within storage account - listed as a Pulumi output
  • COGNITIVE_ENDPOINT: endpoint URL (including https://) for the cognitive services resource - listed as a Pulumi output
  • COGNITIVE_KEY: key for the Cognitive Services resource - available in your Language resource in the Portal
  • AWS_SLACK_WEBHOOK: webhook URL for sending AWS news to Slack (not required if AWS_ENABLED is unset) - see the Slack docs if you aren't sure
  • AZURE_SLACK_WEBHOOK: webhook URL for sending Azure news to Slack (not required if AZURE_ENABLED is unset) - see the Slack docs if you aren't sure
  • SLACK_FAILURE_WEBHOOK: webhook URL for processing failure alerts to Slack - can be the same or different to the normal Slack webhook (ie optionally send failures to a different channel)

Current feeds supported

Now:

Next: