なぜ書こうと思ったのか
インターン先で、AWSを初めて使うようになり、S3からのデータのダウンロードとアップロードが苦戦したので、整理のために書こうと思いました。
目次
#そもそもS3とは?
Amazon Simple Storage Service、通称S3はオブジェクトストレージサービスであり、様々なユースケースのデータを保存して保護することができる。さらには、データを整理してアクセス制御を細かく調整するために使いやすい機能を提供するサービスである。
S3のメリットについては、以下の記事を参考
#S3への接続とその確認方法
今回はSagemaker上で行っています。
ローカルで行う場合は、configureの設定を行ってから進める必要があります。
バケットへの接続
name部分には、抽出したいファイルがあるS3上のバケット名をいれます。
import boto3
#バケットへの接続
s3 = boto3.resource('s3')
bucket = s3.Bucket('name')
このときに、jupyter上で
print(bucket)
を実行してバケット名が表示されていれば、接続ができていると思われます。
#ファイルのダウンロードとアップロード
バケットからのダウンロード
- 対象のファイルをダウンロードしたい場合
bucket.download_file(file_path, file_name)
file_pathには、s3上での抽出したいファイルのpath
file_pathをきちんと通せているか、確認を忘れないでください。
- 一度にすべてのファイルをダウンロードしたい場合
!aws s3 cp s3://'s3上でのバケット名'(/file_path) 'ダウンロード先のフォルダ' --exclude "" --include "*" --recursive
- excludeオプション
- exclude オプションは、コマンドからオブジェクトのみを除外するようにルールを設定します。
- includeオプション
include オプションは、指定したオブジェクトのみをコマンドに含めるようにルールを設定します。 - recursiveオプション
recursiveオプションは、指定のディレクトリ内またはプレフィックス内のすべてのファイルやオブジェクトに対してコマンドが実行されます
バケットへのアップロード
bucket.upload_file(file_name, file_path)
file_nameには、アップロードするファイル名
file_pathには、バケット内のどのフォルダ内にアップロードするかのpathを指定する