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 ????

 これで要素が出力される

 

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やプログラムの入った計算環境の再現が可能