会社行きたくなかったんです。

自由になりたくて会社辞めました

S3 VB.net

VB.net AmazonS3の署名バージョン4対応してみた。

投稿日:

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 クライアントを作成するコードは以下です。

client = Amazon.AWSClientFactory.CreateAmazonS3Client([アクセスキー], [シークレットアクセスキー])

AWSSDK.DLLをバージョン2に変更して、言われた通りにしてから実行してみました。

Amazon.AWSConfigs.S3UseSignatureVersion4 = True
client = Amazon.AWSClientFactory.CreateAmazonS3Client([アクセスキー], [シークレットアクセスキー])

「No RegionEndpoint or ServiceURL configured」というエラーが発生します。

いろいろやってみましたが、バージョン2でやるのは諦めて、バージョン3でやってみました。

バージョン3にはAWSSDK.DLLがないので、AWSSDK.Core.dllとAWSSDK.S3.dllを参照に加えます。

Amazon.AWSConfigsS3.UseSignatureVersion4 = True
client = New Amazon.S3.AmazonS3Client([アクセスキー], [シークレットアクセスキー], [リージョン])

[リージョン]は「Amazon.RegionEndpoint.USEast1」としました。
ここはS3のバケットがあるリージョンにあわせればよいです。

とりあえず、バケットにファイルをアップロードできました。

本当に、署名バージョン4で送信できているか確認するためには、
バケットのプロパティを開き、「サーバーアクセスのログ記録」を有効化します。
しばらくするとログファイルができるようになります。
sigV4と書いてあったら、署名バージョン4ということですが、署名バージョン2で送信したはずのものも、全てsigV4と書いてあって意味不明でした。

-S3, VB.net

Copyright© 自由になりたくて会社辞めました , 2019 AllRights Reserved Powered by AFFINGER4.