Amazon Connectで「ダイヤル分岐」コネクトセンターを実装する【ハンズオン】

はじめに

この記事では

  • Amazon Connectにダイヤル分岐処理を実装する手順

についてハンズオン形式で解説していきます。
なお、Amazon Connectの概要やAWSアカウントの登録方法・Amazon Connectのインスタンスの作成手順についてはこちらの記事をご参考ください。

Amazon Connectの使い方[丁寧に解説してみた]

コネクトセンターに必須の「ダイヤル分岐」

新型コロナウイルス感染症の拡大に伴い、次に示すような問い合わせフロー図を目にする機会が増えてきたように思います。

スクリーンショット 2020-04-28 19.27.20.png

(新型コロナウイルス感染症にかかる相談窓口について[東京都福祉保健局]より引用)

ダイヤル分岐による音声案内を実施しているところもあるようです。

スクリーンショット 2020-04-28 19.21.55.png

(新型コロナウイルス感染症に対する「帰国者・接触者相談センター」の設置について[神奈川県]より引用)

Amazon Connectを活用すれば上記のような「ダイヤル分岐」を実装することも可能です。
実装には基本ブロックの一つである「顧客の入力を取得する」を使用します。

「ダイヤル分岐」の実装

それでは、実装していきます。
電話をかけると音声案内が流れ、

  • 「0」を押すとAさんに電話が転送
  • 「1」を押すとBさんに電話が転送
  • 「0」または「1」以外を押してしまった場合は再度正しい値の入力を促す
  • 一定時間操作がない場合は値入力を促す

という機能を実装していきます。

AWSアカウントの登録方法からAmazon Connectのインスタンスの作成までは次の記事を参考にしてください。
Amazon Connectの使い方[丁寧に解説してみた]

問い合わせフローの作成

左のメニューから「ルーティング」→「問い合わせフロー」をクリックします。

図1.png

「問い合わせフローの作成」をクリックします。

図2.png

「名前の入力」にフローのタイトル(SampleFlowとします)を書いて「保存」をクリックします。

図3.png

「設定」の「音声の設定」を選んでドラッグし「エントリポイント」と接続します。

図4.png

音声の設定は「日本語」に設定しておきましょう。「Save」をクリックします。

図5.png

「顧客の入力を取得する」ブロックの実装

「操作」より「顧客の入力を取得する」をドラッグし「音声の設定」と接続します。

図6.png

「テキストの入力」に読み上げたい内容を記載します。

図7.png

下にスクロールしてタイムアウトの設定を行い、「別の条件を追加」をクリックして「0」「1」を追加します。終わったら「Save」をクリックします。

図8.png

タイムアウト処理

「ブランチ」から「ループ」をドラッグし、「顧客の入力を取得する」のタイムアウトと接続します。

図9.png

ループの数を設定します(今回は3回とします)。その後「Save」をクリックします。

図10.png

「終了/転送」の「切断/ハングアップ」をドラッグし、「ループ」ブロックの「ループ」を「顧客の入力を取得する」に接続し、「ループ」ブロックの「完了」を「切断/ハングアップ」に接続します。

図11.png

これによって音声案内が流れて一定時間操作がない場合にタイムアウト時間分経過するたびに再度案内が流れ、3回案内が流れても操作がない場合は電話が切れるようになります。

デフォルト処理

予定外の入力があった場合(「0」「1」以外の番号など)はデフォルト処理として実行されます。

「操作」から「プロンプトの再生」をドラッグし、「顧客の入力を取得する」の「デフォルト」を「プロンプトの再生」に接続し、「プロンプトの再生」の出力から「顧客の入力を取得する」に接続します。

図12.png

予定外の入力があった場合に読み上げるテキストを設定します。設定したら「Save」します。

図13.png

これで予定外の入力があった場合は再度ダイヤル分岐の案内が流れるようになります。

エラー処理

それ以外の予期せぬエラーが生じた場合は電話が切断されるようにします。

「顧客の入力を取得する」ブロックの「エラー」を「切断/ハングアップ」に接続すればOKです。
次からは分岐処理の実装に移ります。別の画面に移るので一度「保存」しておきましょう。

図14.png

分岐処理の実装

音声案内に従い「0」を押したらAさんに電話が繋がり、「1」を押したらBさんに繋がるようにします。

左のメニューから「ルーティング」の「キュー」を選択します。

図15.png

「新しいキューの追加」をクリックします。

図16.png

名前や説明を記載し、「新しいキューの追加」をクリックします。
アウトバウンド発信者ID番号はインスタンス作成時に取得した電話番号を選択します。キューはユーザーの数だけ作成します。

図99.png

同様の手順でもう一人の分のキューも作成します。
図3.png

続いて左のメニューから「ユーザー」の「ルーティングプロファイル」を選択してください。

図100.png

「新しいプロファイルの追加」をクリックします。

図19.png

名前と説明を記載し、「Voice」にチェックを入れます。

図20.png

ルーティングプロファイルのキューに先ほど作成したキューを選択します。デフォルトのアウトバウンドキューも先ほどのキューを設定しておきましょう。

図21.png

「新しいプロファイルを追加」がクリックできるようになります。

図22.png

同様の手順でもう一人の分も作成します。
図2.png

左のメニューで「ユーザー」の「ユーザー管理」をクリックします。

図23.png

「新しいユーザーの追加」をクリックします。

図24.png

「作成」を選択し次へ進みます。

図25.png

必要事項を記載します。
ルーティングプロファイルは先ほど作成したものを選択してください。電話の種類はソフトフォンでOKです。セキュリティプロファイルは受信発信を実施する場合は「Agent」を選択します。(※複数ユーザーを作成する場合はいずれかのユーザーに「Admin」も選択しておくことを推奨します。)
エージェント階層は空欄で大丈夫です。

図26.png

「保存」をクリックします。

図27.png

「ユーザーの作成」をクリックします。

図28.png

「他のユーザーの作成」または「戻る」をクリックします。(今回はもう一人のユーザーを追加します。)

図29.png

もう一人のユーザーも作成しました。
図1.png

左メニューから「ルーティング」の「問い合わせフロー」をクリックし、先ほどまで作成していた問い合わせフローを開きます。
そして、「設定」の「キューの設定」をドラッグし、「Pressed 0」に接続します。

図30.png

キューの設定は作成したキューを選択します。「Save」します。

図31.png

「終了/転送」の「キューへの転送」をドラッグし、「キューの設定」から接続します。「キューへの転送」ブロックはデフォルト設定のままでOKです。

図32.png

「キューの設定」の「エラー」、「キューへの転送」の「容量」及び「エラー」を「切断/ハングアップ」に接続します。

図33.png

同様にして「Pressed 1」にBさんのブロックを追加します。その後、「公開」をクリックします。

図34.png

これでほとんど完成です!次にデフォルト顧客キューの音声設定を変更しましょう。

デフォルト顧客キューの音声設定

左のメニュー「ルーティング」の「問い合わせフロー」から「Default customer queue」を選択してください。

図35.png

テキストの内容を変更しましょう。こちらの設定でキュー転送時に流れる音声内容を設定できます。設定が終わったら「Save」して「公開」にしましょう。

図36.png

最後にインスタンス生成時に取得した電話番号を今回作成した問い合わせフローに割り当てれば完成です。

電話番号の割り当て

左メニュー「ルーティング」の「電話番号」をクリックします。
図1.png

取得した電話番号をクリックします。
図2.png

作成した問い合わせフローを選択し、「保存」します。
図3.png

