koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

さくらのクラウド オブジェクトストレージにAWS SDK for .NETで接続する

ときに、素直にはいかなかったのでメモを残しておく。

さくらのクラウド オブジェクトストレージのバージョンは記事の日時現在、 SDKのバージョンは 3.3.5.3 だった。

“AWSSDK.S3”: “3.3.5.3”

概ね以下のような記述で接続できるクライアントを構成できた。

// デフォルトの AWS4 に対応していないのでv2を使う様に設定する
AWSConfigsS3.UseSignatureVersion4 = false;
client = new AmazonS3Client(
    new BasicAWSCredentials(key, secret),
    new AmazonS3Config()
    {
        ServiceURL = endpoint,
        // XXX この設定は間違っているか無視される
        SignatureMethod = SigningAlgorithm.HmacSHA1,
        SignatureVersion = "2"
    });

記事現在の AWS SDK for .NET に関するドキュメントはバージョン3ではなく2で書かれていて、 そこではシグネチャの既定のバージョンは2なようだ。

そのため、逆に4を有効にするような案内が載っていたりするが、罠なので気を付ける。

AWS SDK、CLI、Explorer の使用 - Amazon Simple Storage Service

S3 クライアントを作成する前に、コードに以下を追加します. AWSConfigs.S3UseSignatureVersion4 = true;

逆や。

これに限らず、もろもろのバージョンは後から不一致に気が付くとなかなか切ない思いになる。

巡察艦ゴースロスの個室で主計修技館の規則を読んでいたジント君の気分を垣間見た。