11章
前置き
この章ではLambda,DynamoDB,S3を使って,関数の実行やデータの読み書きを試してみる.
Lambdaを触ってみる
まずは,Lambdaのディレクトリに移動する.
cd handson/lambda
awsシークレットキーの設定をして,以下を入力.これは後のものも共通で行う.
python3 -m venv .env source .env/bin/activate pip install -r requirements.txt cdk deploy
すると次のようなものが表示される.「=」以下のものを使用するのでコピペでもしておくと良い.
次にlambdaにあるinvoke_one.pyを用いて関数を実行する.
これはランダムな寿司ネタが返ってくる関数だ.下の実行結果をみるとわかる.
python invoke_one.py =以下のもの
先程は1つの関数で1つのタスクを実行しただけだったが,今度は同時に多数のタスクをする関数を実行する.
同じくlambdaにあるinvoke_many.pyを用いて実行する.
python invoke_many.py =以下のもの
これは100個のタスクを実行する関数だ.では本当に100個実行できているのかを見る.
awsのlambda→関数→関数名からモニタリングがある.そこで以下のようなものが見られるはずだ.
左上のInvocationsが100となっていることから,100個のタスクを実行したことがわかった.
これでLambdaを触ってみるのは終わる.最後にスタックを削除しておく.
cdk destroy
Dynamoを触ってみる
Dynamoでは,データの読み書き,削除などの操作ができる.
まずはディレクトリを移動する.
cd handson/dynamodb
後はLambdaと同じ.
実行時出てきた「=」以降はひかえておく.
ここで一度awsからDynamoDB→テーブル→テーブル名→アイテムを見てみる.
すると空になっている.今はまだ何もしていないが,要素を追加してみる.
dynamodbにあるsimple_write.pyを使いデータを追加する.
python simple_write.py =以下のもの
これで先程の画面をもう一度見てみると,以下のように,要素が追加されている.
ageやfirstnameが書いてあるのは,simple_write.pyのItemで定義しているもので,そこから反映されていることもわかった.
では,simple_write.py追加したItemを読み出す,simple_read.pyを実行する.中身は下のようになっている.
下から2行目で,テーブルの要素を取り出している.
以下を実行してみる.
python simple_read.py =以下のもの
すると次が出力され書き込んだ要素を取り出せている.
これでDynamoDBに触れるのは終える.スタックを削除しておこう.
S3を触ってみる
S3は,AWSにデータをアップロードしたり,ダウンロードや削除するのに用いる.
S3では,バケットというものをまず作成し,その中にデータを入れていく.
デプロイはディレクトリを移動するだけで,あとは同じ.
cd handson/serverless/s3
次にs3にあるsimple_s3.pyを使い,データをアップロードする.
tmp.txtというファイルを生成し,=以下のところを名前としたバケットにアップロードするという流れである.
echo "Hello world!" >> tmp.txt python simple_s3.py =以下のところ upload tmp.txt
逆に,ダウンロードしたいときは,上のuploadをdownloadにすれば良い.
また,アップロード,ダウンロードは,simple_s3.pyでそれぞれ定義されているので,見てみると良い.
何でもかんでも適当にアップロードすれば良いというものでもない.
アップロードする際に,どこにデータを置いておくかに注目する.ファイルで言うパスの部分だ.
これはS3ではKeyといい,--keyを用いてアップロード先を指定する.
試しに先程のtmp.txtを,a/b/tmp.txtにアップロードする場合は,以下のようにする.
python simple_s3.py =以下のところ upload tmp.txt --key a/b/tmp.txt
アップロードするコマンドの最後にKeyの情報を足すだけで指定ができる.
きちんと指定先にアップロードされているかを確認したければ,awsのAmazon S3から見ると良い.
最後にスタックを削除するのを忘れないようにする.