お疲れ様でした!以上で実装作業は完了です。

オペレーターとして運用する方法

それではオペレーターとして受電対応する場合について説明します。

AWSのマネジメントコンソールから「Amazon Connect」を開きます。
図4.png

「アクセスURL」をクリックします。
図5.png

作成したユーザー(「Agent」権限が与えられているもの)のユーザー名、パスワードを入力してサイインインしてください。
図6.png

「ステータスの変更」で「Offline」から「Available」へ変更します。
図7.png

これでいつでも受電できる状態になりました。
図8.png

架電した人が音声案内に従い、こちらのオペレーター接続すると次のような表示になります。
「通話を受信」で通話が開始されます。
図9.png

「通話を終了」で切断されます。
図101.png

「デスクフォン」で携帯電話に転送して受電する

歯車マークからデスクフォンを選択し、電話番号を入力すると携帯電話で受電することもできます。
図10.png

おわりに

ダイヤル分岐のコネクトセンターの実装方法についてハンズオン形式で説明しました。
Amazon Cennectでは基本ブロックの組み合わせで様々なことができると改めて実感しました。
ご参考いただけると幸いです。


Amazon Connectの使い方[丁寧に解説してみた]

はじめに

現在、急なリモート対応に追われている方も多いと存じますが、当社ではAmazon Connectを活用したリモートワークの導入に成功しています。
本記事では当社がそこに到るまでに得た経験や知識を踏まえて、わかりやすく導入方法を解説致します。
リモート勤務を検討している皆様の一助となれば幸いです。
*この記事は大変長いため目次を一覧するにはページ右側をスクロールする必要があります。

本記事のターゲットとゴール

  • ターゲット
    • 社内のリモートワーク導入の第一歩として、社内電話を在宅でも使用できるようにしたい人
    • 電話対応のために現在どうしても出社する必要がある人
    • 将来的にAmazon Connect導入することでコールセンターの効率化を目指しており、まずはお試しで触れてみたい人
  • ゴール
    • 社内電話をAmazon Connectというサービスに代替するために、初期設定と実際に機能しているかテストするところまで(ゴールまでの想定時間は2時間です) alt

今回の想定使用方法

  • 受信: 受信: 会社に電話→電話をAmazon Connectに転送→キューに転送→PCで受信→更に携帯電話に転送(上図参照) 。外部から着信する電話番号は「現在使っている番号」となります。
  • 発信: Amazon Connectから発信。外部へ発信する電話番号は「Amazon Connectで取得した番号」となります。(050-など)

*今回の方法では会社の固定電話を転送する必要があります。
会社の固定電話を転送するにはNTTのボイスワープを導入しましょう。

NTTボイスワープとは

  • 電話の受信時に、指定の電話機等を鳴らすことなく希望の番号に転送することができるサービスです。 電話回線がNTTの場合、工事不要で利用できるオプションサービスです。 事務用ですと月額800円でご利用できます。

参考URL
NTT東日本 ボイスワープとは
https://web116.jp/shop/benri/vw/vw_00.html

NTT西日本 ボイスワープ(オプション)
https://www.ntt-west.co.jp/denwa/service/voicewp/gaiyou.html

Amazon Connectとは何か?

Amazon ConnectとはAmazon社の提供する簡単にコールセンターを開設できるサービスです。
自動音声案内を使った本格的なコールセンターの構築などもできますが、今回は社内電話を在宅勤務中に携帯電話で受信する方法を記述します。

Amazon Connectを使用するメリットとしては、導入までが早い、低コスト、障害に強い、現在の電話番号を使用できることが挙げられます。
以下ではそれらについて少しだけ詳しく記述します。
alt

メリット

1. 導入までが早い

コールセンターの開設が独力で実現します。
全くのゼロからでもAWSアカウントを作成し、初期設定をし、電話番号に関する設定を完了させればその日に使用を開始することが出来ます。

2. 初期コストが安い

Amazon Connectは初期費用、長期契約や最低月額費用などが必要ありません。
基本的に使った分だけ請求される従量課金制なので安心して無料で使用を開始出来ます。

料金表(日本)
alt
目安例:日本国内で受信通話を使用した金額(概算)
→→→直通ダイヤルの時は0.5円。無料通話の時は5円
*ただし別途で1日あたりの要求された電話番号の数も課金されます。

ケース:月に受信(50時間)、発信(50時間)利用する際の概算(1ドル=100円として)
→→→受信(約1200円)+発信(約30000円)=約31200円(月額)
参考URL
https://aws.amazon.com/jp/connect/pricing/

3. 障害に強い

サーバーは巨大なデータセンター内で分散して立てられるので災害などの急なトラブルに非常に強いです。
またAWSの性質として急なアクセス増加に非常に強く、回線がパンクすることがありません。

4. 現在の電話番号を使用できる

着信時に既存の番号からAmazon Connectの番号に転送することで、会社に行かなくても電話を受けることができます。ただし発信時は既存番号をお客様に通知することはできません。

従来の電話システムとAmazon Connectの比較

alt

1. システム導入までのハードル

従来の電話システム<<Amazon Connect
Amazon Connectは電話回線を引く必要がなく、すぐにコールセンターの構築ができます。

2. リモート適性

従来の電話システム<<<Amazon Connect
インターネットでAmazon Connectに繋ぐだけで在宅勤務が可能です。

3. 音声の品質

従来の電話システム>Amazon Connect
インターネット接続のため電話回線よりも安定性が足りない面があります。
結果として少し音声が乱れるケースもあるでしょう。

4. オペレーターをサポートする機能

従来の電話システム>>Amazon Connect
Amazon Connectのオペレーター画面はシンプルなので、既存のコールセンターのものと比べて不便な面があります。

AWSにログイン

ここから実際にAmazon Connectの設定を行い、固定電話にかかってきた電話を転送してパソコン/携帯電話で受ける方法や電話の掛け方を解説します。

Amazon Connectを導入するにはAWSアカウントが必要です。
もし所持していない場合は以下のURLに従ってアカウントの作成をしましょう。
参考URL
https://aws.amazon.com/jp/register-flow/

alt
アカウントの用意ができたらAWSコンソールにサインインをクリックしましょう。

alt
ルートユーザーを選択し、Eメールアドレスとパスワードを入力してログインします。

alt
ログインしたら、”サービス”から”Amazon Connect”を検索しクリックしましょう。
また右上のリージョンは”東京リージョン”を必ず指定してください。

alt
次の画面にある”今すぐ始める”をクリックしてください。

alt
この画面に移るのでアクセスURLの空欄には好きなワードを入れてください。
アクセスURLはメールアドレスのようなものです。
会社で使う場合は会社名をローマ字表記で入力すれば無難でしょう。

初期設定の方法

1. 管理者設定

alt
ここから初期設定です。それぞれの欄を埋めて、”次のステップ”をクリックしてください。
ユーザー名は日本語が使えないのでローマ字と一部の記号、パスワードは大文字・数字を含めた8字以上で設定してください。

2. テレフォニーオプション

alt
今回は受信も発信もAmazon Connectで実行するので、両方チェックが付いているまま”次のステップ”をクリックします。

3. データとストレージ

alt
ここでは通話記録など諸々のデータを保存する場所を確認できます。 データと問い合わせフローログの保存場所チェックしたら”次のステップ”をクリックしましょう。

4. レビューと作成

alt

最後にここまで設定した内容を確認できるので、問題なければ”インスタンスの作成”をクリックしましょう。
(作成には1〜2分かかることがあります)

インスタンスの中身を作成する

