Googleドライブのフォルダ→AmazonS3にアップロードするときの備忘録
こんにちは! Excel講師の榊裕次郎です。
依頼があって、4月にローカルフォルダにあるデータをAmazon S3にアップロードするPythonのコードを書いたつもりなのですが、そのPythonファイルがどっかに行ってしまい、しかもほとんど忘れてしまったため、ゼロからやり直しの状態でした……。
忘れないために、自分のブログに記載しておきます。ちなみに私の開発環境は、WindowsでVSCodeです。Python、そんなに得意じゃないのでご容赦ください。
Boto3をインストール
pip install boto3
その最初に作業した4月のときにインストールをしたのだけど、どうやってインストールしたのかあまり覚えておらず、VSCodeにこれをそのまま入力してインストールしたような気がします。
2回目以降は、エラーでインストールできませんでした。まあ、boto3が入っているのでこれでインストールできたとします。
AWSのIAMからアクセスキーとシークレットキーを発行
IAM→[アクセス管理]→[ユーザー]→[認証情報]→[アクセスキーの作成]で作成。
注意点としては、ここでDLできるcsvファイルしかシークレットキーを見ることができないので、必ず大事に保管する。
VSCodeにPythonで記述
import boto3
s3=boto3.resource(‘s3’,
aws_access_key_id=”XXXXXXXXXXXXXXXXXXXX”,
aws_secret_access_key=”XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”)
s3.Bucket(‘①’).upload_file(‘②’, ‘③’)
① S3のバゲットネーム
② ドライブファイルストリームのGoogleドライブを指定
例) G://マイドライブ/xxx/xxx.csv
③ S3にアップする位置を指定。以下の場合なら、RAWフォルダー内にxxx.csvを配置。
例) RAW/xxx.csv
これで実行するとあっさりアップロード。ちなみに文字コードはUTF-8で。
どうしてこれが必要?
Googleドライブ側は、RAWデータをため込ませる仕様で運用しています。
それをAmazonS3に送るというフローを取ると、Googleドライブ側はスプレッドシートでオペレーションを行うことができて、S3のほうはQuickSightなどのBIツールで利用することができる点。
GoogleはGoogleで完結したいのだけど、Amazonでないと苦手なところもあるからね……。ちなみに同一ファイル名は、S3側でちゃんと上書きしてくれる。
同一ファイル名は(1)とついて上書きできないという不安はあったけど、大丈夫だった。