1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASのS3ライブラリで署名バージョン4の認証エラーが出た時の解決法

Last updated at Posted at 2024-04-25

はじめに

まず、GASとS3を連携したいと思った時に以下のS3ライブラリが挙げられると思います。

ただ、こちらをそのまま利用しようとすると署名バージョン4に対応しておらず、困る場合があるかと思います。

Amazon S3 は、すべての AWS リージョンで、AWS サービスへの受信 API リクエストを認証するためのプロトコルである署名バージョン 4 をサポートしています。現時点では、2014 年 1 月 30 日より前に作成された AWS リージョンは、以前のプロトコルである署名バージョン 2 を引き続きサポートします。2014 年 1 月 30 日以降の新しいリージョンは署名バージョン 4 のみをサポートするため、これらのリージョンへのすべてのリクエストは署名を使用して行う必要があります。

とあるように、新しく作成されたリージョンでは署名バージョン4のみをサポートするため、例えばap-northeast-1(東京)リージョンでは署名バージョン4の認証エラーは発生しませんが、ap-northeast-3(大阪)リージョンでこのライブラリをそのまま利用しようとした場合エラーが発生します。

この記事では、この問題を解決してGASから署名バージョン4のS3と連携ができるようにする方法を書いていきます。

方法

GAS上のS3ライブラリは署名バージョン4に対応していないですが、github上では対応がされているので、githubからS3ライブラリのコードをGASのファイルへコピーしてください。

コピーする対象はS3.gsS3Request.gsの2つです。

あとは、S3Request.gsのregion指定を実際に使用するリージョンに書き換えてください。

this.date = new Date();
this.serviceName = 's3';
this.region = 'us-east-1'; // ←ここ
this.expiresHeader = 'presigned-expires';
this.extQueryString = '';

https://github.com/eschultink/S3-for-Google-Apps-Script/blob/7e4b2f963d0fb3533eda2f55b8013acad8055d76/S3Request.gs#L22-L26

以上です。

おわりに

誰かのお役に立てれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?