インスタンスとはAmazon Connect上に構築したシステムを入れる箱(またはPBX)のようなものだと思っていてください。
ここまでの初期設定ではコールセンターという家の外観を作ったようなものです。
次は家の中身を作らなければいけません。
以下ではコールセンターのシステムを本格的に構築していきます。

alt
インスタンスの作成が終わると、上記の画面が表示されるので”今すぐ始める”をクリックしましょう。

alt
サイトが英語表記になっても右上の部分で日本語を選択することで変更できます。”Let's go”をクリックしてください。

1. 電話番号の取得

alt
まずはAmazon Connect上のあなたの(主に発信で利用する)電話番号を取得しましょう。 国は”日本”を選び、完了したら”次へ”をクリックしてください。(電話番号右側のバーで他の番号の選択もできます)

2. キューの作成

電話をユーザーに転送するには一度キューと呼ばれる場所を経由しなくてはいけません。
(Amazon Connectに電話受信→キューに転送→ユーザーに転送)
電話中のユーザーにいきなり転送されてしまうと困りますよね?
そこで一度キューに預けている間に、電話を受け取れるユーザーを探すわけです。
つまりキューとは電話がユーザーに転送されるまで電話を一時的に保持する領域のことです。

alt
ルーティングの欄のキューをクリックしてください。

alt
新しいキューを追加しましょう。右上にある”新しいキューの追加”をクリックします。

alt
今回の手順では”general_que”という名前でキューを追加しています。説明はキューの使用用途を書けば分かりやすいです。オペレーション時間は”Basic”で大丈夫です。 またアウトバウンドの発信番号を先程取得したAmazon Connectの番号にすることで発信ができるようになります。忘れずに設定するようにしましょう。完了したら”新しいキューの追加”をクリックしてください。

3. ルーディングプロファイル設定

上記のようにキューを作成しましたが、キューを複数作ることで電話によって受信するユーザーを変えることができます。

[例]サービスの新規契約についてはAの部署、サービス解約についてはBの部署のように振り分けられる。

alt
そうなると、どのキューに電話を転送されたら誰に転送するかを決める必要がありますよね。
ルーティングプロファイルではそれを設定することができます。

今回は複数のキューを併用しませんが、一応設定する必要があります。

alt
ユーザーの欄にあるルーティングプロファイルをクリックしてください。

alt
右にある“新しいプロファイルを追加”をクリックします。

alt
今回の手順では「general_profile」という名前でルーティングプロファイルを追加していきます。説明はこのプロファイルがどういう役割を果たすかという軸で書くと分かりやすいでしょう。今回のようなテストでは適当でも大丈夫です。Chatも使う予定はないので”Voice”だけ選択しましょう。

alt
ルーティングプロファイルのキューとアウトバウンドキューは先ほど作った”general_que”を選びましょう。ルーティングプロファイルの”Channels”は”Voke”を選択してください。
完了したら”新しいプロファイルを追加”をクリックしてください。

4. ユーザー設定

ここではコールセンターの各オペレーターの設定をします。

alt
ユーザーの欄のユーザー管理をクリックしてください。

alt
右にある“新しいユーザーの追加”をクリックしてください。

alt
ここは”作成”を選択してください。

alt
氏名、ログイン名、メールアドレス(なくてもいい)、パスワードを入力してください。ルーティングプロファイルは先ほどの”general_profile”を 、セキュリティプロファイルは”Agent”を選択してください。 ”Agent”にすると電話の受信と発信ができます (画面では”QualityAnalyst”になっていますが”Agent”にしましょう)
電話の機能はソフトフォンのままにしてください。

alt
確認したら作成をしましょう。

alt
私はその後に徳川さんも加えました。
一覧はこのようにユーザーの管理のトップ画面から見えます。

5. 問い合わせフローの作成

最後に問い合わせフローを作成します。
問い合わせフローを設定すると、電話を受信した時に指定したプログラムを順次実行できます。

alt
ルーティングの問い合わせフローをクリックしましょう。

alt
問い合わせフロー作成をクリック

alt
まずは左から右に上記のようにドラッグアンドドロップで配置してください。
(“音声の設定”、 “プロンプトの再生”、 “キューの設定”、 “キューへの転送”、 “切断”をドラッグアンドドロップ)

alt
まずは音声の設定をクリックし、言語を”日本語”、音声を”mizuki”に設定します。 (この作業をすることで日本語の音声案内を流せます)

alt
次に”プロンプトの再生”をクリックし、電話を転送して通話できるまでに流れる自動音声を設定します。
“テキスト読み上げまたはチャットテキスト”を選択し、読み上げたい音声を”テキストの入力”欄に記入してください。

alt
キューの設定で先ほど作成したキューを指定してセーブしましょう。
*画像では”test”になっていますが本来は”general_que”です。

alt
キューの転送をクリックし、上記のようになっているのを確認したらセーブしましょう。

alt

最後に上記のようにフローを結んでください。
できたら”保存”して”公開”しましょう。

6. 問い合わせフローと電話番号の紐付け

alt
次に作成した問い合わせフローと電話番号を紐付けます。
ルーティングから電話番号をクリックしてください。

alt
自分の電話番号をクリックしてください。

alt
上記画面に移るので
先ほどの問い合わせフローを選択し、保存してください。
以上で設定終了です。お疲れ様です。

受信、着信テストをしてみよう

alt
設定が終わったので動作確認をしましょう。
AWSコンソールにログインし、サービスのAmazon Connectをクリックしましょう。
すると上記の画面が表示されます。
自分のインスタンス名をクリックしてください。

alt
ログインURLからCCP(オペレーター用画面)に入りましょう。

1. 発信テスト

alt
まずOfflineになっているのでAvailableに変更してください。
発信テストからいきましょう。
”番号をダイヤル”をクリックしてください。

alt
国を日本に変更し、電話番号の一桁目を抜いて電話番号を入力してください。

alt
この画面になれば発信成功です。

2. 受信テスト

alt
次に受信してみましょう。
今回はAmazon Connectにきた電話を自分の携帯に転送します。
歯車マークの設定画面から”デスクフォン”に変更し、
自分の携帯番号の一桁目を抜いたナンバーを入力してください。

"ソフトフォン"と”デスクフォン”とは?

  • ソフトフォン→インターネット回線を通じてPC上で使える電話
  • デスクフォン→置き型の電話や携帯電話など電話回線を使う電話

alt
あとは誰かに電話をしてもらって転送できてるか確認しましょう。
電話を受けると上記の画面になります。

インスタンスの削除方法

alt

最後にコールセンターが不要になった場合は
上記のようにチェックマークをつけて削除をクリックするだけで簡単にインスタンスを削除できます。

終わりに

いかがでしたか?
今回は単純なフローを設定しましたが、フローをより複雑に構築することで電話対応の業務を大きく効率化できます。
次回はより効率化されたコールセンターの開設の仕方について取り上げます。
ぜひお楽しみに!!


5/28(木)いますぐできます!在宅コールセンター開設ウェビナー!構築デモあり【Amazon Connect】を開催します!!

セミナー内容

現在、新型コロナウイルスの影響により在宅勤務に切り替える企業様が増えております。
一方で電話受付業務(輪番電話受付業務)で出社せざるを得ない企業様、団体様も多くいらっしゃると思います。
このような状況でも、急遽コールセンターの環境を用意しなくてはいけないなどの悩みを抱えている企業様、団体様もいらっしゃると思います。

クラウドベースのコンタクトセンターソリューション「Amazon Connect」を利用すれば、自宅での電話の受付業務が継続はもちろん、コールセンター環境も簡単、且つ短時間で実現可能です。

