3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

awsのs3にコマンドでデータをアップして更新し、使い終わったデータは削除する(途中)

Last updated at Posted at 2019-12-08

AWS CLI バージョン 1 のインストール

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())
    
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?