Cloud StorageからAmazon S3へCloud Shellでファイル転送してみた

 2024.12.14 Katsuhiko Shigeyama

はじめに

皆さんこんにちは、XIMIXの重山です。
本記事は、NI+C TeamGCP Advent Calendar 2024の10日目の記事となります。

先日 Cloud StorageからAmazon S3へファイル転送したいという要望をいただいた際に、調べた内容をブログとして、記載したいと思います。

やりたいこと

Cloud StorageからAmazon S3へのファイル転送

PCローカルにダウンロードしてS3に上げて実現することも可能ですが、、、
セキュリティ面やファイル転送速度の観点で不安なため、クラウド間での転送を実施したいところ。
そこで、次のステップを実施し、クラウド間のファイル転送を行いたいと思います。

前提

  • ファイル転送は、スポットとし、定期的な処理はしない。
  • Google Cloud / AWSの特段のセキュリティサービス設定は行っていないこととする。

実施ステップ

gcs-to-s3-001

  1. AWS IAM作成(Google Cloudの実行ユーザと同一)・S3権限付与
    ※事項手順では割愛
  2. AWSアクセスキー取得
  3. Cloud ShellでAWSアクセスキー設定
  4. Cloud StorageからS3へ転送コマンド実行

AWSアクセスキー取得

IAM>ユーザ(①で作成したユーザ)>セキュリティ認証情報から アクセスキーを取得する。

gcs-to-s3-002

Cloud ShellでAWSアクセスキー設定

Cloud Shellを起動し、認証情報を設定する。

先述で取得したアクセスキーをCloud Shell Boto 構成ファイルに保管する。
※参考:Boto 構成ファイル | Cloud Storage

■実行コマンド

vi. boto
//Botoファイルが開くので、"i"で編集
//以下の通り、認証情報を保存

[Credentials]
aws_access_key_id = $MYACCESSKEY
aws_secret_access_key = $MYSECRETKEY

//Esc
//:wq!で保存

gcs-to-s3-005

認証情報が正しく設定されているか確認

lsコマンドを実行し、S3のバケット情報を参照する。

■実行コマンド

gcloud storage ls s3://転送先パス
初回実行時は、Cloud Shellの承認画面が出るので、承認を行う。

gcs-to-s3-006

S3が参照できたため、認証が出来ている。

gcs-to-s3-007

(S3側オブジェクト情報)

gcs-to-s3-008

Cloud StorageからS3へ転送コマンド実行

ここまで出来たら、通常の転送コマンドと同様に、ファイルコピーコマンドを実行する。

■実行コマンド

gcloud storage cp gs://転送元パス s3://転送先パス


以下のログ結果から、正常に終了したことが分かる。

gcs-to-s3-010

念の為、S3側も確認してみたところ、コピーを実行したファイルがあることが確認できた。

(S3側オブジェクト情報)

gcs-to-s3-011

感想

最後まで読んでいただきありがとうございます。

実施したい内容としては、至ってシンプルでしたが、当初は、Boto 構成ファイルの設定部分がドキュメントを読んでも分からず、少し苦労しました。また、AWS側の権限不足でエラーも出たりもしました。
今回実施したした際に、どちら側が原因で上手くいっていないのかを、出力されるログを元に、調べることが重要だということを再認識させられました。

ご参考になれば、幸いです。


Cloud StorageからAmazon S3へCloud Shellでファイル転送してみた

BACK TO LIST