本セミナーではそんな「Amazon connect」を利用した弊社でのユースケースをはじめ、ルーティング機能、ダイヤル分岐等のデモを交えて「Amazon connect」の使い勝手を知っていただけたらと思っております。

対象となるお客様

  • 電話受付業務のため、出社しなければならず、自宅で固定電話の受付をしたい
  • 急遽コールセンターを開設する必要が出てしまったので相談したい
  • 現状の電話業務を効率化・高度化できるか相談したい

本セミナーのゴール

  • Amazon Connectがどういったものかを知ることができます
  • 簡単なコンタクトセンターをすぐに作れるようになります

alt

Amazon Connectとは?

Amazon ConnectとはAWSの提供するコンタクトセンターを簡単に開設できるサービスです。

アジェンダ

  • 電話業務における現状の課題
  • Amazon Connectで解決できること
  • ユースケース
  • デモ
  • QA

タイムテーブル(予定)

時間 内容
11時55分 受付開始
12時~ 開会のご挨拶
~12時15分 セミナー
~12時40分 構築デモ
~12時55分 QA
13時 閉会の挨拶

日時:2020年 5月28日(木) 12時~13時
場所:オンライン(Microsoft Teams)
参加費:無料

参加方法

当日のウェビナーはteamsを使用して開催します。 こちらよりお申し込みいただいた後に、登録完了メールがお手元に届きます。 そちらのメールに当日の参加用 URLが掲載されておりますので、ご確認をお願いします。

下記「プライバシーポリシー」をご確認・ご了承いただいた上で、お申し込みの際はお名前等のご記入をお願いします。 ご協力いただけない場合は当日参加をお断りさせていただく場合がございますので、予めご了承ください。
プライバシーポリシー / 個人情報の取り扱いについて

株式会社ナレッジコミュニケーションについてのご紹介

ナレッジコミュニケーションではAmazon Web Services、Microsoft Azure等のクラウドサービスを企業に導入する事業を行っております。
お客様の課題に対してクラウドを使って課題解決のご支援をさせていただいております。

実績掲載

1.ブックリスタ様 事例

https://aws.amazon.com/jp/solutions/case-studies/booklista-knowledgecommunication/

2.全国保証様 事例

https://prtimes.jp/main/html/rd/p/000000014.000004474.html

関連記事

1.Amazon Connectの使い方[丁寧に解説してみた]

https://recipe.kc-cloud.jp/?p=16741&preview=true

2.Amazon Connectで「ダイヤル分岐」コネクトセンターを実装する【ハンズオン】

https://recipe.kc-cloud.jp/?p=16743&preview=true

3.ナレコムコロナ対策特設ページ

https://www.knowledgecommunication.jp/event/COVID-19/


MMLSpark を Databricks on EC2 のクラスタにインストールする方法

はじめに

MMLSpark を Databricks (on AWS EC2) のクラスタで使用できるようにする手順を示します。

対象者

  • Databricks on EC2(AWS) で分析環境を立ち上げている
    • init_script をいじったけどなんだかうまく行かない
    • pip でもうまくいかない
    • MMLSpark は Azure 以外のプラットフォームで使えないの?
  • 現在使用しているアルゴリズムをSparkによる分散処理に最適化できないか方法を探している

mmlspark とは?

正式名称は、Microsoft Machine Learning for Apache Spark

Microsoft Azure のマネージド機械学習サービスである Cogninive Services や、機械学習の現場でよく使われる LightGBM などを Spark で効率的に活用できるように最適化したパッケージが揃っているライブラリです。

画像処理ライブラリの雄である OpenCV のパッケージもあります。2020年5月現在では一部の関数のみが実装されているのみですが、大量の画像に対してシンプルな前処理を並列かつ高速に行いたい場合には選択肢に入ってきそうです。
MMLSpark OpenCV Package

そしてこのパッケージ、Microsoft Azure 以外のプラットフォームでも使えます。

インストール方法

Databricks のワークスペースで、
ClustersからLibrariesに飛び、Install Newをクリック
スクリーンショット 2020-05-15 7.08.01.png

Library Source に Mavenを選択し、Repository に以下を入力、Installをクリック
com.microsoft.ml.spark:mmlspark_2.11:1.0.0-rc1
スクリーンショット 2020-05-15 7.10.58.png

しばらくするとこちらの画面に遷移します。
Status が InstalledになっていればOK。これで完了です。
スクリーンショット 2020-05-15 7.13.14.png

参考スクリプト

以下のような感じで、Collaborative Notebook 上でモジュールが使えるようになります。

[crayon-5ecbb469869de088413514/]

result
image.png

[crayon-5ecbb469869f0780030655/]

result
image.png

[crayon-5ecbb469869fb394634896/]

result
image.png

[crayon-5ecbb46986a05338128462/]

result
image.png

おわりに

モジュールのインストール方法にもいろいろあるんですね。
依存関係が出やすいので pip 乱発はやめたいところです(自戒)

参考資料

公式 MMLSpark 紹介サイト
公式 MMLSpark Github

LightGBM 上記スクリプトソース


初めてのAmazon Pinpoint②~実装編~

前編

https://qiita.com/mottie/private/ebd3ed7a1a1d78ac0e76
の続きです。

Amazon Pinpointを使ってみよう

1.Amazon Pinpointのマネジメントコンソールを開く

Amazon Pinpointを使用するにはAWSアカウントが必要です。
もし所持していない場合は以下のURLに従ってアカウントの作成をしましょう。
参考URL:https://aws.amazon.com/jp/register-flow/

alt
アカウントの用意ができたら"コンソールにサインイン"をクリックしましょう。

alt
ルートユーザーから登録アドレス、パスワードを入力してログインします。

alt
ログインしたら、"サービス"から"Pinpoint"を検索してクリックしてください。
2020年4月現在、"東京リージョン"でAmazon Pinpointは提供されていないので、今回は"オレゴンリージョン"を指定します。

2.新規プロジェクト作成

alt
Pinpointのトップ画面に移動したら、"Create a project"をクリックし、新しいプロジェクトを作成しましょう。

alt
分かりやすい名前をつけましょう。今回は"Test_project"としておきます。

3.センダーアドレスの検証

alt
プロジェクトを作成したら、チャネルの設定画面に移ります。
"Email"の"Configure"をクリックしてください。

alt
センダーアドレス(送信元メール)の設定が始まります。
メールの"From"の部分ですね。
アドレスを入力して"Verify"をクリックしましょう。

alt
先ほどのアドレスにAWSからメールが届いているので、リンクをクリックしてください。

alt
上記画面になれば検証完了です。設定画面に戻り"Save"をクリックしてください。(2つ前の画像の画面)

4.顧客データをインポートする

alt
次に顧客リストをインポートします。
左にあるメニュー欄の"Segment"をクリックし、リンク先ページの右にある"Create a segment"をクリックしてください。

alt
"Import a segment"を選択し、"Choose files"でリストをインポートしてください。
完了したら下部の"Create a segment"をクリックしてください。

5.ターゲットセグメント構築

alt
先ほどの作業が完了すると上記のように成功メッセージとセグメント一覧に作成したセグメントが表示されます。
次は対象の顧客にのみ送信する設定をしたセグメントを作成します。
"Create a segment"をクリックしてください。

alt
セグメント名を入力し、セグメントの選択では先ほど作成したセグメントを指定してください。
まずはチャネルから絞り込みましょう。"filter by channel"を選択してください。

