AWS CLI の最新バージョンのインストール
pip3 install awscli --upgrade --user
一応インストールはできたようだが、
aws --version
とすると、
zsh: command not found: aws
と出てきてしまう、、、
AWS CLI バージョン 1 実行ファイルを macOS のコマンドラインパスに追加する
上の記事を元に「オペレーティングシステムの PATH 環境変数への aws プログラムの追加」をする。
→でもやっぱり
zsh: command not found: aws
と出てしまう...?
which python
で/Users/ユーザー名/anaconda3/bin/python
と出てくる。
AWS CLI をインストールする
上の記事によると
最初のインストール時に--userとすると、.localにインストールされるらしい。
~/.local/binにPATHを通す必要があるのに、現在は
export PATH="/Users/ユーザー名/anaconda3/bin:$PATH"
となってしまっているのが原因かと、、、
anacondaを使った場合はやり方が違う?
how to install AWSCLI on a Anaconda python distribution
aws codecommit aws: command not found
###→結論
conda install -c conda-forge awscli
を実行してみたら、見事AWS コマンドを使えるようになりました。
##AWS CLIの設定
参考サイト
aws configure
↓
AWS Access Key ID [None]: 〜〜 AWS Secret Access Key [None]: 〜〜 Default region name [None]: ap-northeast-1 Default output format [None]: json
AWS CLIのコマンド一覧
aws s3 ls
でs3の中身を見ることができることを確認
##s3上にあるファイルをローカルにコピーする。
aws s3 cp s3://{バケット名}/{パス} {ローカルのパス}
s3上のファイルのパスは「ファイルをクリック→コピーパスをクリック」でコピーできます。(以下はダウンロードフォルダにダウンロードする場合)
aws s3 cp s3://〜〜〜 /Users/ユーザー名/Downloads
pythonでファイルを解凍し、余計なカラムを削除
参考:pandas.read_csvで圧縮ファイルも読み込めちゃうの。とても便利!
import pandas as pd
df = pd.read_csv('ファイル名.csv.gz')
#使わない列を削除
df=df.drop(columns=['A','B','C'],axis=1)
#列aに欠損値があればその行を削除
df=df.dropna(subset=['a'])
df.to_csv('./renamed_file/圧縮後のファイル名.csv.gz', index=False, compression='gzip')
pythonからコマンドを実行する。
【Python入門】subprocessを使ってコマンドを実行しよう!
###試しに、pythonからs3の中身を見てみる
import subprocess
subprocess.call(["aws","s3","ls"])
→成功
##ダウンロード/point_dataフォルダにS3からダウンロードし、解凍してから加工をくわえ、ダウンロード/renamed_fileフォルダに圧縮し直してから配置し、S3の指定の場所にアップロードする。
import subprocess
path_list=[ダウンロードしたいS3上のファイルのPATHのリスト]
for s in range(len(path_list)):
cmd="aws s3 cp"+" "+path_list[s]+" "+"/Users/ユーザー名/Downloads/point_data"
subprocess.call(cmd.split())
df = pd.read_csv(filename_list[s])
#使わない列を削除
df=df.drop(columns=df.columns[[1,2,3,4,5]], axis=1)#数字は列の番号左は例
#カラム名Aがない行を削除
df=df.dropna(subset=['A'])
#保存
file_name='/Users/ユーザー名/Downloads/renamed_file/'+ファイル名
df.to_csv(file_name, index=False, compression='gzip')
cmd2="aws s3 cp"+" "+"/Users/ユーザー名/Downloads/renamed_file/"+ファイル名+" "+ 'アップロードしたいS3上の場所のPATH'
subprocess.call(cmd2.split())