イントロ
AWSのS3のバケットは、流行っているデータ保存先ですね。人工衛星のデータを会社によりよく使用します。しかし、Pythonで直接に読み込めませんが、ダウンロードできます。本日の記事には、GoogleのColabでは、AWSのS3バケットからデータをダウンロードし方を紹介します。
セットアップ
最初に、ColabでAWSのモジュールをインストールしたいです。Pipでawsとaswcliのモジュールをインストールして、AWSを繋げるようになります。そしてColabの場合は、ドライバーに接続します。
!pip3 install aws
!pip3 install awscli
#Colab link drive
from google.colab import drive
drive.mount('/content/drive')
次に、AWSのアカウントを設定します。AccessID(アクセント番号)とAccessKey(アクセントガキ)が必要です。持っていない場合は、AWSの記事をご覧ください リンク. このアクセント情報が持っていうると、「awscli.ini」というファイルを作りました。AWSを繋げるために、このファイルが必要です。このファイルの中で、ACCess情報とS3のバケットの地域に設定します。
text = '''
[default]
aws_access_key_id = {Access id goes here }
aws_secret_access_key = {Access key goes here}
region = {AWS region goes here, example ap-northeast-1}
'''
#Create file
path = "/content/drive/MyDrive/config/awscli.ini"
with open(path, 'w') as f:
f.write(text)
#Print the results
!cat /content/drive/My Drive/config/awscli.ini
AWSCLI
次に awscli.iniのファイルは、Colabの環境に入り込みます。osというモジュールを使用して、環境の設定に入り込めます。
import os
!export AWS_SHARED_CREDENTIALS_FILE=/content/drive/MyDrive/config/awscli.ini
path = "/content/drive/MyDrive/config/awscli.ini"
os.environ['AWS_SHARED_CREDENTIALS_FILE'] = path
print(os.environ['AWS_SHARED_CREDENTIALS_FILE'])
これが終わると、AWSのS3のバケットを接続できるでしょう。確認するために「ls」というシェルスクリプトを使いましょう
!aws s3 ls s3://{your bucket name}
自分のS3のバケットを持っていない場合は、無料のデータサイエンスを使用しましょう。
データをダウンロードのために、一般的なシェルスクリプトの「cp」を使用します。S3には、保存量を減らすために、zipとtar.gzの圧縮のファイルをよく使います。Colabに環境でこのファイルをダウンロードして、解凍するときに、自分のドライバーの中で保存することが適当と思います。
!aws s3 cp s3://{bucket name}/{file name}.zip .
!aws s3 cp s3://{bucket name}/{file name}.tar.gz .
データをダウンロードした後で、ドライバーに解凍しました。zipとtar.gzの例は下記の通りです
!tar -xzvf "/content/{file_name}.tar.gz" -C "/content/drive/MyDrive/{save loc}"
!unzip "/content/{file name}.zip" -d "/content/drive/MyDrive/{Saveloc}"
メモ
メモ1:自分のドライバーの保存先は「Colab notebook」の中の場合は、文字の間のスペースは問題を引き起こせてしまいます。解決するために、\ バックスラッシュを入ります。 ("colab\ notebook").