alt
"Value"に"Email"を指定してください。
これでEmailで連絡先を登録されている人だけで絞り込まれました。
次にユーザーの属性から絞り込みます。
"Filter by user"を選択してください。

alt
今回は"Last name"に指定して、苗字から絞り込みます。
他にも"Company"を指定して、特定の会社だけにすることもできます。

alt
"Value"を"Alejandro"に設定します。
これでアレハンドロさんにだけメールが届きますね。
アレハンドロ。まさに典型的なファミリーネームですね?
(今回オリジナルで顧客リストを作成したので間違えてしまいました。気にしないでください)
最後に"Create a segment"をクリックして完了です。

alt
作成後の画面で設定を確認できます。

6.キャンペーンを作成して、メールを送信する

最後にキャンペーンを作成します。

キャンペーン
→→→メッセージ内容や送信日時や使用セグメントが記載されたテンプレートのこと

alt
左メニュー欄の"Campaign"をクリックし、リンク先の右にある"Create a campaign"をクリックしてください。

alt
キャンペーン名を入力し、"Campaign type"は"Standard campaign"を指定してください。
"Channel"に"Email"と設定し、"Next"をクリックしてください。

alt
セグメントの選択では"Use an existing segment" を選択し、先ほど作成したセグメントを指定したら"Next"をクリックしてください。

alt
メール本文を作成します。
件名("Subject")を入力し、HTMLのbodyに本文を入力しましょう。
HTMLに慣れていない方は右の部分を"HTML"から"Design"に変更してください。

alt
変更することでより簡単に本文を作成できます。

alt
次にセンダーメールを指定し、"Next"をクリックしてください。

alt
最後に送信日時を送信します。
今回はすぐに送信したいので"Immediately"を選択し、"Next"をクリックしましょう。

alt
送信日時の設定が確認できるので、よければ"Launch campaign"をクリックしてください。

alt
上部の成功メッセージが表示されていれば完了です。お疲れ様でした。

7.レスポンスデータを表示する

alt
送信後は左メニューの"Analytics"をクリックしたリンク先で統計データが閲覧できます。
メールの開封率が一目で分かりますね。

詰まるところ

キャンペーンでの送信に成功しましたが、実際にはメールは受信箱には届いていません。
受信箱に送信するにはデフォルトの送信制限を解除する必要があります。
参考URL:https://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/channels-email-setup-production-access.html

またインポートできる顧客リストのフォーマットが特殊なので、インポートできずに詰まることがあります。

終わりに

今回紹介できた機能はほんの一部です。
まだまだこのサービスの魅力的な活用法は多くあります。
確かにこのサービスの実装は、私のようなIT初心者では少し難易度が高いかな、といった印象です。
しかし私はこのサービスが近い将来スタンダードになり、多くの企業のマーケティング効率を上昇させるために活用されるだろうと予感しています。


初めてのAmazon Pinpoint①~概要編~

はじめに

現代の営業活動においては、毎日たくさんのデジタルメッセージを顧客に送る必要があります。
しかしそれらの多くはビジネスに繋がらず、顧客の受信フォルダの山に埋もれてしまうでしょう。

ほとんどのメッセージは適切な顧客に、適切なメッセージを、適切なタイミングで、適切なチャネルによって送信されていないからです。

この全ての問題を一つのAWSサービスによって解決できます。
そう、Amazon Pinpointならね。

本記事のターゲットとゴール

  • ターゲット
    • Amazon Pinpointについて初めて学ぶ方
  • ゴール
    • 概要を大まかに理解し、軽くサービスを動かしてみる

Amazon Pinpointは悪用を防ぐためデフォルトで送信制限が設定されています。
そのため今回の送信実験では受信箱にメールは届きません。

Amazon Pinpointとは何か?

Amazon Pinpointとはメッセージの一斉送信、顧客管理、レスポンス分析のできるサービスのことです。
このサービスを導入することで顧客中心のエンゲージメント高めることを可能にします。

エンゲージメント
→→→広告などのマーケティング手段によって顧客の注意や興味を引きつけながら、企業と顧客のつながりを強固にすること

Amazon Pinpointのできること(強み)

Amazon Pinpointのできることを大別するとエンゲージメントチャネル作成、エンゲージメント管理、分析になります。

チャネル
→→→流通経路のこと

1.エンゲージメントチャネル作成(発信能力が高い)

メッセージを送る媒体は多数存在しますが、
Amazon PinpointではEメール、音声、プッシュ通知、SMSといった様々な媒体が使用できます。
(既存のアプリケーション内のメッセージチャネルと統合することも可能)
alt
Amazon Pinpointではこれらのメッセージメディアごとにエンゲージメントチャネル作成し、好みのチャネルを使用して顧客に対応することができます。

またAmazon Pinpointではあらゆる規模で、大量のメッセージを、指定したタイミングで、迷惑メールに振り分けられずに、送信することができます!

2.エンゲージメント管理(狙い撃ちできる)

Amazon Pinpointはエンゲージメント管理システムが整っているので、適切な相手に必要なメッセージを送信できます。
alt
例えば顧客リストを属性、好み、状態などの項目ごとにセグメント化(分類)できます。
ユーザーはセグメント別にアプローチを変えて、適切なメッセージを送信できます。
これにより顧客は適切な時に、適切なメッセージを受け取り、エンゲージメントエクスペリエンスを高めることが期待できます。

3.分析(マーケティングを洗練できる)

Amazon Pinpointを使用して、データの集約、可視化、カスタマイズを行えます。
例えばメッセージの開封率から、どんなメッセージがどの時間にどんな人だと読んでもらいやすいかなどを可視化できます。

これにより顧客について、製品の使われ方、ユーザーのアプローチに顧客がどんな反応をしたかについて深く知ることができます。

分析例

  • 顧客の好み
  • 顧客の最近の行動
  • 顧客のニーズ
  • 離反予測
  • 設定したイベントを追跡分析(顧客がどの動画を再生したかなど)
  • 最も効果的なチャネルを把握
  • 訴求力の強いメッセージの特定
  • 開封率の高い時間帯を特定

料金

Amazon Pinpointは使った分だけ課金される従量課金制です。

1.送信メッセージ数

alt
料金例
[月に1万件のメールを全て違うデバイスに送信した時]
100円(送信メッセージ)+1200円(対象デバイス)=月額1300円(1USD=100円とする)

2.毎月の送信先デバイス数

  • 1か月あたり5000までは無料です。
  • その後は、1000万までは1つあたり0.0012USDかかります。
  • 1000万以上はこのURLにお問い合わせください。:aws-mobilemessaging-custom-pricing@amazon.com

3.イベント収集

アプリケーションの使用データを収集する場合、1か月あたりに収集されたアプリケーションイベントの数に対して課金されます。

  • 1か月あたりに収集されたイベントが1億件までは無料です。
  • その後は収集されたイベントあたり0.000001USDかかります。

Amazon Pinpointのネック

1.顧客データの整形が必要(formatが細かい)

顧客リスト例(csv)
alt

2.個人で試しにくい

  • 初めてPinpoint使用開始する時は、デフォルトでメッセージ送信制限がかかっています。(サンドボックス)
  • 複数人に送信する際は、事前にAWSサポートに制限解除の申請が必要があります。
  • 申請の際、使用目的やトラブルシューティングなど細かく答える必要があります。
  • そのため個人使用を開始するには敷居が高いです。
  • 参考URL:https://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/channels-email-setup-production-access.html

