pythonでstorage transfer serviceを使ってみた。
公開日:
:
AWS, Cloud Storage, Google Cloud Platform, python, S3 AWS, cloud storage, gcs, google cloud platform, python, s3, storage transfer service, サービスアカウント, 転送
準備
pythonのインストールとかする。
このあたり。
http://kei0310.info/?p=592
サンプルコードを使う
とりあえず、サンプルコードを使ってみる。
このあたりを丸ごとコピって使う。
https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/storage/transfer_service/aws_request.py
転送元のデータの準備
AWS S3にバケットと転送するデータがあることを確認。
1 2 |
$ aws s3 ls s3://[s3-bucket-name]/ 2020-09-15 17:01:23 0 test.txt |
GCSに転送先のバケットを用意する
gcsに転送先のバケットがあることを確認。
1 2 |
$ gsutil ls gs:// gs://[gcs-bucket-name]/ |
ジョブ作成用のサービスアカウントを用意する
IAMからサービスアカウントを新規作成する。
有効なサービスアカウントであれば、権限はつけなくても大丈夫そう。(違うかも)
python用デフォルトサービスアカウントに設定
jsonフォーマットでkeyファイルをダウンロードしてサーバー上にファイルとして配置。
以下のコマンドでpythonが使うサービスアカウントとして定義する。
(必要があれば、.bash_profileとかにも登録してね)
1 |
$ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credential.json |
転送用のサービスアカウントを用意する
通常のサービスアカウントと別で、API専用のサービスアカウントの設定を行う。
このページを開く。
https://cloud.google.com/storage-transfer/docs/reference/rest/v1/googleServiceAccounts/get
ページの右側に入力欄があるので、プロジェクトIDを入力して「EXECUTE」を押す。
成功すると、「200」欄に以下が入力されるので、メールアドレス部分をコピーする。
1 2 3 |
{ "accountEmail": "project-xxxxxxxxxx@storage-transfer-service.iam.gserviceaccount.com" } |
コピーしたメールアドレスを、Cloud Storageコンソールのバケットを選択した後の「権限」タブから「+追加」を選択して、「Storage レガシー バケット書き込み」を付与する。
転送ジョブの実行
転送ジョブを以下のコマンドで実行する
1 |
$ python aws_request.py [description] [project-id] [yyyy/mm/dd] [HH:MM:SS] [s3_bucket_name] [aws_access_key] [aws_secret_key] [gcs_bucket_name] |
実行結果例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Returned transferJob: { "name": "transferJobs/14429711211095668488", "description": "transfer-test", "projectId": "xxxxxxxx", "transferSpec": { "awsS3DataSource": { "bucketName": "s3_bucket_name" }, "gcsDataSink": { "bucketName": "gcs_bucket_name" } }, "schedule": { "scheduleStartDate": { "year": 2020, "month": 9, "day": 22 }, "scheduleEndDate": { "year": 2020, "month": 9, "day": 22 } }, "status": "ENABLED", "creationTime": "2020-09-22T17:18:03.834435704Z", "lastModificationTime": "2020-09-22T17:18:03.834435704Z" } |
スポンサードリンク
関連記事
-
[python] 日付の取り扱い(datetime) 現在日付、計算、文字列変換(format)
現在日付 日付の計算 [crayon-67491e2928c98263239960/] 文
-
BigQueryにテーブル作成からバッチロードまでしたメモ
プロジェクト作成、課金設定までしている前提。 データセットを作成 テーブルを作成 [cra
-
aws cliをインストールしたメモ
いつぞやより、めっちゃ簡単になっていた。 インストール 設定 [crayo
-
[python] ファイルの読み込み
pythonでのファイルの読み込み方法 基本サンプル CSVファイルの読み込み
-
[Python] Nullの判定方法(None)
Nullの判定方法(None) 表記方法 Pythonでは、Nullを「None」と表記します。
-
Compute Engine(GCE)にpyenv環境を作ってみた
pyenvのインストール 必要なOSモジュールのインストール https://
-
[python] 文字列結合
pythonでの文字列結合 サンプル
-
AWS Redshiftの使用ストレージ容量をクエリで調べる方法
用途 AWS Redshfitのコンソールを見れば、使用中のストレージ容量はわかります。
-
[Python] 型の検査・判定
Pythonでの型の検査・判定方法 isinstance サンプル [crayon-674
-
[python] 配列の扱い方
pythonでの配列の扱い方 python 配列の作成 python 配