AWS SNS


The aws_sns notification platform enables publishing to an AWS SNS topic or application.

To use this notification platform in your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
notify:
  - name: NOTIFIER_NAME
    platform: aws_sns
    aws_access_key_id: AWS_ACCESS_KEY_ID
    aws_secret_access_key: AWS_SECRET_ACCESS_KEY
    region_name: 'us-east-1'

Configuration variables:

  • aws_access_key_id (Required if aws_secret_access_key is provided): Your AWS Access Key ID. For more information, please read the AWS General Reference regarding Security Credentials. If provided, you must also provide an aws_secret_access_key and must not provide a profile_name.
  • aws_secret_access_key (Required if aws_access_key_id is provided): Your AWS Secret Access Key. For more information, please read the AWS General Reference regarding Security Credentials. If provided, you must also provide an aws_access_key_id and must not provide a profile_name.
  • profile_name (Optional): A credentials profile name. For more information, please see the boto3 documentation section about credentials.
  • region_name (Required): The region identifier to connect to. The default is us-east-1.
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.

Usage

AWS SNS is a notify platform and thus can be controlled by calling the notify service as described here. It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN (Amazon Resource Name). For more information, please see the boto3 docs.

If one exists, the SNS Subject will be set to the title. All attributes from the payload except message will be sent as stringified message attributes.

Setting up SNS within AWS

  • Log into your AWS console and under “Security and Identity”, select “Identity & Access Management”.
  • On the left hand side, select “Users” then click “Create New Users”. Enter a name here and then click “Create”.
  • You can either download the credentials or click the arrow to display them one time.

If you do not download them you will lose them and will have to recreate a new user.

  • Copy/Paste the two keys that you are provided here in your configuration.yaml file respectively.
  • On the left hand side of the screen go back to “Users” and select the user you just created. On the “Permissions” tab click the “Attach Policy” icon. Search for “SNS” and attach the policy “AmazonSNSFUullAccess”.
  • Back to the AWS Console you now need to find “SNS” and click in to that service. It is under the Mobile Services group.
  • On the left hand side, select “Topics” then “Create new topic”.
  • Choose a Topic Name and Display Name.
  • Now check the box next to the Topic you just created and under Actions, select “Subscribe to topic”.
  • In the box that pops up, select the Protocol = SMS and enter in the phone number next to “Endpoint” you wish to SMS. Now click “Create”.
  • Repeat for additional numbers.
  • Back in the “Users” section you will see a long alphanumeric line that starts with “arn:” and ends with the Topic Name you choose previously. This is what your “target” in Home Assistant will be.