Java8とaws-java-sdk1.10.43を使用して、S3ファイルへの事前署名されたURLを取得しようとしています。リンクは返されますが、リンクを参照すると次のエラーが発生します。
指定した承認メカニズムはサポートされていません。AWS4-HMAC-SHA256を使用してください
強調するために、Javaコードを使用してそのURLから読み取るのではなく、電子メールで送信してブラウザーで開くことができるURLを生成したいと思います。
私は以下のコードを使用しており、「v4」を使用するようにsetSSEAlgorithmを設定する必要があることがわかったと思いますが、それを機能させることができませんでした。何が足りないのですか?何を構成する必要がありますか(注:意図的に構成ファイルを避けています。コードで環境変数からすべての属性を設定する必要があります)
Date expiration = <some date>;
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, targetPath);
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);
AmazonS3 s3client = new AmazonS3Client(s3Credentials);
URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest);
バケットはeu-central-1にあります
ありがとうございました
いくつかの助けを使って、私は答えを見つけました。それは、2つの欠けている部分の組み合わせでした(そのうちの1つはコメントで参照されていました):
これを設定する必要があります:
System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");
「endPoint」を設定する必要があります(アップロードまたはダウンロードには必要ありませんでした)。
s3Client.setEndpoint(endpoint);
オプションで、これも追加すると便利な場合があります。
s3Client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加