3.ドキュメントがまだ少ない

  • 2020年4月現在、ローンチされたばかりなのか記事は少ないように見受けられました。
  • また日本語のドキュメントはさらに少ないように見受けられました。
  • 自力解決は難しいことが多いので、時々AWSサポートで質問する必要があるかもしれません。
  • 参考URL:https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/

Amazon SESとの比較

Amazon Pinpointの類似サービスとして、Amazon SESというAWSのメール送信サービスが存在します。
以下では、Amazon Pinpointの特徴をより深く知るために比較していきます。
参考URL:https://aws.amazon.com/jp/ses/
alt

1.一斉送信機能

Amazon Pinpoint >> Amazon SES
Amazon SESでは一度に送信できるメールは50通までです。

2.対応送信チャネル

Amazon Pinpoint >> Amazon SES
Amazon SESではEmailのみ送信することができます。

3.分析力

Amazon Pinpoint > Amazon SES
Amazon SESでもメールの開封率などを可視化できます。しかし高度な分析をする場合は、Amazon Pinpointの方が良いでしょう。

4.料金

Amazon Pinpoint < Amazon SES
基本料金は1万通につき1ドルと変わりませんが、Amazon SESでは1月ごとに最初の6万通は無料で送信できます。

5.受信機能

Amazon Pinpoint <<< Amazon SES
Amazon SESには受信機能があります。この機能はサイトのユーザー登録の際、メールアドレスの検証をする時などに役立ちます。受信したメッセージはAmazon S3に保存することも可能です。

結論

Amazon SESは購入確認、出荷通知、注文状況の更新など受動的な場面で役立ちます。
Amazon Pinpointは営業メールなど主体的なアクションを起こす場面で役立ちます。

終わりに

次回はいよいよ実装をしていきます。
https://qiita.com/mottie/private/662f8c2938f5046471d9


[新5分で分かる]S3について

はじめに

Amazon S3(以下S3)とは?
・Amazon Simple Storage Serviceの略です。
・容量が無制限なAWSのストレージサービスです。
(ただし一つのファイルにつき5TBまで)
本記事ではS3の強み料金体制近年の変化などを紹介していきます。

S3の強みとは?

1、耐久性

S3は99.999999999%の耐久性能を持っています。

  • 全てのデータを3つのAZ(アベイラビリティーゾーン)で保管する
  • 別々の変電所からAZに電力供給する
  • 他のAZやネットへ接続するには複数のファイバーケーブルを使用する

これらにより1つのAZが完全に損失しても耐久可能な性能を持ちます!

2、セキュリティ

  • 異なる3種の暗号形式で保護
  • AWS Clowd Trailなど監査に対応したツールがある
  • AWS Macieにより機密データを自動検出し保護できる
  • 複数のセキュリティ基準、コンプライアンス認証がサポートされている
  • S3 Block Public Accessにより全てのパブリックアクセスをプロックできる

S3は自社のデータセンターより運用上の安全性が高いと考える企業があるほど
堅牢なセキュリティを誇ります。

3、管理能力

  • AWS Lambdaにより専用のコンピューターリソースなしでワークフローの開発ができる
  • 柔軟性に優れた管理機能、分類機能が使用できる

S3は手元のデータへの適切な判断やコストの自動的削減に役立ちます。

4、インプレースのクエリ機能

S3は外部の分析プラットフォームに移動させる必要なく、S3のオブジェクト全体で高度なビッグデータ分析を実行できます。
また自動でスケーリングが実行されるので、データ量が増えてもパフォーマンスは変わりません。

5、パートナーネットワーク

Amazon S3のエコシステムには数万社を超えるパートナー企業が登録しており、
AWS Marketplaceから多様なAWS 統合ソリューションを使用できます。

料金体制について

1、S3の課金対象

  • S3に保存されるデータ容量
  • リクエストとデータ取り出し​
  • データ転送量​

2、ストレージタイプ

上記の料金は使用するストレージタイプにより変動します。
以下ではそれらの特徴について簡単に説明します。

  • S3 標準
    →アクセス頻度の高いデータ向け
  • S3 標準-低頻度アクセス​
    →長期保存、バックアップ等の保存向け
  • S3 1 ゾーン-低頻度アクセス​
    →バックアップ等の保存向け、1つのAZにデータを保存するためコストを削減できる
  • S3 Glacier
    →アーカイブのように使用でき、データの取り出し時間がかかる分、保存コストが安い
  • S3 Intelligent-Tiering​
    →アクセスパターンによって保存するストレージを移動させ、コストを最小限に抑える。長期間使用するデータの保存向け

近年の変化

1、リクエストレートのパフォーマンス向上(2018年)

2018年7月より、追加料金なしで処理時間を大幅に節約できるようになりました。
→従来は800リクエスト/秒を超えるGETリクエストが5,500リクエスト/秒と大幅に引き上げ、
PUT/LIST/DELETEリクエストのしきい値も300リクエスト/秒だったところ3,500リクエスト/秒と変わりました。

2、SigV2の廃止(2020年)

2020年6月24日以降に作成された新しいバケットに対して、初期の署名モデルであったSigV2署名付きリクエストはサポートされなくなりました。
(SigV4をS3で利用しているか判定するには、CloudTrailを使用する必要があります。)

おわりに

AWSサービスは日々劇的に進歩しています。
以下に公式ページのS3解説が掲載されています。
https://aws.amazon.com/jp/s3/
ぜひアクセスしてみてください!


[5分で分かる]AWS基本知識

はじめに

本記事は初めてAWSに触れる人が押さえておくべき具体的なサービスと用語が何となく分かる。
そんな初心者入門の記事となっております。

AWS基本

リージョンとアベイラビリティーゾーン

・ AWSは世界22の箇所にあるデータセンター群から構成されています。
(2020年4月時点)
・ それらデータセンターをリージョンと呼びます。
(例:東京リージョン、オレゴンリージョンなど)
・ リージョンはさらにアベイラビリティーゾーンに分割されます。
・ 私たちがAWSを使う際は、どのリージョンのアベイラビリティーゾーンを使用するかを決める必要があります。

参考URL

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

VPC

・ Virtual Private Cloudの略です。
・ AWSサーバー上に構築された固有のサーバー領域をVPCと呼びます。
・ ここに各ユーザーはインフラやシステムを構築、配置します。

参考URL

https://aws.amazon.com/jp/vpc/

EC2

・ Elastic Compute Cloudの略です。
・ 誰でも簡単に仮想サーバーを立ち上げることができるサービスです。
・ 基本的に使った分だけ課金される従量課金制が採用されています。

参考URL

https://aws.amazon.com/jp/ec2/features/

EBS

・ Elastic Block Storeの略です。
・ EC2に付属している外付け記憶領域のことです。
・ 通常EC2にもメモリがありますが、これはサーバーを停止すると消えてしまいます。
・ EBSはサーバーを停止した時などに、データを保守するのに必要となります。
・ アクセスすることが多いデータの保存に向いています。

参考URL

https://aws.amazon.com/jp/ebs/?ebs-whats-new.sort-by=item.additionalFields.postDateTime&ebs-whats-new.sort-order=desc

IAM

・ Identity and Access Managementの略です。
・ AWSサーバーへのアクセスを安全に管理するためのサービスです。
・ サーバーへのアクセス範囲、方法を制限できます。

参考URL

https://aws.amazon.com/jp/iam/

S3

・ Simple Storage Serviceの略です。
・ 最大の特徴は容量が無制限なこと(ただし一つのファイルにつき5TBまで)です。
・ EBSよりも安く、バックアップデータを置くことに向いています。

参考URL

