この記事はAmazon Web Services Advent Calendar 2017の9日目の記事になります。
結構気になっていたAWS re:Invent 2017での発表があります。
です。実際どの程度便利なのか、使ってみました。
環境作成
利用開始をしようとすると、環境作成のページに飛ばされました。まずはAWS Cloud9が動く環境を準備する必要があるんですね。(そういえばオリジナルのCloud9もそうだったような。。。)
とりあえずテスト環境を作成します。
テスト環境なので、設定はデフォルトで。30分以上放置してたら作成したインスタンスを止めてくれるとか、気が利いてますね!
環境作成の直前に推奨の設定やらが案内されましたが、とりあえず無視します。
環境が作成されるまでしばし待ち。。。(しかし画面かっこいいな)
#コーディングしてみる
環境が整えばいよいよコーディングです。が、色々と便利そうなビューになってます。
タブでファイルが分割できたり、
ターミナルがあったり。これもうVisual Studio Codeと変わらないな。
ちなみに実態はEC2インスタンスなので、上記のようにコマンドでライブラリをインストールすることができます。実際にインストールすると、左側のフォルダツリーにリアルタイムに構成が反映されます。
で、コーディングはエディタのキャプチャの通り書いてみました。GoogleにRequestを飛ばす一般的な処理です。
#実行してみる
もちろんこのままだとファイルパスがマッチせずに実行時にインポートエラーが発生するので
こんな感じでライブラリをインストールするようにして、
$ mkdir lib
$ pip install requests -t ./testrequests/testrequests/lib/
ソースと同じディレクトリにライブラリをインストールするようにします。
コードも少し修正しました。
import sys
import os
sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'lib'))
import requests
def lambda_handler(event, context):
res = requests.get("http://www.google.co.jp/")
return res.status_code
これでうまく動きそうです。
#もう一回実行してみる
きちんと結果が得られました。無事動いたようです。
ただ、1点気をつけないといけないのは、あくまでこれはEC2インスタンス上のエディタで実行した、というだけなので、実際のLambdaには何も保存されていません。
ちなみに今回はPythonを使ったのでデバッグはサポートされていませんが、Node.jsやPHP、Goであればデバッグ実行もできるようです。これは便利。
最初にファンクションを作成時、Lambdaは登録されるのですが、デプロイするまでは中身は初期化されたままになっています。(当然ではあるのですが、忘れやすいかもこれ)
Lambdaでファンクションを選択しても、先ほど書いたコードは存在していません。デプロイをするとLambdaに実際に反映されるようになります。
#デプロイをしてLambdaに更新を反映する
Cloud9上からLambdaへのデプロイを行います。やり方はとても簡単で、ファンクションリストから該当のファンクションを右クリックして「Deploy」を選択するだけ。正直Serverless Frameworkなどを使うよりずっと簡単です。
これだけの操作でLambdaが更新されます。
#共同編集をしてみる
他にアカウントを作成して、共同編集を試してみました。テスト用に「test」というアカウントを作成します。画面右上の「Share」より共有設定を開きます。
するとこんな感じの共有用URLが表示されますので、これを別アカウントのブラウザで開いてみます。が、共有の設定をしないともちろんアクセスできません。400で怒られます。
共有設定で自分以外に共有したいIAMユーザーのアカウントを追加すれば設定は完了です。
testユーザーでアクセスすると、共有設定画面のユーザーのステータスがOfflineからOnlineに変更になります。
あとはお互いに編集しているポイントがリアルタイムに反映されていくので、とても便利ですね。キャプチャだけだとなんのことかわかりづらいですが、自アカウントで編集したものがリアルタイムでtestユーザーの画面にも反映されます。
※キャプチャ右上のアカウントの並びが異なるので、それぞれ異なるユーザーの画面だということは見てわかるかな(^^;。
#実際にAWS Cloud9を使ってみての感想
思った以上にできることが多いので、かなり可能性を感じました。自分は今仕事の関係上ミャンマーにいるのですが、多少ネットが遅くてもリアルタイムにインターネットにアクセスできれば、開発していて不便だと感じることはありませんでした。実際に開発したパッケージをデプロイしようとした際には、ローカル10MBなどの重いファイルをアップロードするために何分も待たされる、というのもCloud9ならなさそうですし、ありがたい新サービスです。