亚马逊网络服务 (AWS)
aws
集成提供一个与 亚马逊网络服务
设置
您必须拥有一个 AWS 账户才能使用亚马逊网络服务,可以在 这里
在 aws
集成中使用的 lambda
、sns
、sqs
和 events
服务,所有用户在 12 个月期限后仍然提供 始终免费 的服务。家庭自动化中的一般使用最有可能不会达到免费层的限制。有关更多详细信息,请阅读 Lambda 定价
aws
集成使用 botocoreaws
与 awscli
工具共享相同的凭证和配置文件。请阅读 配置 AWS CLI
配置
要在您的安装中使用 aws
集成和 notify
平台,请将以下内容添加到您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中。
在更改了configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件后,重启 Home Assistant 以应用更改。 该集成现在显示在集成页面的 设置 > 设备与服务 下。其实体在集成卡片上以及实体标签上列出。
# 示例 configuration.yaml 条目
aws:
credentials:
- name: 我的 AWS 账户
aws_access_key_id: AWS_ID
aws_secret_access_key: AWS_SECRET
notify:
# 默认使用在 aws 集成中定义的第一个凭证
- service: lambda
region_name: us-east-1
凭证配置
Configuration Variables
您的 AWS 访问密钥 ID。如果提供此项,您还必须提供一个 aws_secret_access_key
,且不得提供 profile_name
。如果提供 aws_secret_access_key
则此项为必需。
您的 AWS 秘密访问密钥。如果提供此项,您还必须提供一个 aws_access_key_id
,且不得提供 profile_name
。如果提供 aws_access_key_id
则此项为必需。
通知配置
Configuration Variables
对 aws
凭证的引用。如果没有提供 credential_name
、aws_access_key_id
或 profile_name
,通知平台将使用 ~/.aws
中定义的 默认配置文件
。
您的 AWS 秘密访问密钥。如果提供此项,您还必须提供一个 aws_access_key_id
。如果提供 aws_access_key_id 则此项为必需。
Lambda 通知用法
AWS Lambda 是一个通知平台,因此可以通过调用 notify
动作如这里所述来控制。它会为通知有效载荷中给出的所有目标调用 Lambda。目标可以格式化为函数名称、完整 ARN(亚马逊资源名称
Lambda 事件有效载荷将包含传递给动作有效载荷的所有内容。以下是将发送到 Lambda 的有效载荷示例:
{
"title": "测试消息!",
"target": "arn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecords",
"data": {
"test": "好的"
},
"message": "你好,世界!"
}
上下文将如下所示:
{
"custom": {
"two": "three",
"test": "one"
}
}
SNS 通知用法
AWS SNS 是一个通知平台,因此可以通过调用 notify
动作 如这里所述 来控制。它将向通知有效载荷中给出的所有目标发布消息。目标必须是 SNS 主题或端点 ARN(亚马逊资源名称
如果存在,SNS 主题将设置为标题。除消息外,来自有效载荷的所有属性都将作为字符串化的消息属性发送。
在 AWS 中设置 SNS
- 登录到您的 AWS 控制台,在“安全与身份”下,选择“身份与访问管理”。
- 在左侧选择“用户”,然后点击“创建新用户”。在此输入名称,然后点击“创建”。
- 您可以下载凭证或点击箭头一次性显示它们。
如果您不下载它们,您将失去它们,必须重建一个新用户。
- 复制/粘贴在您的
configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中显示的两个密钥。 - 在屏幕左侧返回“用户”部分,选择您刚刚创建的用户。在“权限”选项卡中点击“附加策略”图标。搜索 “SNS” 并附加策略 “AmazonSNSFullAccess”。
- 回到 AWS 控制台,现在需要找到 “SNS” 并点击该服务。它位于移动服务组下。
- 在左侧,选择“主题”,然后“创建新主题”。
- 选择主题名称和显示名称。
- 现在勾选您刚创建的主题旁边的框,在操作下选择“订阅主题”。
- 在弹出框中选择协议 = 短信,并在“端点”旁边输入您希望发送短信的电话号码。现在点击“创建”。
- 为其他号码重复此操作。
- 在“用户”部分,您将看到从“arn:” 开始并以您之前选择的主题名称结束的长字母数字行。这将是您在家庭助理中的“目标”。
SQS 通知用法
AWS SQS 是一个通知平台,因此可以通过调用 notify
动作 如这里所述 来控制。它将为通知有效载荷中给出的所有目标发布消息到队列。目标必须是 SQS 主题 URL。有关更多信息,请参见 SQS 文档
SQS 事件有效载荷将包含传递给动作有效载荷的所有内容。SQS 有效载荷将作为字符串化的 JSON 发布。来自有效载荷的所有属性,除了消息,也将作为字符串化消息属性发送。以下是将发布到 SQS 队列的消息示例:
{
"title": "测试消息!",
"target": "https://sqs.us-east-1.amazonaws.com/123456789012/queue2%22",
"data": {
"test": "好的"
},
"message": "你好,世界!"
}
EventBridge 通知用法
AWS EventBridge 是一个通知平台,因此可以通过调用 notify
动作 如这里所述 来控制。它将向事件总线发布消息,针对通知有效载荷中给出的所有目标。目标必须是可通过给定凭证访问的事件总线的名称。如果未指定目标,则不需要,并将使用默认事件总线。有关更多信息,请参见 EventBridge 文档
有两种选择可以根据动作有效载荷生成事件详细信息。如果指定了 detail
属性,则其值将序列化为 JSON 对象并用于事件详细信息。如果未指定该属性,则 message
属性的值将序列化为一个简单的 JSON 对象,键名为 message
,值为传递给动作的消息。
以下是显示动作输入和相应 API 条目的几个示例:
// 服务调用有效载荷
{
"message": "你好,世界!"
}
// 相应条目
{
"Detail": "{\"message\": \"你好,世界!\"}"
"DetailType": "",
"Source": "homeassistant",
"Resources": [],
}
// 服务调用有效载荷:
{
"target": ["eventbus1", "eventbus2"]
"data": {
"detail_type": "test_event":
"detail": {
"key1", "value1",
"key2", "value2"
},
"resources": ["resource1", "resource2"],
"source": "example"
}
}
// 相应条目
[
{
"Detail": "{\"key1\": \"value1\",\"key2\": \"key2\": \"value2\"}"
"DetailType": "test_event",
"EventBusName": "eventbus1",
"Resources": ["resource1", "resource2"],
"Source": "example"
},
{
"Detail": "{\"key1\": \"value1\",\"key2\": \"key2\": \"value2\"}"
"DetailType": "test_event",
"EventBusName": "eventbus2",
"Resources": ["resource1", "resource2"],
"Source": "example"
}
]