https://aws.amazon.com/jp/s3/

ELB

・ Elastic Load Balancingの略です。
・ AWSサーバーへのアクセス負荷を分散するサービスです。
・ 用途に合わせて三つの分散処理システムが用意されています。
・ 使用することで突発的なアクセス増加に強いシステム構築ができます。

参考URL

https://aws.amazon.com/jp/elasticloadbalancing/

Route53

・ AWSのドメインネームシステム(DNS)ウェブサービスです。
・ 最大の特徴はとにかく落ちづらいことです。

参考URL

https://aws.amazon.com/jp/route53/

Cloud Watch

・ AWS上でシステム運用するためのサービスです。
・ AWSの各サービスに関するメトリクスを収集することで、システム上のリソースやアプリケーションを最適化することができます。

参考URL

https://aws.amazon.com/jp/cloudwatch/

まとめ

いかがでしたでしょうか?
現在(2020年4月時点)AWSでは175以上のサービスを展開しており、
この記事には紹介しきれなかった魅力的なサービスは他にも数多くあります。
興味を持って頂けましたら、ぜひAWSの最先端サービスを体験してみてください!!


Amazon Translate、AWS Lambda を使った自動翻訳(後編)

はじめに

前回の記事でご紹介した、ドキュメント翻訳の自動化の実践の続きです。

batch-translation-6.gif

コンテンツを外国の言語に翻訳するには、バッチ翻訳ジョブを実行することで、容易かつコスト効率よく解決することができます。
しかし、一連のドキュメントを集めたり、そのドキュメントに対して定期的に非同期のバッチ API を呼び出したりすると時間がかかります。
ドキュメントが用意された時点で、すぐに翻訳処理を開始できたほうがいいですよね。

AWS Lambda と リアルタイム翻訳を使用する進んだアプローチ

イベント駆動型アーキテクチャを利用することで、簡単に、自然な翻訳を行えるようになります。

特定の S3 バケットにドキュメントがアップロードされたときに、そのバケットから AWS Lambda に通知が送信されるように設定を構成します。

実践の流れ

S3 バケットの通知により、AWS Lambda では、次のようなイベントのシーケンスのためのコードが実行されます。

1. ドキュメントを読み出し S3 バケットにアップロードします。
2. リアルタイム翻訳 API に渡せるように、要素をドキュメントから抽出します。
3. リアルタイム翻訳 API にこの要素を渡します。
さらに、リアルタイム翻訳 API からの出力を使って翻訳済みドキュメントを再構成します。
4. 指定したバケットに翻訳したドキュメントを保存します。

ステップ1.  CloudFormation を使ったアプリケーションの起動

コンソールを使い、 AWS CloudFormation スタックを起動します。

AWS CloudFormation コンソールで、新しくリソース (標準) を設定し、[Create stack]をクリックします。
2020-04-13_15h21_47.png

[Amazon S3 URL] を選択し、Amazon S3 URL の項目に
https://s3.amazonaws.com/aws-ml-blog/artifacts/serverless-document-translation/translate-lambda-cfn-stack.yml
をコピーします。次に [Next] をクリックします。
image.png

ステップ2. S3 バケットを作成して指定する

[Stack name] には、automated-document-translation のように、アカウント内で一意のスタック名を入力します。
[IAMRoleName] には、TranslationLambdaExecRole のように、アカウント内で一意の IAM ロール名を入力します。
2020-04-13_15h30_21.png

[LambdaFunctionName] には、trigger-translation のように、一意の AWS Lambda 関数名を入力します。
[InputBucketName] には、スタックが作成した Amazon S3 バケットのための、一意の名前を入力します。
入力のドキュメントは、翻訳処理前に、このバケットにアップロードされます。
新規の S3 バケットが作成されるため、既存バケットの名前は使わないようにします。
※ 名前が同じものがあると、スタックの構築が失敗します。

[OutputBucketName] には、出力バケットのための一意の名前を入力します。
翻訳済みの出力ドキュメントが、このバケットに保存されます。
入力バケットの場合と同様に一意の名前をつけてください。

[SourceLanguageCode] では、翻訳前のドキュメントの言語を、コードで入力します。
たとえば、英語を指定する場合は en とし、主として使われている言語を検出させる場合は auto とします。

