■
Chapter13
boto3の利用
これまでと同様に
$ cd handson/dojo/s3 $ python3 -m venv .env $ source .env/bin/activate $ pip install -r requirements.txt $ cdk deploy
これでデプロイを完了させる
実行後のバケット名もこれまでと同様にメモ
venvの環境下でインストールされたJupyterを立ち上げ
$ jupyter notebook
起動後新しいノートブックから
import boto3 session = boto3.Session(profile_name="default") s3 = session.resource("s3")
を実行してboto3をインポートし、s3リソースを呼び出し
バケット名を格納する変数の定義するために以下を実行
bucket_name ="????" bucket = s3.Bucket(bucket_name)
ダミーファイルを生成してバケットにアップロードしてみる
with open("tmp.txt", "w") as f: f.write("Hello world!") bucket.upload_file("tmp.txt", "myfile.txt")
その後ファイル一覧を取得することで
objects = bucket.objects.all() for o in objects: print(o.key)
アップロードしたファイルが確認される
次にバケット内のオブジェクトをローカルのコンピュータにダウンロードする
obj download_file("download.txt")
上記を実行することでファイルがコンピュータ内に作成される
obj.delete()
delete()メソッドを呼ぶことでオブジェクトを削除
前述したコードで一覧を取得することで削除されていることを確認できる
■
Chapter12
LambdaやS3を利用して俳句を投稿、あるいは投稿された俳句に”いいね”ができるアプリの実装
アプリの実装のための設計として
これらの4つのREST APIを用いて閲覧、投稿、いいね、削除を可能とさせる
これまでと同様にデプロイを行う
$ cd intro-aws/handson/bashoutter $ python3 -m venv .env $ source .env/bin/activate $ pip install -r requirements.txt $ cdk deploy
AWSのコンソールからデプロイされたスタックを確認
APLリクエストの送信
$ export ENDPOINT_URL=????
デプロイ時に得られたURLを????に設定する
次に俳句の一覧を取得
$ http GET "${ENDPOINT_URL}/haiku"
まだ俳句の投稿はないので空が出力される
俳句を投稿するには
$ http POST "${ENDPOINT_URL}/haiku" \
を実行し、先のGETを再実行すると俳句の追加を確認できる
$ http PATCH "${ENDPOINT_URL}/haiku/????"
最後に同じ要領でDELETEを行えば俳句を削除
スタックの削除も同様
■
Chapter11
Lambdaの利用
まずこれまで通りデブロイを行う
$ cd handson/serverless/lambda
venvを作成し実行
$ python3 -m venv .env $ source .env/bin/activate $ pip install -r requirements.txt $ cdk deploy
Lambda関数の実行
$ python invoke_one.py ????
上記の実行でLambda関数を実行
????にはデプロイの実行時に得られた文字列を入力
$ python invoke__many.py ???? 100
これが成功すれば100個のタスクを実行することができる
AWSコンソール内のTimestream>Monitoringからその様子を確認できる
最後にスタックを忘れずに削除
DynamoDBの利用
データの読み書き
デプロイの手順はLambdaと同様であり、/Lambdaを/dynamodbを変えるだけ
$ python simple_read.py ????
これで要素が出力される
■
Chapter10
■
Chapter9
REST API
APIは、あるソフトウェア・アプリケーションは、外部のソフトウェアに対してコマンドやデータをやり取りする媒介の一般的な総称
ウェブサービスの文脈ではサーバーが外界に対して提示しているコマンドの一覧を指す
現在一般的となっているのはREST(Representational State Transfer)という設計思想
これがREST APLとされる
REST APIはMethodとURIの組み合わせ
Methodは動詞として捉えることができ、CRUDと総称される操作(GET,POST,PUT,PATCH,DELETE)が多く使われる
- GET:要素を取得
- POST:新しい要素を作成
- PUT:既存の要素の置き換え
- PATCH:既存の要素の一部を更新
- DELETE:要素の削除
URIはMethodに対する目的語となる
httpあるいはhttpsから始まるウェブサービスのアドレスから、/以降のリソースのパスを指定
■
Chapter7
自動質問回答ボットの試用
$ docker pull tomomano/qabot:latest
今回使うimageをダウンロード
context="文章"とquestion=”質問”をそれぞれ変数として定義し↓
$ context="~~~~~" $ question="~~~~~?"
次のコマンドでコンテナを実行
$ docker run tomomano/qabot "${context}" "${question}" foo --no_save
タスクの同時実行
$ python run_task.py ask_many
このコマンドを実行しECSコンソールのタスク一覧を見る。すると複数のタスクが実行されている
すべてのタスクが止まったあとに
$ python run_task.py list_answers
の実行で答えが出力される
最後にスタック削除を行って終了
■
Chapter6
Docker利用
- image:パッケージされた計算環境
- dockerfile:imageを作成するレシピとなるものが記載
- container:起動状態の計算環境
- build:dockerfileからimageを作成する操作
- run:containerの起動
上記が主な用語となる
imageはDocker hubからダウンロードできる
Ubuntuの場合は公式リポジトリから可能
$ docker pull ubuntu:20:04 $ docker run -it ubuntu:20.04 ||< このコマンドによりimageを入手し,起動させる >|ruby| $ docker run -it pytorch/pytorch
↑でpytorchの起動後
これでPythonからpytorchをインポートできた
Dockerを使うことで特定のOSやプログラムの入った計算環境の再現が可能