nasa-gcn / gcn-email

A service to consume alerts from the GCN Kafka broker and send emails to users who subscribe through the GCN web site
Other
0 stars 2 forks source link
astronomy aws docker email kafka python

gcn-email

A hosted listener service to consume alerts from the GCN Kafka broker and send emails to users who subscribe through the new GCN site.

Configuration

The following environment variables may be used to configure the service:

Name Value
AWS_DEFAULT_REGION AWS region, e.g. us-east-1
KAFKA_* Kafka client configuration as understood by Confluent Platform docker containers
EMAIL_SENDER Address to be used as the sender for emails sent through SES

IAM Policy

The following is the minimum AWS IAM policy to grant the necessary permissions to this service. Replace <region> with the AWS region (e.g. us-east-1), <account> with the AWS account ID, <domain> with the verified SES domain (e.g. test.gcn.nasa.gov), and <configuration-set> with the SES configuration set.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": [
                "arn:aws:ses:<region>:<account>:identity/<domain>",
                "arn:aws:ses:<region>:<account>:configuration-set/<configuration-set>"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "ses:GetSendQuota"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ssm:GetParameter"
            ],
            "Resource": "arn:aws:ssm:<region>:<account>:parameter/RemixGcnProduction/tables/email_notification_subscription",
            "Effect": "Allow"
        },
        {
            "Action": [
                "dynamodb:Query"
            ],
            "Resource": "arn:aws:dynamodb:<region>:<account>:table/RemixGcnProduction-EmailNotificationSubscriptionTable-*",
            "Effect": "Allow"
        }
    ]
}

How to contribute

This package uses Poetry for packaging and Python virtual environment management. To get started:

  1. Fork and clone this repository.

  2. Install Poetry by following their installation instructions.

  3. Install this package and its dependencies by running the following command inside your clone of this repository:

    poetry install --all-extras
  4. Run the following command to launch a shell that is preconfigured with the project's virtual environment:

    poetry shell