koba_takaブログ

AWSとかインフラとかセキュリティとかリモートワークとかとか

AlexaからCloud Automatorを利用してみた

 

こんにちは。Cloud Automator AdventCalendar11日目担当の@koba_takaです。

最近はAlexaにめっきりハマってしまい、もう住人としてAlexaを関西弁カスタマイズできないかなーと妄想していたりしてます。

ということで、今回のCloud Automator AdventCalendarはAlexaとの連携をチラッとご紹介します。 

Cloud Automatorとは

Cloud Automatorでは、AWSのリソースをWeb上の操作画面からGUIで登録し、日時指定やHTTPリクエストをトリガーにして実行いただける「ジョブ」機能。または、お使いいただいているAWS環境のお客様セキュリティポリシーをカバーしていただいているか定期的にレビューしていただける「構成レビュー」の大きな2つの機能を備えた「運用自動化ツール」となります。

cloudautomator.com

 

内容

そんな、運用自動化の一つのアプローチとして、音声(Alexa)からCloud Automatorの利用シーンをご紹介します。

 

Cloud AutomatorでHTTPトリガーでジョブ作成

まず最初にCloud Automatorでジョブを作成します。

HTTPトリガーのジョブ作成方法については、代表のブログより「Cloud Automator側の準備」 をご参考にポチポチと。代表のブログ見るとすごく楽しそうですね。。

blog.serverworks.co.jp

 

ここで注意なのですが、HTTPトリガーを作成しましたら、「トリガー」のURLと「アクセストークン」をメモしてください。 (後ほど使います)

 

Alexa Skillの作成

つづいて、Alexa Skillの作成です。

Alexa Skillは「Amazon Developer Portal」から作成できます。日本語が出たので、だいぶ開発しやすくなりましたね。

ログインし、メニューのAlexaを選ぶと「Alexa Skill Kit」と「Alexa Voice Service」が選べるので、「Alexa Skill Kit」を選びます。

 

f:id:wird-agbu:20171212042921p:plain 

続いて、Skillを追加していきます。

右上の「新しいスキルを追加する」から作成可能です。

f:id:wird-agbu:20171212042950p:plain

 

では、早速作って行きましょう。まずはSkillの基本情報を入力します。

今回は、このようにSkill情報を入力しました。

f:id:wird-agbu:20171212043600p:plain

 

続いて、対話モデルを作成します。

対話モデルの概要についてはこちらの解説がわかりやすいかと思いますので、ぜひ参考ください。

今回は、このようにシンプルに起動モデルを作成しました。

CAIntent インスタンスを起動
CAIntent はい
CAIntent お願いします
CAIntent 起動
CAIntent おなしゃす
CAIntent うぃ
CAIntent よろしく 

続いてLambda Functionを作成します。

 

Lambda Functionの作成

コードは雑となりますが、こちらにあげておきます。ここで注意する箇所は、冒頭で作成したHTTPトリガーとトークンを入力することです。(エラー処理などはしていないので、そこはあしからず。。)

gist.github.com

 speech_outの箇所は好きな言葉を記載していただければ、Alexaが話してくれます。

 

Lambda FunctionとAlexa Skillの紐づけ

最後にLambda FunctionとAlexa Skillを紐づけます。

f:id:wird-agbu:20171212045343p:plain

エンドポイントのタイプを「AWS LambdaのARN」を選択し、デフォルトのフォームにLambdaのARNを入力します。

こちらで基本的な設定は完了となります。 (Skillの公開をするなどがあればもう少し作業は必要ですが、今回はここまで

 

いざ、起動

作ったSkillはiPhoneなどのAlexaアプリより追加・削除可能です。

今回は作ったSkillを追加するので、アプリの「Skills」より作成したSkillを選択し、「ENABLE」にしましょう。

f:id:wird-agbu:20171212045747p:plain

これだけでEchoやAlexa対応のデバイスからCloud Automatorを利用してEC2インスタンスの起動ができます。 

 

使いかた

自分:「Alexa , CAを開いて」

Alexa:「ようこそ、Cloud Automatorへ。インスタンス起動しますか?」

自分:「おなしゃす」

Alexa:「起動したにょーん」

 

みたいなやり取りでAlexaからCloud Automator経由でEC2を起動が可能となります。

 

まとめ

今回はAlexaからCloud Automatorを利用してジョブ起動を実施してみました。正直、EC2起動だけではLambdaだけでいけるんじゃ..と思われた方もいますが、Cloud Automatorはジョブの数珠つなぎができるので、「インスタンスタイプの変更」などの複数の処理が必要なものも予めジョブを作っておけば、Alexaから利用可能です!

(ジョブの数珠つなぎについては、@bump_of_kiharuさんのこちらのブログがかなり参考になります。)

qiita.com

ぜひ、この機会にCloud Automatorを利用して運用ハックしてみてください。でわでわ!