« Page 4 of 18 »

  1. JetS3t 0.7.3

    2010-03-21

    I have just released JetS3t version 0.7.3 following the announcement earlier this week that S3 Versioning has graduated to production status.

    This release includes:

    Visit the JetS3t web site to download the latest release and view the latest code samples and API Javadoc. The official Maven2 repository should be updated in the next day or so.

    Read about the complete list of changes in the release notes, and visit the development site to submit bug reports or contribute to the project.

    There are comments.

  2. There is a lot of S3 and JetS3t news tonight.

    Versioning For All

    To begin with, the new S3 beta versioning feature is now available in all regions. This means that you can retain past versions of all your S3 objects regardless of where your bucket is located.

    The latest JetS3t code has full support for versioning that makes it very easy to use. You can enable versioning for a bucket like so:

    restS3Service.enableBucketVersioning("bucket-name");
    

    Then should you ever need to recover some data -- such as after accidentally deleting an object or overwriting data with a corrupted file -- you can find and retrieve the prior versions:

    // List an object's prior versions
    BaseVersionOrDeleteMarker[] versions = restS3Service
        .getObjectVersions("bucket-name", "object-name");
    
    // Retrieve the next-to-last version of data
    String versionId = versions[versions.length - 2].getVersionId();
    S3Object priorVersionObject = s3Service.getVersionedObject(
        versionId, "bucket-name", "object-name");
    

    The Second Factor

    As well as rolling out broader availability of the versioning feature Amazon has (somewhat quietly) added another interesting feature: the first API-level support for multi-factor authentication. Multi-factor authentication (MFA) adds an extra level of security to systems by requiring users to prove ownership of a token or device of some kind in addition to their normal login credentials. This means that even if someone steals or guesses your credentials they will be unable to perform actions on your account because they do not possess the device.

    In Amazon's case, like PayPal and some banks before them, the additional factor comprises a small electronic device that generates code numbers. Once you have purchased one of these devices and enabled it in your AWS account you will be required to provide an extra code number when performing certain tasks.

    Previously the additional MFA device code was only required when you logged in to the AWS Console but as of today you can turn on MFA for your S3 buckets in tandem with versioning. When versioning with MFA is enabled not only will the bucket's owner be the only user who can permanently delete object versions, but this user will be required to provide a time-limited MFA code to do so.

    Again, this is relatively straight-forward to use in JetS3t:

    // Require MFA to permanently delete object versions
    restS3Service.enableBucketVersioningWithMFA("bucket-name");
    
    // Obtain user's MFA device serial number and time-limited code
    String multiFactorSerialNumber = "#111222333";
    String multiFactorAuthCode = "12345678";
    
    // Delete an MFA-protected object version
    restS3Service.deleteVersionedObjectWithMFA(versionId,
        multiFactorSerialNumber, multiFactorAuthCode,
        "bucket-name", "object-name");
    

    The addition of MFA support at the API level in S3 is particularly interesting because this is the first time Amazon has done so, and because it raises some interesting challenges for developers who are accustomed to building fully-automated systems. To take advantage of the protection the MFA provides a system will need to prompt the user for her MFA code every 30 seconds or so when she wishes to permanently delete data. I am keen to see how -- and if -- developers actually build this feature into their applications.

    Hello BitBucket

    Finally, repeating the news I posted recently on the JetS3t discussion forums, I have decided to move the JetS3t codebase from it's old home at java.net over to the BitBucket service: http://bitbucket.org/jmurty/jets3t/

    BitBucket has the advantage of being a more modern, easy-to-navigate site, and has seamless support for Mercurial which is my favorite source code management tool. So it's farewell to java.net and CVS, you served us well but it's time for some new blood.

    Try out the latest code and let me know what you think. Head over to the JetS3t BitBucket repository and grab the latest code via a pull (if you're familiar with Mercurial) or simply download it via the "get source" link.

    There are comments.

  3. Amazon is working on an interesting new feature for the S3 service: Object versioning.

    Once you enable versioning for one of your S3 buckets, any time you change an object in that bucket a version of the prior object will be stored in addition to the latest one. You can then perform operations on prior object versions such as retrieving older data, restoring "deleted" objects, and generally maintaining a fail-safe history of everything that happens in the bucket.

    This will be a boon to anyone who is worried about their S3 data being accidentally deleted or corrupted by user/computer error.

    The feature is currently in early beta form and is available for testing with buckets located in the "us-west-1" location. You can read about the current functionality here: Versioning Beta Design.

    Better still, you can grab the latest JetS3t code from CVS and try it out for yourself! The code samples file CodeSamples.java now includes a section called "Bucket Versioning (Beta)" to get you started.

    Both the versioning feature itself and JetS3t's support for it are in an early stage so watch out for warts.

    There are comments.

  4. JetS3t 0.7.2

    2010-01-10

    As of a couple of weeks ago the latest version of JetS3t 0.7.2 has been available as a public release. In the pre-holiday rush I forgot to post a notification to my own blog.

    This release includes some bug fixes, more sophisticated configuration options for the "filecomparer" component that manages file synchronizations, and supports the two major new CloudFront API features: private distributions and streaming distributions.

    Visit the JetS3t web site to download the latest release and view the latest documentation such as code samples and the API Javadoc.

    You can read about the complete list of changes in the release notes. And for the Maven-ites among you the official Maven2 repository has also been updated.

    There are comments.

  5. Amazon has just announced a new private content feature for their CloudFront content distribution service.

    This feature allows you to control access to S3 objects you distribute through CloudFront by making them available only through specific distributions, or by requiring the use of signed URLs that you generate and provide to privileged users.

    As of this evening the latest JetS3t codebase (available from the CVS repository) has full support for the new features, including the ability to:

    • create and update private distributions
    • manage Origin Access Identifiers, which are required for private distributions
    • generate canned and custom-policy signed URLs for private distributions that require request signing.

    These new features are not yet available in a stable packaged release but I plan to provide the next stable version before the end of November.

    There are comments.

« Page 4 of 18 »