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 2Ubuntu側で検索をかけてみる。すると、大きな遅延もなく、このような大量のデータが帰ってくる。これで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でやることも終了したので、スタックを終了しておく。

こうして、サーバーレスクラウドの実行を行った。