Example usage for com.amazonaws.services.s3.model PutObjectResult getSSEAlgorithm

List of usage examples for com.amazonaws.services.s3.model PutObjectResult getSSEAlgorithm

Introduction

In this page you can find the example usage for com.amazonaws.services.s3.model PutObjectResult getSSEAlgorithm.

Prototype

@Override
    public final String getSSEAlgorithm() 

Source Link

Usage

From source file:com.yahoo.ycsb.db.S3Client.java

License:Open Source License

/**
* Upload a new object to S3 or update an object on S3.
*
* @param bucket/*w w  w. j  a  va2s.com*/
*            The name of the bucket
* @param key
*            The file key of the object to upload/update.
* @param values
*            The data to be written on the object
* @param updateMarker
*            A boolean value. If true a new object will be uploaded
*            to S3. If false an existing object will be re-uploaded
*
*/
protected Status writeToStorage(String bucket, String key, HashMap<String, ByteIterator> values,
        Boolean updateMarker, String sseLocal, SSECustomerKey ssecLocal) {
    int totalSize = 0;
    int fieldCount = values.size(); //number of fields to concatenate
    // getting the first field in the values
    Object keyToSearch = values.keySet().toArray()[0];
    // getting the content of just one field
    byte[] sourceArray = values.get(keyToSearch).toArray();
    int sizeArray = sourceArray.length; //size of each array
    if (updateMarker) {
        totalSize = sizeArray * fieldCount;
    } else {
        try {
            Map.Entry<S3Object, ObjectMetadata> objectAndMetadata = getS3ObjectAndMetadata(bucket, key,
                    ssecLocal);
            int sizeOfFile = (int) objectAndMetadata.getValue().getContentLength();
            fieldCount = sizeOfFile / sizeArray;
            totalSize = sizeOfFile;
            objectAndMetadata.getKey().close();
        } catch (Exception e) {
            System.err.println("Not possible to get the object :" + key);
            e.printStackTrace();
            return Status.ERROR;
        }
    }
    byte[] destinationArray = new byte[totalSize];
    int offset = 0;
    for (int i = 0; i < fieldCount; i++) {
        System.arraycopy(sourceArray, 0, destinationArray, offset, sizeArray);
        offset += sizeArray;
    }
    try (InputStream input = new ByteArrayInputStream(destinationArray)) {
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(totalSize);
        PutObjectRequest putObjectRequest = null;
        if (sseLocal.equals("true")) {
            metadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
            putObjectRequest = new PutObjectRequest(bucket, key, input, metadata);
        } else if (ssecLocal != null) {
            putObjectRequest = new PutObjectRequest(bucket, key, input, metadata).withSSECustomerKey(ssecLocal);
        } else {
            putObjectRequest = new PutObjectRequest(bucket, key, input, metadata);
        }

        try {
            PutObjectResult res = s3Client.putObject(putObjectRequest);
            if (res.getETag() == null) {
                return Status.ERROR;
            } else {
                if (sseLocal.equals("true")) {
                    System.out.println("Uploaded object encryption status is " + res.getSSEAlgorithm());
                } else if (ssecLocal != null) {
                    System.out.println("Uploaded object encryption status is " + res.getSSEAlgorithm());
                }
            }
        } catch (Exception e) {
            System.err.println("Not possible to write object :" + key);
            e.printStackTrace();
            return Status.ERROR;
        }
    } catch (Exception e) {
        System.err.println("Error in the creation of the stream :" + e.toString());
        e.printStackTrace();
        return Status.ERROR;
    }

    return Status.OK;
}

From source file:com.yahoo.ycsb.utils.connection.S3Connection.java

License:Open Source License

public Status insert(String key, byte[] bytes) {
    try (InputStream input = new ByteArrayInputStream(bytes)) {
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(bytes.length);
        PutObjectRequest putObjectRequest = null;
        if (ssecKey != null) {
            if (ssecKey.equals("true")) {
                metadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
                putObjectRequest = new PutObjectRequest(bucket, key, input, metadata);
            } else {
                putObjectRequest = new PutObjectRequest(bucket, key, input, metadata)
                        .withSSECustomerKey(ssecKey);
            }/*  w w w  . j a  v a  2 s . c o m*/
        } else {
            putObjectRequest = new PutObjectRequest(bucket, key, input, metadata);
        }

        try {
            PutObjectResult res = awsClient.putObject(putObjectRequest);
            if (res.getETag() == null) {
                return Status.ERROR;
            } else {
                if (ssecKey != null) {
                    if (ssecKey.equals("true")) {
                        logger.debug("Uploaded object encryption status is " + res.getSSEAlgorithm());
                    } else {
                        logger.debug("Uploaded object encryption status is " + res.getSSEAlgorithm());
                    }
                }
            }
        } catch (Exception e) {
            logger.error("Not possible to write object :" + key);
            System.err.println("Retrying " + key);
            insert(key, bytes);
        }
    } catch (Exception e) {
        logger.error("Error in the creation of the stream :" + e.toString());
        System.err.println("Retrying " + key);
        insert(key, bytes);
        //e.printStackTrace();
        //return Status.ERROR;
    }
    return Status.OK;
}