簡體   English   中英

Amazon S3 GeneratePresignedUrlRequest-新文件

[英]Amazon S3 GeneratePresignedUrlRequest - new file

我想將一個新文件上載到Amazon s3到我的測試桶。

這是Java代碼:

    AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
    java.util.Date expiration = new java.util.Date();
    long msec = expiration.getTime();
    msec += 1000 * 60 * 60; // Add 1 hour.
    expiration.setTime(msec);
    GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest("test-bucket", filename);
    generatePresignedUrlRequest.setMethod(HttpMethod.GET);
    generatePresignedUrlRequest.setExpiration(expiration);
    URL s = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

但是我不斷得到:

“指定的鍵不存在。” 用於文件名var。

如何使此代碼適用於新文件?

從外觀上看,GeneratePresignedUrlRequest用於S3中的現有對象。

public GeneratePresignedUrlRequest(字符串bucketName,字符串鍵)

創建一個新請求以生成預簽名URL,該URL可以用作HTTP GET請求的一部分,以訪問存儲在指定存儲桶中指定鍵下的Amazon S3對象。
參數:
bucketName-包含所需Amazon S3對象的存儲桶的名稱。
key-存儲所需的Amazon S3對象的密鑰。

您可以使用AmazonS3Client類中的putObject方法之一。

PutObjectResult putObject(PutObjectRequest putObjectRequest)
將新對象上傳到指定的Amazon S3存儲桶。

PutObjectResult putObject(字符串bucketName,字符串鍵,文件文件)
將指定文件以指定的存儲桶和鍵名上載到Amazon S3。

PutObjectResult putObject(字符串bucketName,字符串鍵,InputStream輸入,ObjectMetadata元數據)
在指定的存儲桶和鍵名下,將指定的輸入流和對象元數據上傳到Amazon S3。

將對象放入S3之后,可以使用該鍵實例化GeneratePresignedUrlRequest對象並獲取URL。

或者,您可以使用minio-java客戶端庫,該客戶端庫是開源的並且與AWS S3 API兼容。

您可以檢查PresignedPutObject.java示例是否相同。

import io.minio.MinioClient;
import io.minio.errors.MinioException;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;

import org.xmlpull.v1.XmlPullParserException;


public class PresignedPutObject {
  public static void main(String[] args)
    throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
    // Note: YOUR-ACCESSKEYID, YOUR-SECRETACCESSKEY and my-bucketname are
    // dummy values, please replace them with original values.
    // Set s3 endpoint, region is calculated automatically
    MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");

    String url = s3Client.presignedPutObject("my-bucketname", "my-objectname", 60 * 60 * 24);
    System.out.println(url);
  }
}

希望能幫助到你。

免責聲明:我為Minio工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM