今回は「Lambda」「DynamoDB」「S3」の3つのサーバーレスクラウドを動かしてみる。なお、この3つのハンズオンのソースコードはserverlessのディレクトリに置かれている。

 

 

Lambda 

 

まずはデプロイするが、手順は

$ cd handson/serverless/lambda

でLambdaのディレクトリに移動する。その後は4章と全く同じ手順で行うことができる。

 

ここで「SimpleLambda.FunctionName = XXXX」と表示されるが、この後ろのXXXXの箇所にある文字列を今後置換するので確認しておく。

さて、実際にLambdaの関数を実行する。

$ python invoke_one.py XXXX

実行してみると

のようにランダムで寿司ネタを出力されたことが確認できる。

 

次は複数のタスクを実行する。

$ python invoke_many.py XXXX 10

このように実行してみると

これで10個のタスクが実行された。

 

最後にスタックの削除を忘れないように

$ cdk destroy

を実行して終了する。

 

DynamoDB 

次はDynamoDBを実行していく。

$ cd handson/serverless/dynamodb

でDynamoDBのディレクトリに移動してからは今までと共通でデプロイする。

 

この際表示される「SimpleDynamoDb.TableName = YYYY」のYYYYにあたる文字列は以後置換するので確認しておく。

 

ここでAWSコンソールにログインしDynamoDBコンソールのテーブルページにて項目の検索しても、なにもまだ書き込んでいないので何もないことがわかる。

 

では、新しく要素を書き込んでみる。(YYYYの部分は先程確認した文字列に置換する。)

$ python simple_write.py YYYY

これで要素が増えているはずなので再度確認しにいくと、

このように、確かに要素が増えていることがわかる。

 

ちなみに書き込んだアイテムの中身を見てみるには

$ python simple_read.py YYYY

を実行すると、

このように結果が帰ってくるので、確認することができる。

 

次はDynamoDB の利点である、「一度に大量のデータを書き込める」というものを体験してみる。

$ python batch_rw.py YYYY write 1000

このコマンドを実行すると、ランダムなデータが1000個を書き込むことができる。

 

では、そのデータに検索をかけてみる。このデータには1から50の整数が割り振られているので、それが2以下の要素を拾うための

$ python batch_rw.py YYYY search_under_age 2

のコマンドをを実行すると、

このように大きな遅延もなく、大量の要素を返してくれる。

 

ここでDynamoDBでのハンズオンは終わりなので、先のハンズオンと同じくスタックを削除しておく。

 

 

S3 

ここからはS3のハンズオンに取り組む。

$ cd handson/serverless/s3

でs3のディレクトリに移動してからは今までと共通でデプロイする。

 

この際表示される「SimpleS3.BucketName = ZZZZ」のZZZZにあたる文字列は以後置換するので確認しておく。

 

デプロイが完了したのでバケットにデータをアップロードしてみる。まずは

$ echo "Hello world!" >> tmp.txt

このコマンドでtmp.txtという仮のファイルを生成した。

 

このファイルを以下のコマンドでバケットにアップロードすることができる。

$ python simple_s3.py ZZZZ upload tmp.txt

すると以下のように返される。

 

アップロードし終わった後は、ファイルに固有の Key を割り当てる必要があるため、今回は以下のコマンドでアップロードされたファイルに a/b/tmp.txt という Key を割り当てる。

$ python simple_s3.py ZZZZ upload tmp.txt --key a/b/tmp.txt

完了すればこのように返される。

 

ではここでAWSコンソールで、S3のバケットページを見てみる。

すると先程作ったtmp.txtと、a/ディレクトリがあることが確認できる。

 

最後にバケットからファイルのダウンロードしてみる。

$ python simple_s3.py ZZZZ download tmp.txt

 

これでS3でのハンズオンは終わりなので、先のハンズオンと同じくスタックを削除しておく。