Professional Software Consulting

s3_bucketContent.php

Lists the objects (files) within an AWS S3 bucket.

Usage Statement
USAGE: s3_bucketContent.php -b <bucketName> -a <accessKeyId> -s <secretKeyId> [-x <prefix>]
     -b indicates the bucket name you want to list
     -x is the optional object prefix
     -a is the public AWS access key
     -s is the private AWS secret key


Sample Invokation
# php s3_bucketContent.php -b myBucket -a 9JDP49S2K26L99094NRY -s jLlLmjL2/pF91E8fknHCl8NGcrYAiNuept7W/93U

# php s3_bucketContent.php -b myBucket -a 9JDP49S2K26L99094NRY -s jLlLmjL2/pF91E8fknHCl8NGcrYAiNuept7W/93U -x sub_


Source Code
<?php
/**
* Copyright (c) 2008, Corey's Consulting LLC.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
*   this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

//
// Lists the contents of an AWS S3 bucket.
//
// ----------------------------------------------------------------------------
function printUsage($progName)
{
    echo "\n";
    echo " USAGE: $progName -b <bucketName> -a <accessKeyId> -s <secretKeyId> [-x <prefix>]\n";
    echo "\n";
    echo " -b indicates the bucket name you want to list\n";
    echo " -x is the optional object prefix\n";
    echo " -a is the public AWS access key\n";
    echo " -s is the private AWS secret key\n";
    echo "\n";
}


// ----------------------------------------------------------------------------
// MAIN     MAIN     MAIN     MAIN     MAIN     MAIN     MAIN     MAIN     MAIN
// ----------------------------------------------------------------------------
for (;;)    // enables a single exit point
{
    $retVal = 1;
    require_once("common.inc");
    require_once("S3.php");

    $key1 = '';
    $key2 = '';
    $cliArgs = parseCliArgs($argv);

    if ($argc == 1)
    {
        printUsage($argv[0]);
        break;
    }

    if (isset($cliArgs['a']))
    {
        $key1 = $cliArgs['a'];
    }
    else
    {
        echo "\n ERROR: access key not provided\n";
        printUsage($argv[0]);
        break;
    }

    if (isset($cliArgs['s']))
    {
        $key2 = $cliArgs['s'];
    }
    else
    {
        echo "\n ERROR: secret key not provided\n";
        printUsage($argv[0]);
        break;
    }


    if (!isset($cliArgs['b']))
    {
        echo "\n ERROR: Bucket name not provided\n";
        printUsage($argv[0]);
        break;
    }

    if (strlen($key1) == 0 || strlen($key2) == 0)
    {
        printUsage($argv[0]);
        break;
    }

    if (isset($cliArgs['x']))
    {
        $prefix = $cliArgs['x'];
    }
    else
    {
        $prefix = null;
    }

    $bucketName = $cliArgs['b'];


    $s3 = new S3($key1, $key2);

    $done = false;
    $marker = '';

    while (!$done)
    {
        $contents = $s3->getBucket($bucketName, $prefix, $marker);
        if ($contents === false)
        {
            echo " ERROR CODE: ".$s3->err_code."\n";
            echo " ERROR MESSAGE: ".$s3->err_message."\n";
            break;
        }

        foreach ($contents as $fileName => $stuff)
        {
            echo "$fileName (".$stuff['size'].")\n";
            $lastKey = $fileName;
        }

        if ($s3->IsTruncated == true)
        {
            $marker = $lastKey;
        }
        else
        {
            $done = true;
        }
    }

    if (!$done)
    {
        // error
        break;
    }

    $retVal = 0;

    break;    // always break

}    // end single-exit-point loop

exit ($retVal);

?>

     Contact Us     

Something wrong with this page or this site? Let the webmaster know by clicking HERE
This website designed, implemented, and maintained by Corey Dulecki
© 2009-2012, Corey's Consulting LLC