mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-05-02 17:18:58 +00:00
76 lines
3.5 KiB
Markdown
76 lines
3.5 KiB
Markdown
---
|
|
layout: page
|
|
title: "AWS Lambda"
|
|
description: "Instructions how to invoke AWS Lambda functions from Home Assistant."
|
|
date: 2016-05-14 16:35
|
|
sidebar: true
|
|
comments: false
|
|
sharing: true
|
|
footer: true
|
|
logo: aws_lambda.png
|
|
ha_category: Notifications
|
|
ha_release: "0.20"
|
|
---
|
|
|
|
The `aws_lambda` notification platform enables invoking [AWS Lambda](https://aws.amazon.com/lambda/) functions.
|
|
|
|
To use this notification platform in your installation, add the following to your `configuration.yaml` file:
|
|
|
|
### Configuration
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry
|
|
notify:
|
|
- name: NOTIFIER_NAME
|
|
platform: aws_lambda
|
|
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](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). 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](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). 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](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file).
|
|
- **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`.
|
|
- **context** (*Optional*): An optional dictionary you can provide to pass custom context through to the Lambda function. The `context` dictionary (if any) is combined with the same data available at the `/api/config` HTTP API route.
|
|
|
|
### {% linkable_title Usage %}
|
|
|
|
AWS Lambda is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [boto3 docs](http://boto3.readthedocs.io/en/latest/reference/services/lambda.html#Lambda.Client.invoke).
|
|
|
|
The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda:
|
|
|
|
```json
|
|
{
|
|
"title": "Test message!",
|
|
"target": "arn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecords",
|
|
"data": {
|
|
"test": "okay"
|
|
},
|
|
"message": "Hello world!"
|
|
}
|
|
```
|
|
|
|
The context will look like this:
|
|
|
|
```json
|
|
{
|
|
"hass": {
|
|
"components": ["recorder", "logger", "http", "logbook", "api", "frontend"],
|
|
"latitude": 44.1234,
|
|
"location_name": "Home",
|
|
"longitude": 5.5678,
|
|
"unit_system": "metric",
|
|
"time_zone": "Europe/Zurich",
|
|
"version": "0.20.0.dev0"
|
|
},
|
|
"custom": {
|
|
"two": "three",
|
|
"test": "one"
|
|
}
|
|
}
|
|
```
|