skickaでGCP無料インスタンスからGoogleDriveにファイルをアップロードする方法
skickaでGCP無料インスタンスからGoogleDriveにファイルをアップロードする方法
なぜこんなことをする必要があるの?
自宅のネットワークが不安定なため、データ収集の途中で失敗することがある。
GCPにインスタンスを立てて、処理を完了させたあとでローカルに落とせばいいのでは?
しかし、外部向けの下り1GBを超えると課金が発生してしまう。
インスタンスからGoogle Drive にアップロードしてから、ローカルにダウンロードすれば無料枠で解決できそう。
環境
ゾーン
us-west1-aディスクサイズ
30GBソースイメージ
cos-dev-88-15978-0-0マシンタイプ
f1-micro(vCPU x 1、メモリ 0.6 GB)docker -v
Docker version 20.10.3, build 48d30b5b32cat /etc/os-release
NAME="Container-Optimized OS" ID=cos PRETTY_NAME="Container-Optimized OS from Google" HOME_URL="https://cloud.google.com/container-optimized-os/docs" BUG_REPORT_URL="https://cloud.google.com/container-optimized-os/docs/resources/support-policy#contact_us" GOOGLE_METRICS_PRODUCT_ID=26 GOOGLE_CRASH_ID=Lakitu KERNEL_COMMIT_ID=dfd65b9b9fe80d8ba3e4410d2dd0fe2c16303b6d VERSION=93 VERSION_ID=93 BUILD_ID=16379.0.0
前提
- インスタンスは作成済み
- Google Drive APIは有効済みかつ認証情報の設定済み
- インスタンスを汚さずにdocker内で完結させる
手順
- skickaの設定ファイルを保存するためのDocker Volumeを作成
- 一時的なGoコンテナでskickaの初期設定をする
- 動作確認
手順1/3 skickaの設定ファイルを保存するためのDocker Volumeを作成
volumeを作成するには docker volume create
を使用します。
# skickaの設定ファイルを保存するvolumeを作成
$ docker volume create --name skicka-config-volume
skicka-config-volume
$ docker volume ls
DRIVER VOLUME NAME
local skicka-config-volume
手順2/3 一時的なGoコンテナでskickaの初期設定をする
# golangイメージをダウンロード
# さきほどのvolumeをマウントしつつgolangコンテナを作成
$ docker run --rm -v skicka-config-volume:/mnt/skicka-config/ -it golang bash
## skickaをインストール
$$ go get github.com/google/skicka
## skickaの設定
$$ skicka init
$$ cat > .skicka.config
[google]
clientid=YOUR_GOOGLE_APP_CLIENT_ID(変更してください)
clientsecret=YOUR_GOOGLE_APP_SECRET(変更してください)
apikey=YOUR_API_KEY(変更してください)
[encryption]
[upload]
## リンクにアクセスして表示されたコードを入力する
$$ skicka -no-browser-auth df
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?client_id=*****************************...
Enter verification code: ***********
Capacity 2.00 TiB
Trash 0 B 0.00%
Drive 0 B 0.00%
Gmail 30.06 MiB 0.00%
Photos 0 B 0.00%
Free space 2.00 TiB 100.00%
## 設定ファイルをvolumeにコピーする
$$ cp -vipr .skicka.config .skicka.metadata.cache .skicka.tokencache.json /mnt/skicka-config/
'.skicka.config' -> '/mnt/skicka-config/.skicka.config'
'.skicka.metadata.cache' -> '/mnt/skicka-config/.skicka.metadata.cache'
'.skicka.tokencache.json' -> '/mnt/skicka-config/.skicka.tokencache.json'
手順3/3 動作確認
# skickaコンテナを実行(さきほどと同じような出力になるかを確認する)
# ソースを見たところかなりシンプルに作ってあったので選びました。他のイメージでも構いません。
$ docker run --rm -it -v skicka-config-volume:/mnt/skicka-config/ --name skicka satackey/skicka \
> -config /mnt/skicka-config/.skicka.config \
> -metadata-cache-file /mnt/skicka-config/.skicka.metadata.cache \
> -tokencache /mnt/skicka-config/.skicka.tokencache.json \
> df
Capacity 2.00 TiB
Trash 0 B 0.00%
Drive 0 B 0.00%
Gmail 30.06 MiB 0.00%
Photos 0 B 0.00%
Free space 2.00 TiB 100.00%
$ cat > /tmp/test.txt
てすと
# ファイルアップロードの動作確認
# アップロードしたいファイルのディレクトリ(フルパス)を/tmpにマウントしておく
$ docker run --rm -it \
-v skicka-config-volume:/mnt/skicka-config/ \
-v /tmp:/tmp \
satackey/skicka \
-config /mnt/skicka-config/.skicka.config \
-metadata-cache-file /mnt/skicka-config/.skicka.metadata.cache \
-tokencache /mnt/skicka-config/.skicka.tokencache.json \
upload /tmp/test.txt /test.txt
無事アップロードされています。
試しに1.5GBくらいのファイルをアップロードしたときのアップロード速度は8.5MiB/sとなかなか早くていい感じです。
Author And Source
この問題について(skickaでGCP無料インスタンスからGoogleDriveにファイルをアップロードする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/KazukiMiyazato/items/2847317be38048ac5ad0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .