ブログ | XIMIX

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

作成者: Katsuhiko Shigeyama|2024.12.14

はじめに

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

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

やりたいこと

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

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

前提

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

実施ステップ

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

AWSアクセスキー取得

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

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!で保存

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

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

■実行コマンド

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

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

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

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

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

■実行コマンド

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


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

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

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

感想

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

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

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