TL;DR
動画のとおりAWS CloudShellを対話翻訳器にするコマンドです。CloudShellおじさんと呼ばれたかっただけの小ネタです。
AWS CloudShellとは
AWS re:Invent 2020で発表された管理コンソールから無料で使えるCLIコンソールです。
参考:Amazon Web Services ブログ AWS CloudShell – AWS リソースへのコマンドラインアクセス
AWS CloudShellは管理コンソールの上の">"ボタンをおすと現れるWebUIのターミナルシェルです。
印象としては「デフォルトで用意されているちっちゃいCloud9」です。ただし、違いもあって、CDE的な機能はないし、EC2の管理画面をみてもCloudShell用のEC2インスタンスは見つからない。いまのところVPCの外で動いて管理コンソールのIAM User権限でAPIを叩ける見えない無料インスタンスといったところ。
ウィンドウペインは縦、横、タブに分割可能。ActionsにFile UploadがあるのはCloud9同様。pwshとzshが利用可能。リージョンあたり 5セッションまで同時利用可能。
揮発性のインスタンスではなくて、1GBのディスクスペースは永続的に維持されます。1GBの永続ストレージは/homeだけなので注意(シェルのワークエリアとして別に15GBが確保されている)。yumなどでのインストールも$HOMEヘのみ可能とのこと。
CloudShell上で翻訳するワンライナー
すぐにマネコンから開けるCLIができました。そうなると手元の作業はCLIで済ませたくなるのが人情。というわけで、AWS CLIのワンライナーで対話的に日英の翻訳をするシェルエイリアスを作りました。transe2j
が英語から日本語、transj2e
が日本語から英語です。プロンプトに翻訳元文書を入力すると日英翻訳してくれます。Ctl-Cで終了です。
実行例
実行例はCloudShellを立ち上げて、コマンド叩くだけのこんな感じです。
[cloudshell-user@ip-10-0-97-xxx ~]$ transe2j
English> It translates strings from English to Japanese interactively.
英語から日本語に文字列を対話的に翻訳します。
English> Hello, how are you?
こんにちは、元気ですか?
English> ^C
[cloudshell-user@ip-10-0-97-xxx ~]$ transj2e
Japanese> このコマンドは日本語から英語へ翻訳します。
This command translates from Japanese to English.
Japanese> 今日はいい天気ですね。
It's nice weather today.
Japanese> ^C
[cloudshell-user@ip-10-0-97-xxx ~]$
設定方法
~/.bashrcの末尾に以下の4行を追加してCloudShellを開きなおしてください。
# Amazon Translater CLI
export LANG=ja_JP.UTF8
alias transe2j='while true;do echo -n "English> ";read STR; aws translate translate-text --source-language-code "en" --target-language-code "ja" --query 'TranslatedText' --output text --text "$STR";done'
alias transj2e='while true;do echo -n "Japanese> ";read STR; aws translate translate-text --source-language-code "ja" --target-language-code "en" --query 'TranslatedText' --output text --text "$STR";done'
実行するIAM Userにはarn:aws:iam::aws:policy/TranslateFullAccess
権限が必要です。
解説
翻訳はAWSの翻訳サービス「Amazon Translate」をAWS CLIから呼び出しています。Amazon Translateには「リアルタイム翻訳」機能があり、管理コンソールから最大5,000文字までの文章を翻訳することができます。
これをCloudShell上のAWS CLIで対話的に呼びだしています。TranslateはUTF-8が前提なので、LANG環境変数を設定しています。
ぶっちゃけCloudShell上でなくてもローカルからでも同じシェルで動作します(^^; 。
参考
AWS CloudShell
Amazon Translate : AWS CLIをつかった利用開始方法
良いお年を!