はじめに
AWS Glue作ったParquetのデータがあってこれをなんとかGCPにもっていきたかったのでコピーする方法について調べました。
以下はとあるバケットのデータ。Parquetで8.4GB元のテキストデータは70GBくらいですかね。これをGCPのCloudStorageにもっていこうと思います。
AWS IAM Roleを作る
GCPがAWSにアクセスできるようにIAM Roleを作ってあげます。
まずは以下のリンクを開いてGCPプロジェクトのサブジェクトIDを取得します。プロジェクトIDは自身で指定したものを入力してください。
AWSのIAMを開き、ロールの作成→ウェブアイデンティティ→Googleを選択します。Audienceには先ほど取得したサブジェクトIDを指定します。
ポリシーは以下を設定します。(バケット名は適宜修正してください。)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*",
"s3:Delete*"
],
"Resource": [
"arn:aws:s3:::uzresk-opendata",
"arn:aws:s3:::uzresk-opendata/*"
]
}
]
}
AWSS3toGCPCloudStorageAccessRoleみたいな名前を付けて保存し、ARNをコピーしておきます。
Data Transferを使ってS3→CloudStorageへのコピー
DataTransferを開き、「転送ジョブを作成」を押して転送ジョブを作っていきます。転送元はS3、転送先はGCPを選択してください。
ソースのAWSのバケット名、先ほど作ったIAM RoleのARNをコピーを設定します。
転送先のCloudStorageのバケットとフォルダを指定します。
転送実行モードを選択します。今回は1度だけ起動を選択しました。
何を設定したかわかるようにJOBの名前は適当に書いておきましょう。
保存すると、1分もしないうちに完了するはずです。
転送速度などわかるようですね・・・。
さいごに
- AWSのIAMRoleを使ってGCPにデータをコピー可能でありかなりお手軽に利用できました。
- 参考までに合計8.4GB, 1007ファイルで転送時間は32秒、平均転送速度は280MB/Secでした。