Chapter11 サーバーレスクラウド
本日は、サーバーレスクラウドをAWSを用いて動かしてみる。今回動かすサーバーレスクラウドは、以下の三つである。
- Lambda
- DynamoDB
- S3
また、それぞれのデプロイ用ディレクトリは、serverlessディレクトリに存在する。
Lambda
まずは、Lambdaを動かしてみる。lambdaディレクトリに移動し、Chapter7と同じ、SSH鍵無しのデプロイ手順を実行し、デプロイした。
さて、デプロイが成功すれば、Lambdaのコンソールの関数ページに移動し、デプロイが成功していることを確認してみる。
次に、関数名をクリックし、コードソースを覗いてみた。サーモン、ツナ、以下の三つからランダムで選び、それを表示するような内容となっている。
さて、次は動作確認を行ってみる。※1にデプロイ時に表示される水色で書かれたFunctionNameの文字列を記入し、invoke_one.pyファイルを実行してみる。すると、このように、ランダムで選ばれた寿司ネタを出力されたことが確認できる。
さて、続いては、大量のタスクを実行してみる。invoke_many.pyファイルを実行し、タスク数を100に指定し、実行する。すると、少し時間を置き、Submitted 100 tasks to Lambda!と返される。
これで、100個のタスクが実行されたはずだ。
それを確認するため、モニタリングタブを開き、グラフを見てみる。しばらくは何も表示されなかったが、数分待つと、グラフが表示された。一通りやることは終わったので、これでLambdaは終了する。スタックの削除も忘れずに行った。
DynamoDB
続いては、DynamoDBを実行してみる。まずは、dynamodbディレクトリで今までと同じ手法でデプロイする。
そして、DynamoDBコンソールのテーブルページでデプロイができたことを確認。できていることが確認できれば、項目の検索から、アイテムを見てみる。現地点では、何も書き込んでないため、何もない。
さて、早速書き込んで見る。まずは、※2のTableNameを把握しておき、その文字列を語尾に書き込み、simple_write.pyファイルを実行してみる。
書き込みに成功したことが確認したあと、先程のアイテムの一覧(返された項目)を確認してみる。項目が一つ増えてることが確認できた。これで、書き込みは成功だ。
さて、続いては、書き込んだアイテムを見てみる。simple_read.pyファイルを実行し、中身を見てみる。すると、以下のような結果が帰ってきた。
続いては、大量のデータを読み書きしてみる。
- python batch_rw.py ※2 write 1000
で、1000個のランダムデータを書き込んで見る。そこでアイテム一覧を見てみると、このような多くのデータが書き込まれていることが確認できた。
次に、search_under_age 2とUbuntu側で検索をかけてみる。すると、大きな遅延もなく、このような大量のデータが帰ってくる。これでDynamoDBでやることは終わったので、こちらのスタックも終了する。
S3
さて、最後は、S3を動かしてみる。s3ディレクトリでデプロイの手順を行う。
続いて、tmp.txtをアップロードしてみる。echoコマンドでtmp.txtを作成しておき、※3で表示されるBucketNameを加え、simple_s3.pyファイルのupload関数を実行し、アップロードする。
アップロードが終われば、次にアップロードされたファイルに対し、以下のようにa/b/tmp.txtを割り当てておく。
さて、これで一度、s3コンソールのバケットページにて、デプロイされたバケットを見てみる。tmp.txtと、a/ディレクトリがあることが確認できた。
さて、続いてはtmp.txtファイルをダウンロードしてみる。uploadの箇所をdownloadにし、ダウンロードを実行した。これで、S3でやることも終了したので、スタックを終了しておく。
こうして、サーバーレスクラウドの実行を行った。