1. awswranglerってなに?
AWS上でのPandasを拡張したパッケージです。
データの読み込み・書き出し等の処理を簡単に提供してくれます。
個人的にユースケースとして、使いやすいと感じるのは、
Lambda上でのLayerが、AWS公式から提供されているため、公式のarnを指定するだけで使えることが魅力的だと感じています
どれぐらい簡単になるか、実際に見てましょう。
2. Boto3/Pandasではなく、awswranglerを使う実践的なコード
最も一般的なユースケースとして、
S3からデータを読み、Lambdaで計算処理をして書き出すプログラム
を書いてみましょう。
2-1. boto3/pandasを使う場合
import boto3 import pandas as pd BUCKET_NAME = 'my-test-bucket' OBJECT_NAME = 'hello.csv' FILE_NAME = '/tmp/helllo.csv' RESULT = '/tmp/result.csv' Key = 'result.csv' client = boto3.client('s3') s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME') df = pd.read_csv(FILE_NAME) df.to_csv(RESULT) client.upload_file(RESULT, BUCKET_NAME, Key)
となります。
ポイントは、
- boto3を使って、一度ダウンロードしなければいけない
- ダウンロードしたデータを読み込み、一度書き出さなければいけない
- 書き出したデータをアップロードしなければいけない
これをawsranglerで書くとどうなりますでしょうか?
2-2. awswranglerを使う場合
import awswrangler as wr BUCKET_NAME = 'my-test-bucket' OBJECT_NAME = 'hello.csv' Key = 'result.csv' df = wr.s3.read_csv(f's3://{BUCKET_NAME}/{OBJECT_NAME}') df.to_csv(f's3://{BUCKET_NAME}/{Key}')
です。とても簡素にかけて素晴らしいです。
awswranglerが内部的にboto3/pandasをラップしてくれているので、上記のような処理が実現できます。
3. なんでawswrangler?
上記のように、awswranglerを使うと簡単に書くことができ、また
AWS上でのインストールが簡単
だからです。
具体的には、
arn:aws:lambda:
:336392948345:layer:AWSSDKPandas-Python<python-version>:<layer-version>.
のような形でインストールを行います。
arnの一覧ページは下記を参照ください。