大きなファイルを指す URL がある場合、そのファイルをローカルにダウンロードしてからアップロードせずに、バケットに取り込むためのショートカットはありますか?
タスクを実行する Docker イメージを構築し、それを何らかの方法で GCP で実行する以外に、もっと簡単な方法はありますか?
答え1
前述の通り、リンク
1: curl コマンドを使用して、データをバケットに直接ストリーミングすることでこれを実行できます。
curl http://speedtest.tele2.net/10GB.zip | gsutil cp -gs://YOUR_BUCKET_NAME/10GB.zip
2: 4.6 GB 未満のファイル。
オリジナルのアプローチ: ダウンロードが 4.6 GB 未満であれば、この方法は有効です。Cloud Shell (GCP でプロジェクトにログインした後、右上の最初のアイコン) を起動し、wget を使用して必要なファイルをダウンロードします。たとえば、7-Zip をダウンロードするには、次のように入力します: wget https://www.7-zip.org/a/7z1805-x64.exeこれで、Cloud Shell ユーザー ホームにファイルが作成され、gsutil コマンドを使用して Google Cloud Storage バケットにコピーできるようになります。
gsutil cp ./7z1805-x64.exe gs://your_bucket_name/
3: 4.6 GB を超えるファイル。
Cloud Shell ユーザーホームにディレクトリを作成する
mkdir ~/mybucket
次に、gcsfuse を使用してそのディレクトリにバケットをマウントします。
gcsfuse bucket_name ~/mybucket
現在のディレクトリをマウント ポイント ディレクトリに変更します
cd mybucket
(マウント ポイントにどれだけのスペースがあるかを確認するには、「df -h .」を実行します)。次に、wget を使用してファイルをバケットに直接取得します (Web から取得した 10 GB のファイルを使用したサンプル):
wget https://speed.hetzner.de/10GB.bin
詳細については、ドキュメンテーションストレージ転送サービスとURLリスト。
答え2
Google Cloud Storage では、URL からオブジェクトを読み込む機能は提供されていません。
独自のコードを記述するか、CLIまたは次のようなマネージドサービスを使用する必要があります。ストレージ転送サービス