[TargetLanguageCode] には、翻訳後のドキュメントで使う言語を、コードで入力します。
日本語を指定する場合には ja とします。
(使用可能な言語コードの詳細についてはこちら
[Next] を選択します。
2020-04-13_15h30_53.png
[Configure Stack Options] ページで、スタック用のタグなど、追加のオプションパラメータを選択します。
(特に必要なければいじらなくてOK)
[Next] を選択します。
[I acknowledge that AWS CloudFormation might create IAM resources with custom names.] のチェックボックスをオンにします。
2020-04-13_16h07_18.png
[Create Stack] をクリックします。
スタックの作成が完了するまで、最大 1 分間ほどかかります。

ロール(権限)の内訳

Lambda 関数では、このロールが必要な Amazon S3 と Amazon Translate API にアクセスできることを想定しています。
この IAM ロールには、 2 つのポリシーがアタッチされています。

1 、入力および出力の S3 バケットに対する、読み出し/書き込みのアクセス権限
(GetObject と PutObject) を与えるカスタムポリシー。
2 、AWS が管理しているポリシー TranslateReadOnly
Amazon Translate への API を呼び出すためのもの。

ステップ3. アプリケーションの実行

AWS CloudFormation スタックの作成が終わると、このソリューションを利用開始できます。
デザインを表示させるとこんな構成が出来上がります。視覚的にわかりやすいですね。
2020-04-13_16h44_24.png
2020-04-14_15h03_19.png

入力側の S3 バケットに、翻訳対象のテキストファイルをアップロードします。
これによりワークフローが起動され、処理が完了すると、翻訳済みドキュメントが出力側の S3 バケットに自動的に保存されます。

翻訳済みドキュメントは、出力 S3 バケット内の次のようなパスに保存されます。
<TargetLanguageCode>/<original path of the source file>.

たとえば、入力ドキュメントのタイトルが test.txt となっていて、入力 S3 バケット内の in202040413 という名前の S3 フォルダーに保存されているとします。
2020-04-14_04h13_59.png

日本語に翻訳されたドキュメントの保存先は、出力バケット内の 「ja/out20200413/test.txt」 となります。
2020-04-14_04h14_29.png

出力 S3 バケットでドキュメントが見つからない場合は、Amazon CloudWatch Logs で対応する Lambda 関数をチェックし、失敗の原因となっている可能性のあるエラーを探します。

ここでは、UTF-8 形式のテキストドキュメントのみを処理しています。
Lambda 関数での最大実行時間 (timeout) に関する制限があります。

結果

今回は一つのファイルに英語の文章をまとめてから、アップロードしました。
2020-04-14_15h08_04.png
今回も違和感のないキレイな日本語になりました!

所感

1. 収集したドキュメントに、非同期のバッチ翻訳を行うシンプルな翻訳
2. AWS Lambda と Amazon のリアルタイム翻訳を使い、ドキュメントを入手する度に同期的に翻訳を行う、
より進んだ手法
今回この2つの手法を使ったドキュメント翻訳を行いましたが、1だとバケットを一度作ってしまえば Translate で操作して簡単に行なえますし
2を使えば S3 バケットを前もって作らなくても、自動的な翻訳が一度に一つのコンソール画面で処理できるので、面倒が少なくて済みます。
作業効率もあがりますし、文の長さを気にせず、質の高い翻訳が実現できるので積極的に使っていきたいです!

公式サイトリンク

AWS サービスブログ
Amazon Translate


Amazon Athena+AWS Glue のベストプラクティス を学ぼう #1

はじめに

本記事は、AWSの公式ドキュメントAthena と AWS Glue を併用する際のベストプラクティスを参考に、Athena、Glue間のデータ連携について検証する記事になります。

わかりにくいワードを記事最後尾にまとめております。記事の目次から各ワードの解説へ飛べます。
読んでいる途中でわからないワードがあったら、目次から探してみてください。

本記事は数部にわたり、投稿してまいります。
投稿した記事を順次、以下に追記してまいります。
今回はまず、ベストプラクティスを学ぶ前にGlueとAthenaを触ってみる回になります。ベストプラクティスについては#2で学んでまいります。

Amazon Athenaとは

AWSの提供するインタラクティブなクエリサービスです。Amazon S3 内のデータを標準 SQL を使用して簡単に分析できます。

AWS Glueとは

AWSの提供するフルマネージド型のETLサービスで、分析用データの準備とロードを簡単にします。
AWS に保存されたデータを指定するだけで AWS Glue によるデータ検索が行われ、テーブル定義やスキーマなどの関連するメタデータが AWS Glue データカタログに保存されます。
カタログに保存されると、データはすぐに検索かつクエリ可能になり、ETL に使用できるようになります。

なぜAthena、Glueを併用するのか

Athena と AWS Glue データカタログを併用すると、AWS Glue で作成したデータベースとテーブル (スキーマ) を Athena でクエリしたり、Athena で作成したスキーマを AWS Glue や関連サービスで使用したりできます。

AWS Glue データカタログにメタデータを登録

SIGNATEに掲載されているお弁当需要予測のtrain.csvを利用して、AWS Glueデータカタログにメタデータを登録します。
まず、任意のS3バケットにcsvファイルをアップロードします。
私は以下のパスにアップロードしました。

[crayon-5ecbb469871fb417495829/]

次にクローラを追加します。
AWSコンソール上でAWS Glueを開き、左の項目からクローラをクリックします。

image.png

クローラの追加をクリックします。
image.png

クローラに名前を付けます。
任意の名前を入力して、次へをクリックします。
私は、test-obento と入力しました。

image.png

クローラのデータソースを指定します。
今回はデータストア(S3)を利用するので、Data storesを選択して、次へをクリックします。

image.png

データソースの詳細設定をします。
データストアはS3で自分のアカウントで指定されたパスを選択します。
インクルードパスには、アップロードしたcsvファイルのあるフォルダを選択します。
私の場合はs3://バケット名/test/となります。

image.png

他に追加したいデータストアがある場合は追加できます。
今回はいいえを選択し、次へをクリックします。

image.png

IAMロールの選択、作成を行います。
今回、私はIAMロールを作成しました。
IAMロールに任意の名前を入力して次へをクリックします。

image.png

次にクローラのスケジュールを設定します。
実際に業務で使う場合は、メタデータの更新、追加があるので定期的にクローラを実行しメタデータの更新を反映します。
今回は一度読み込むだけなので、オンデマンドで実行を選択し、次へをクリックします。

image.png

次にクローラの出力設定をします。
データベースは作成していないので、データベースの追加から新たにデータベースを作成します。

image.png

任意のデータベース名を入力してください。
私は、testとしました。

image.png

作成したデータベースが選択されていることを確認し、次へをクリックします。
image.png

内容を確認し、完了をクリックします。
image.png

クローラが作成されると画面上部に今すぐ実行しますかと出てくるので、クリックします。
image.png

クローラが実行され、完了すると以下のようにステータスがStoppingとなります。
image.png

左の項目から、テーブルを選択し、作成されたテーブルをクリックします。
image.png

すると以下のようにAWS Glueデータカタログに登録されたテーブルのメタデータが確認できます。
image.png

AWS Glueデータカタログに登録されたデータを元に Amazon Athena でクエリを実行

早速、データカタログに登録されたデータを利用して、Athenaでクエリを実行します。
まず、AWSコンソール上でAmazon Athenaを開きます。
最初に、クエリの実行結果の保存先を指定する必要があります。
画面右上の設定をクリックします。

image.png

出力先となるS3パスを入力します。

image.png

では試しに、登録したデータをクエリで抽出してみます。
以下のコードを実行します。
これでテーブルを全て抽出します。

[crayon-5ecbb46987217725876069/]

すると以下のように実行結果が返ってきます。
image.png

先ほど設定した出力先にも、クエリ結果が保存されているので確認してみてください。
image.png

正しく出力されていました。
image.png

終わりに

今回はベストプラクティスを学ぶ前段として、Athena、Glueを利用してみました。
次回からは、ベストプラクティスに沿ってAthena+Glueを学んでいきます。
どうぞよろしくお願いいたします。

用語解説

インタラクティブ
  • 双方向、対話型という意味
    例えば、スマホで何かを検索するとします。
    検索バーにワードを打ち込んで検索をかけると検索結果が返ってきます。
    これは、送信側である私たちのこれが調べたいというリクエストに対して、それを受信したブラウザが検索結果はこれですよと応答してくれています。 これが対話型、インタラクティブな通信といえます。
クエリ
  • データベースのデータを操作、抽出する際に送る処理要求(命令)
SQL
  • リレーショナルデータベースのデータを操作したり、定義するためのプログラミング言語
    SQLで書いた、SQL文がクエリにあたります。
リレーショナルデータベース(RDB)
  • 事前に定義された表形式のデータベース
    1個以上の列と0個以上の行によって構成される表形式のデータベースで、RDB上で行う様々な操作の結果も表形式で表現されます。
    RDBでは、個々の表は必要最小限の情報のみを保持するように設計し、SQLによって各表の選択結合等を行いデータを取り出します。
    例えば、以下のように商品と売り上げのテーブルをRDB上に定義するとします。

商品マスターテーブル

商品番号 商品名 単価
0001 商品A ¥ 100
0002 商品B ¥ 200

売り上げテーブル

注文日 商品番号 個数
1/1 0001 2
1/2 0002 3

ここで、売り上げと商品情報を同時に得たいという場合には、SQLで結合、計算等を行うことで、以下のような出力が得られます。

商品番号 商品名 注文日 単価 個数 小計
0001 商品A 1/1 ¥ 100 2 ¥ 200
0002 商品B 1/2 ¥ 200 3 ¥ 600
フルマネージド型サービス
  • 事業者によって内容は異なりますが、その多くは対象のサービスの24時間365日監視や障害発生時の復旧作業を事業者が提供することを指す
ETL(Extract/Transform/Load)
  • データベースなどから、データを抽出(Extract)、必要に応じて変換(Transform)、変換済みのデータを格納先にロード(Load)することを指す
テーブル定義
  • テーブルの詳細情報のことで、どのようなカラムが存在して、各カラムの属性は何かを定義している情報
スキーマ
  • データベースの構造
    データベースによってスキーマの定義が違い、スキーマのないデータベースもあります。
メタデータ
  • データに関するデータ
    こちらも場合によって、定義が違います。
    よくある例としては、作成者、ユーザー名、編集者、作成日、更新日、保存場所、サイズのようなデータが該当します。
AWS Glue データカタログ
  • データの場所、スキーマ、およびランタイムメトリクスへのインデックス ETL ジョブを作成するために、Glueが参照するカタログでメタデータとして保存されています。
クローラ
  • 指定したデータ群のメタデータを調査してAWS Glueデータカタログに追加するもの