я хочу установить s3 объект, указывающий c срок хранения - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу установить объектно-специфическую c задержку, но не удачно с кодом ниже java:

Поэтому я пытаюсь заблокировать объект, но у меня появляется ошибка ниже: Bucket отсутствует ObjectLockConfiguration

Примечание: уже предоставлен полный доступ к s3 пользователю

    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentLength(bytes.length);
    metadata.setContentType(contentType);
    metadata.setExpirationTime(DateTime.now().toDate());
    metadata.setHeader("x-amz-bucket-object-lock-enabled", true);
    //metadata.setHeader("expires", expirationTime);
    //metadata.setHttpExpiresDate(expirationTime);
    ObjectLockConfiguration oc = new ObjectLockConfiguration();

    PutObjectRequest putRequest = new PutObjectRequest(targetBucketName, objectName, baInputStream, metadata);

    putRequest.setObjectLockRetainUntilDate(DateTime.now().plusDays(2).toDate());
    s3client.putObject(putRequest);

1 Ответ

0 голосов
/ 12 апреля 2020
    ObjectMetadata metadata = new ObjectMetadata();
    System.out.println("size:"+bytes.length);
    metadata.setContentLength(bytes.length);
    metadata.setContentType(contentType);
    Date expirationTime = new Date(2025,5,10);
    metadata.setExpirationTime(DateTime.now().toDate());
    metadata.setHeader("x-amz-object-lock-retain-until-date", closerDate+"T00:00:00.000Z");
    metadata.setHeader("x-amz-object-lock-mode","COMPLIANCE");
    byte[] md5 = Md5Utils.computeMD5Hash(baInputStream);
    String md5Base64 = BinaryUtils.toBase64(md5);
    metadata.setHeader("Content-MD5", md5Base64);
    baInputStream.reset();
    PutObjectRequest putRequest = new PutObjectRequest(targetBucketName, objectName, baInputStream, metadata);
    s3client.putObject(putRequest);
...