web-dev-qa-db-ja.com

認証のため、gsutilをs3にコピーできません

AWSラムダ関数を活用するには、GCSからs3に多くの(1000以上の)ファイルをコピーする必要があります。 _~/.boto.cfg_を編集し、2つのaws認証パラメーターをコメントアウトしましたが、単純な_gsutil ls s3://mybucket_が[〜#〜] gce [〜#〜]またはEC2VM。

エラーは_The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256._です。

私はgsutilバージョンを使用しています:_4.28_と[〜#〜] gcs [〜#〜]S3バケットはそれぞれ_US-CENTRAL1_とUS East (Ohio)です-これが関連する場合。

AWSキーが有効で、http/httpsを有効にしているので、わかりません。ラップトップのCyber​​duckを使用してGCSからダウンロードしてS3にアップロードするのは実用的ではありません(> 230Gb)

9

https://issuetracker.google.com/issues/62161892 に従って、gsutil v4.28does~/.botoに次のような新しい[s3]セクションを追加することにより、AWSv4署名をサポートします

[s3]
# Note that we specify region as part of the Host, as mentioned in the AWS docs:
# http://docs.aws.Amazon.com/general/latest/gr/rande.html#s3_region
Host = s3.eu-east-2.amazonaws.com
use-sigv4 = True

そのセクションの使用はboto3から継承されますが、現在gsutil configによって作成されていないため、ターゲットエンドポイントに明示的に追加する必要があります。

S3-to-GCSの場合、サーバーレスのStorage Transfer ServiceAPIを検討します。

13

私も同様の問題を抱えていました。これが私がGCEマシンでやったことです:

ステップ1:gsutilを使用して、GCSからGCEハードドライブにファイルをコピーしましたステップ2:aws cli(aws s3 cp ...)を使用して、GCEハードドライブからs3バケットにファイルをコピーしました

上記の方法論は私にとって確実に機能しました。 gsutil rsyncを使用しようとしましたが、予期せず失敗します。

お役に立てれば

0
Shailu Mishra