私有连接(AWS PrivateLink)
如需使用连接到 AmiVoice API 的 AWS PrivateLink 连接,需要事先申请。请首先通过咨询表单与我们联系。
申请后,本公司会为您的 AWS 账户设置连接许可,并向您告知端点服务名称。本节说明此后您在自己的 VPC 中进行的操作,从创建接口端点到本公司进行连接批准、启用私有 DNS、确认连接为止的步骤。
概要
AWS PrivateLink 是一项可以将 AWS 上的系统到外部服务的通信在不向互联网公开的情况下,在 AWS 网络内进行连接的服务。无需准备互联网网关、NAT Gateway 或公有 IP 地址,可以简化网络配置。由于通信不经由互联网,因此可以在不具有从外部可达路径的情况下安全地使用。
对于 AmiVoice API,通过在您的 VPC 内创建的接口端点进行连接。您的应用程序可以使用与以往相同的 API Key 调用 AmiVoice API。
本功能并非 AmiVoice API Private 的专用功能。在满足使用条件的情况下,普通版也可以使用。
对象接口 / API 与连接目标
在 PrivateLink 连接中,可以使用 AmiVoice API 中的以下 API。
- 语音识别(同步 HTTP / WebSocket / 异步 HTTP)
- 用户词典操作 (用户词典注册/获取单词注册类名列表)
- API Key 发行
连接目标分为两个:在同步 HTTP / WebSocket 等中使用的连接目标,以及异步 HTTP 的连接目标。
| 使用的接口 / API | 以往的主机名 | PrivateLink 连接时的主机名 |
|---|---|---|
| ・同步 HTTP / WebSocket ・用户词典操作 ・API Key 发行 | acp-api.amivoice.com | acp-api-private.amivoice.com |
| ・异步 HTTP | acp-api-async.amivoice.com | acp-api-async-private.amivoice.com |
如果同时使用同步 HTTP / WebSocket 和异步 HTTP,请分别创建对应的 VPC 接口端点。
MyPage 等上述以外的服务,仍然通过互联网使用。
连接指南
1. 事前准备
| 项目 | 内容 |
|---|---|
| 区域 | ap-northeast-1(东京) |
| 连接源 VPC | 创建端点的 VPC |
| 子网 | 放置端点的子网(推荐多个 AZ) |
| 安全组 | 端点用(允许入站 TCP 443) |
| VPC 的 DNS 设置 | 预先将DNS 解析和DNS 主机名设为启用 |
如果 VPC 的 DNS 设置被禁用,则无法解析后述的私有 DNS 名。
2. 事前申请
为了许可连接,请将以下内容联系本公司。
- 您的 AWS 账户 ID(12 位)
- 使用的接口 / API
- 同步 HTTP/WebSocket,用户词典操作 (用户词典注册/获取单词注册类名列表),API Key 发行
- 异步 HTTP API
本公司进行许可设置后,会针对您所使用的每个接口,向您告知端点服务名称。名称为以下格式。
com.amazonaws.vpce.ap-northeast-1.vpce-svc-XXXXXXXXXXXX
如果同时使用同步和异步,服务名称也会告知 2 个。
3. 创建接口端点
针对已告知的每个端点服务名称,进行此步骤。如果同时使用同步和异步,将创建 2 个端点。
创建时请勿启用「启用私有 DNS 名」。由于本服务需要手动批准连接,如果在批准前尝试启用私有 DNS,将因以下错误而创建失败。
Private DNS can only be enabled after the endpoint connection is accepted by the owner ...
私有 DNS 在4. 连接批准(本公司侧)完成后,按照5. 启用私有 DNS 名的步骤启用。
管理控制台的情况
- VPC 控制台 → 端点 → 创建端点
- 类型:选择 「使用 NLB 和 GWLB 的端点服务」
- 在服务名称中输入本公司告知的服务名称,点击 「验证服务」
- 如果显示「找不到服务名称」,则可能是本公司侧的许可设置尚未完成(→ 请确认2. 事前申请)
- 选择 VPC
- 「启用私有 DNS 名」保持 OFF(不勾选)
- 选择放置端点的 AZ 和子网
- 选择安全组(允许入站 TCP 443 的安全组)
- 创建端点
创建后立即,连接状态将变为「待接受(Pending acceptance)」。
AWS CLI 的情况
aws ec2 create-vpc-endpoint \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.vpce.ap-northeast-1.vpce-svc-XXXXXXXXXXXX \
--vpc-id <CUSTOMER_VPC_ID> \
--subnet-ids <subnet-id-1> [<subnet-id-2> ...] \
--security-group-ids <sg-id> \
--no-private-dns-enabled \
--region ap-northeast-1 \
--tag-specifications 'ResourceType=vpc-endpoint,Tags=[{Key=Name,Value=acp-api-private-ep}]'
创建 2 个端点时,若按接口更改Name标签,之后会更容易区分。
4. 连接批准(本公司侧)
当您创建端点后,本公司侧会收到连接请求。本公司确认内容后进行批准。批准后,端点的状态将变为「可用(Available)」。
由于批准需要本公司的确认作业,可能会花费一些时间。如果告知我们已创建,会更加顺畅。
5. 启用私有 DNS 名
本公司的批准完成,端点变为「可用(Available)」后,启用私有 DNS。由此,在您的 VPC 内,PrivateLink 连接时的主机名会自动解析到您所创建的端点。您侧无需 Route 53 等额外的 DNS 设置。
创建了 2 个端点时,请分别启用。
管理控制台的情况
- VPC 控制台 → 端点 → 选择目标端点
- 操作 → 修改私有 DNS 名
- 将 「在此端点上启用私有 DNS 名」设为 ON → 保存
AWS CLI 的情况
aws ec2 modify-vpc-endpoint \
--vpc-endpoint-id <vpce-id> \
--private-dns-enabled \
--region ap-northeast-1
- 此操作能够启用,仅限于本公司侧的域验证已完成的情况
- VPC 的
DNS 解析和DNS 主机名处于启用状态(1. 事前准备)
6. 确认连接
启用私有 DNS 后,从您 VPC 内的实例进行确认。创建了 2 个端点时,请分别确认。
确认名称解析
# 同步 HTTP、WebSocket 用
dig +short acp-api-private.amivoice.com
# 非同步 HTTP 用
dig +short acp-api-async-private.amivoice.com
# 如果返回 172.x.x.x 等私有 IP 则正常
确认 API 连通(语音识别)
使用您手头的音频文件(例sample.wav)和 AmiVoice API 的 API 密钥进行确认。以下是同步 HTTP 接口的示例。
curl https://acp-api-private.amivoice.com/v1/recognize \
-F u={API_KEY} \
-F d="grammarFileNames=-a-general" \
-F a=@sample.wav
如果返回识别结果的 JSON(text字段等),则连接正常。
异步 HTTP 接口的情况,请将主机名替换为acp-api-async-private.amivoice.com。步骤请参阅异步 HTTP 接口。
7. 从应用程序使用
确认连接后,请将应用程序的 AmiVoice API 连接目标主机更改为 PrivateLink 连接时的主机名。同步 HTTP 和 WebSocket 为 acp-api-private.amivoice.com,异步 HTTP 为 acp-api-async-private.amivoice.com。API 的路径・参数・认证(API 密钥)与以往相同,更改的只有主机名。
故障排除
| 症状 | 主要原因 | 处理 |
|---|---|---|
创建时出现Private DNS can only be enabled after the endpoint connection is accepted ...错误 | 在批准前尝试启用私有 DNS | 以私有 DNS OFF 创建 → 批准后按照5. 启用私有 DNS 名的步骤启用 |
| 在「验证服务」中找不到 | 本公司侧的许可设置尚未完成 | 将您的 AWS 账户 ID 联系本公司 |
| 连接超时 | 端点的安全组未允许 443 | 在 SG 的入站中添加 TCP 443 |
| 无法启用私有 DNS 名 | 本公司侧的域验证尚未完成,或 VPC 的 DNS 设置被禁用 | 联系本公司/启用 VPC 的 DNS 解析・DNS 主机名 |
| 无法解析 PrivateLink 用的主机名 | 私有 DNS 名未启用,或 VPC DNS 设置被禁用 | 在5. 启用私有 DNS 名中启用私有 DNS/确认 VPC DNS 设置 |
| 状态一直是「待接受(Pending acceptance)」 | 等待本公司批准 | 联系本公司 |
| 只有异步 HTTP 连不上 | 未创建异步用的端点 | 确认对象接口与连接目标,也创建异步用的端点 |
| TLS 证书错误 | 以主机名以外(直接指定 IP 等)进行连接 | 请务必以 PrivateLink 用的主机名连接 |
补充
- AWS 侧的 VPC 端点使用费用(按时间计费・数据处理费),基于 AWS 的计费体系计入您的账户。如果为了互联网连接而准备了 NAT Gateway 等,需要连同其费用一并考虑
- 通过在多个 AZ 中放置端点,可提高可用性
- 在本配置中,不在 AmiVoice API 侧保留连接源应用程序的发送源 IP,而是通过 API 密钥识别您
如有不明之处,请咨询本公司支持窗口。