AWS SageMakerの実験を始めたばかりで、S3バケットからSageMakerのpandasデータフレームpython jupyterノートブックにデータをロードして分析したい。
Botoを使用してS3からデータを取得することもできますが、SageMakerフレームワークの一部として、pythonコードでこれを行うためのよりエレガントなメソッドがありますか?
アドバイスを事前に感謝します。
import boto3
import pandas as pd
from sagemaker import get_execution_role
role = get_execution_role()
bucket='my-bucket'
data_key = 'train.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)
pd.read_csv(data_location)
最も単純なケースでは、リソースはreadだけなので、_boto3
_は必要ありません。
それからさらに簡単です:
_import pandas as pd
bucket='my-bucket'
data_key = 'train.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)
pd.read_csv(data_location)
_
ただし、Prateekが述べたように、SageMakerノートブックインスタンスを必ず構成してください。 s3にアクセスできます。これは、[Permissions]> [IAMロール]の設定ステップで実行されます
Amazon SageMakerロールにS3にアクセスするためのポリシーがアタッチされていることを確認してください。 IAMで実行できます。
s3fs
を使用して、ファイルシステムとしてバケットにアクセスすることもできます
import s3fs
fs = s3fs.S3FileSystem()
# To List 5 files in your accessible bucket
fs.ls('s3://bucket-name/data/')[:5]
# open it directly
with fs.open(f's3://bucket-name/data/image.png') as f:
display(Image.open(f))