今回は「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でのハンズオンは終わりなので、先のハンズオンと同じくスタックを削除しておく。









