gsutilでAmazon S3にファイルを置く方法

gsutilでAmazon S3にファイルを置く方法
Page content

gsutilでAmazon S3にファイルを置く方法を紹介します。

最低限必要となる権限がAWS CLIでコピーする場合よりも多くなるので要注意です。

gsutilのコマンド

gsutilでAmazon S3へファイルをコピーする際は、gsutilのcpコマンドを使用します。

ポイント

  • AWSのアクセスキーとシークレットキーを指定する
    -oオプションを利用すると実行時に使用するキーを指定できるので、同一環境で複数のキーを使い分けることができます。

  • 署名バージョン4の設定を追加する
    2020年6月24日以前に作成されたバケットでは不要のこともあるようですが、こちらの指定が推奨のようです。
    Amazon S3 アップデート — SigV2 の廃止時期、延期と変更

  • S3側は配置先のファイル名まで指定する
    ファイルを配置したいパスの指定のみでは配置できませんでした。

  • コマンド例

    gsutil -o 'Credentials:aws_access_key_id=XXX' \
           -o 'Credentials:aws_secret_access_key=XXX' \
           -o 's3:host=s3.XXX.amazonaws.com' \
           -o 's3:use-sigv4=True' cp test.txt s3://XXX/test.txt
    

cpコマンドの説明とグローバルオプション

AWS側で必要な権限

  • PutObject
    Amazon S3へファイルを配置するために必須の権限です。
    こちらはAWS CLIでコピーする場合でも同様です。

  • ListBucket
    gsutilのcpコマンドでは、PutObject権限だけではAmazon S3にファイルを配置することができませんでした。

    cpコマンド実行時の処理の中でListObject APIを呼ぶため、ListBucket権限も必要となるようです。
    (※バージョンによって異なる可能性があります)