AWS S3 - 删除多个对象时出现 UserKeyMustBeSpecified 错误

AWS S3 - UserKeyMustBeSpecified error when deleting multiple objects

我最近在使用没有版本的密钥从 s3 删除多个对象时遇到 UserKeyMustBeSpecified 错误。

该操作在Java lambda 函数中执行,该函数使用以下代码:

public class S3Dao {

    private final AmazonS3 s3;
    private Logger logger;

    public S3Dao() {
        BasicAWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
        ClientConfiguration config = new ClientConfiguration();
        config.setConnectionTimeout(220_000);
        config.setClientExecutionTimeout(220_000);
        this.s3 = AmazonS3ClientBuilder.standard()
                .withClientConfiguration(config)
                .withCredentials(new AWSStaticCredentialsProvider(creds))
                .build();
    }

    public void deleteKeys(Collection<String> s3keysToDelete) {
        logger.log("Deleting S3 " + s3keysToDelete.size() + " keys");
        if (s3keysToDelete.isEmpty()) {
            return;
        }
        DeleteObjectsRequest deleteRequest = new DeleteObjectsRequest(bucketName)
                .withKeys(s3keysToDelete.toArray(new String[] {}));
        DeleteObjectsResult deleteObjectsResult = s3.deleteObjects(deleteRequest);
        logger.log("Deleted " + deleteObjectsResult.getDeletedObjects().size() + " s3 objects");
    }
}

我仔细检查了访问密钥,但没有问题。

有谁知道这个 "user key" 是什么,我该如何指定它?

谢谢!

我试图删除的其中一个键是 null。问题已解决:)