VB.netでAmazon S3のバケットにファイルを送信するプログラムを稼働させていたのでsぐあ、2019/06/24以降、署名バージョン2のサポートが終了ということで、なんとかしようとしています。
こちらのページによると、Amazon S3 クライアントを作成する前に、「AWSConfigs.S3UseSignatureVersion4 = True」と記述するだけでいいよと書いてあります。
AWSSDKは、バージョン1.2.3があります。
現在使っているのは、バージョン1です。
AWSSDK.DLLが存在するのは、バージョン1とバージョン2です。
どうやら、上記ページの内容はバージョン2のようです。
スポンサーリンク
バージョン1で稼働中の、Amazon S3 クライアントを作成するコードは以下です。
AWSSDK.DLLをバージョン2に変更して、言われた通りにしてから実行してみました。
client = Amazon.AWSClientFactory.CreateAmazonS3Client([アクセスキー], [シークレットアクセスキー])
「No RegionEndpoint or ServiceURL configured」というエラーが発生します。
いろいろやってみましたが、バージョン2でやるのは諦めて、バージョン3でやってみました。
バージョン3にはAWSSDK.DLLがないので、AWSSDK.Core.dllとAWSSDK.S3.dllを参照に加えます。
client = New Amazon.S3.AmazonS3Client([アクセスキー], [シークレットアクセスキー], [リージョン])
[リージョン]は「Amazon.RegionEndpoint.USEast1」としました。
ここはS3のバケットがあるリージョンにあわせればよいです。
とりあえず、バケットにファイルをアップロードできました。
本当に、署名バージョン4で送信できているか確認するためには、
バケットのプロパティを開き、「サーバーアクセスのログ記録」を有効化します。
しばらくするとログファイルができるようになります。
sigV4と書いてあったら、署名バージョン4ということですが、署名バージョン2で送信したはずのものも、全てsigV4と書いてあって意味不明でした。