プライベート接続(AWS PrivateLink)
AmiVoice API への AWS PrivateLink 接続をご利用いただくには、事前のお申し込みが必要です。まずはお問い合わせフォームからご連絡ください。
お申し込み後、弊社でお客様の AWS アカウントに対する接続許可を設定し、エンドポイントサービス名をご案内します。本セクションでは、その後にお客様の VPC で行うインタフェースエンドポイントの作成から、弊社による接続承認、プライベート DNS の有効化、接続確認までの手順を説明します。
概要
AWS PrivateLink は、AWS 上のシステムから外部サービスへの通信を、インターネットに公開することなく、AWS のネットワーク内で接続できるサービスです。インターネットゲートウェイや NAT Gateway、パブリック IP アドレスを用意する必要がなく、ネットワーク構成を簡単にできます。通信がインターネットを経由しないため、外部から到達できる経路を持たずに、安全に利用できます。
AmiVoice API へは、お客様の VPC 内に作成したインタフェースエンドポイントを経由して接続します。お客様のアプリケーションは、従来と同じ API キーで AmiVoice API を呼び出せます。
本機能は AmiVoice API Private の専用機能ではありません。通常版でも、ご利用条件を満たす場合にご利用いただけます。
対象となるインタフェース / API と接続先
PrivateLink 接続では、AmiVoice API のうち以下の API を利用できます。
- 音声認識(同期 HTTP/WebSocket/非同期 HTTP)
- ユーザー辞書の操作 (ユーザー辞書登録 / 単語登録クラス名一覧取得)
- API キー発行
接続先は、同期 HTTP/WebSocket などで利用する接続先と、非同期 HTTP の接続先の 2 つに分かれています。
| 利用するインタフェース / API | 従来のホスト名 | PrivateLink 接続時のホスト名 |
|---|---|---|
| ・同期 HTTP / WebSocket ・ユーザー辞書の操作 ・API キー発行 | 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 インタフェースエンドポイントを作成してください。
マイページなど、上記以外のサービスは引き続きインターネット経由でのご利用となります。
接続ガイド
1. 事前準備
| 項目 | 内容 |
|---|---|
| リージョン | ap-northeast-1(東京) |
| 接続元 VPC | エンドポイントを作成する VPC |
| サブネット | エンドポイントを配置するサブネット(複数 AZ 推奨) |
| セキュリティグループ | エンドポイント用(インバウンド TCP 443 を許可) |
| VPC の DNS 設定 | DNS 解決とDNS ホスト名を有効にしておく |
VPC の DNS 設定が無効だと、後述のプライベート DNS 名が解決できません。
2. 事前申請
接続を許可するため、以下を弊社までご連絡ください。
- お客様の AWS アカウント ID(12 桁)
- 利用するインタフェース / API
- 同期 HTTP/WebSocket、ユーザー辞書の操作 (ユーザー辞書登録 / 単語登録クラス名一覧取得)、API キー発行
- 非同期 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 を許可しているもの)
- エンドポイントを作成
作成直後は、接続ステータスが「承諾の保留中(pendingAcceptance)」になります。
AWS CLI の場合
aws ec2 create-vpc-endpoint \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.vpce.ap-northeast-1.vpce-svc-XXXXXXXXXXXX \
--vpc-id <お客様の 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 名の有効化
弊社による承認が完了し、エンドポイントが「使用可能」になったら、プライベート 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 が返れば OK
API 疎通の確認(音声認識)
お手元の音声ファイル(例sample.wav)と AmiVoice API の API キーを用いて確認します。次は同期 HTTP インタフェースの例です。
curl https://acp-api-private.amivoice.com/v1/recognize \
-F u={APIキー} \
-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 設定を確認 |
| ステータスが「承諾の保留中」のまま | 弊社の承認待ち | 弊社へご連絡 |
| 非同期 HTTP だけつながらない | 非同期用のエンドポイントを作成していない | 対象となるインタフェースと接続先を確認し、非同期用のエンドポイントも作成 |
| TLS 証明書エラー | ホスト名以外(IP 直指定等)で接続している | 必ず PrivateLink 用のホスト名で接続 |
補足
- AWS 側の VPC エンドポイント利用料金(時間課金・データ処理料)は、AWS の料金体系に基づきお客様のアカウントに課金。インターネット接続のために NAT Gateway などを用意している場合は、その費用と合わせて検討が必要
- 複数 AZ にエンドポイントを配置することで、可用性が向上
- 本構成では、接続元アプリケーションの送信元 IP を AmiVoice API 側に保持せず、API キーでお客様を識別
ご不明点は弊社サポート窓口までお問い合わせください。