Giter Site home page Giter Site logo

parekhabhishekn / aws-sdk-php-zf2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aws/aws-sdk-php-zf2

0.0 1.0 0.0 121 KB

ZF2 module for using the AWS SDK for PHP to interact with AWS services like S3, DynamoDB, SQS, EC2, etc.

Home Page: http://aws.amazon.com/sdkforphp/

License: Apache License 2.0

Makefile 2.41% PHP 97.59%

aws-sdk-php-zf2's Introduction

AWS SDK ZF2 Module

Latest Stable Version Total Downloads Build Status

Introduction

This module provides a simple wrapper for the AWS SDK for PHP. It registers the AWS service builder as a service in the ZF2 service manager, making it easily accessible anywhere in your application.

Installation

Install the module using Composer into your application's vendor directory. Add the following line to your composer.json. This will also install the AWS SDK for PHP.

If you want to use ZF3 and your PHP version >= 5.6, use

{
    "require": {
        "aws/aws-sdk-php-zf2": "4.*"
    }
}

Otherwise,

{
    "require": {
        "aws/aws-sdk-php-zf2": "3.*"
    }
}

If you are using ZF2 service manager < 2.7, please use the 2.0.* version.

If you are using AWS SDK v2, please use the 1.2.* version of the ZF2 module.

Configuration

Enable the module in your application.config.php file.

return array(
    'modules' => array(
        'AwsModule'
    )
);

Copy and paste the aws.local.php.dist file to your config/autoload folder and customize it with your credentials and other configuration settings. Make sure to remove .dist from your file. Your aws.local.php might look something like the following:

<?php

return [
    'aws' => [
        'credentials' => [
            'key'    => '<your-aws-access-key-id>',
            'secret' => '<your-aws-secret-access-key>',
        ]
        'region' => 'us-west-2'
    ]
];

NOTE: If you are using IAM Instance Profile credentials (also referred to as IAM Roles for instances), you can omit your key and secret parameters since they will be fetched from the Amazon EC2 instance automatically.

Usage

You can get the AWS service builder object from anywhere that the ZF2 service locator is available (e.g. controller classes). The following example instantiates an Amazon DynamoDB client and creates a table in DynamoDB.

use Aws\Sdk;

public function indexAction()
{
    $aws    = $this->getServiceLocator()->get(Sdk::class);
    $client = $aws->createDynamoDb();

    $table = 'posts';

    // Create a "posts" table
    $result = $client->createTable(array(
        'TableName' => $table,
        'KeySchema' => array(
            'HashKeyElement' => array(
                'AttributeName' => 'slug',
                'AttributeType' => 'S'
            )
        ),
        'ProvisionedThroughput' => array(
            'ReadCapacityUnits'  => 10,
            'WriteCapacityUnits' => 5
        )
    ));

    // Wait until the table is created and active
    $client->waitUntilTableExists(array('TableName' => $table));

    echo "The {$table} table has been created.\n";
}

View Helpers

The AWS SDK ZF2 Module now provides two view helpers to generate links for Amazon S3 and Amazon CloudFront resources.

Note: Starting from v2 of the AWS module, all URLs for both S3 and CloudFront are using HTTPS and this cannot be modified.

S3Link View Helper

To create a S3 link in your view:

<?php echo $this->s3Link('my-object', 'my-bucket');

The default bucket can be set globally by using the setDefaultBucket method:

<?php
    $this->plugin('s3Link')->setDefaultBucket('my-bucket');
    echo $this->s3Link('my-object');

You can also create signed URLs for private content by passing a third argument which is the expiration date:

<?php echo $this->s3Link('my-object', 'my-bucket', '+10 minutes');

CloudFrontLink View Helper

To create CloudFront link in your view:

<?php echo $this->cloudFrontLink('my-object', 'my-domain');

The default domain can be set globally by using the setDefaultDomain method:

<?php
    $this->plugin('cloudFrontLink')->setDefaultDomain('my-domain');
    echo $this->cloudFrontLink('my-object');

You can also create signed URLs for private content by passing a third argument which is the expiration date:

<?php echo $this->cloudFrontLink('my-object', 'my-bucket', time() + 60);

Filters

The AWS SDK ZF2 module provides a simple file filter that allow to directly upload to S3. The S3RenameUpload extends RenameUpload class, so please refer to its documentation for available options.

This filter only adds one option to set the bucket name (through the setBucket method, or by passing a bucket key to the filter's setOptions method).

$request = new Request();
$files   = $request->getFiles();
// e.g., $files['my-upload']['tmp_name'] === '/tmp/php5Wx0aJ'
// e.g., $files['my-upload']['name'] === 'profile-picture.jpg'

// Fetch the filter from the Filter Plugin Manager to automatically handle dependencies
$filter = $serviceLocator->get('FilterManager')->get('S3RenameUpload');

$filter->setOptions(’[
    'bucket'    => 'my-bucket',
    'target'    => 'users/5/profile-picture.jpg',
    'overwrite' => true
]);

$filter->filter($files['my-upload']);

// File has been renamed and moved to 'my-bucket' bucket, inside the 'users/5' path

Session Save Handlers

Read the [session save handler section] (http://zf2.readthedocs.org/en/latest/modules/zend.session.save-handler.html) in the ZF2 documentation for more information.

DynamoDB

To follow the [ZF2 examples] (http://zf2.readthedocs.org/en/latest/modules/zend.session.save-handler.html), the DynamoDB session save handler might be used like this:

use AwsModule\Session\SaveHandler\DynamoDb as DynamoDbSaveHandler;
use Zend\Session\SessionManager;

// Assume we are in a context where $serviceLocator is a ZF2 service locator.

$saveHandler = $serviceLocator->get(DynamoDbSaveHandler::class);

$manager = new SessionManager();
$manager->setSaveHandler($saveHandler);

You will probably want to further configure the save handler, which you can do in your application. You can copy the config/aws_zf2.local.php.dist file into your project's config/autoload directory (without the .dist of course).

See config/aws_zf2.local.php.dist and [the AWS session handler documentation] (http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.DynamoDb.Session.SessionHandler.html#_factory) for more detailed configuration information.

Related Modules

The following are some ZF2 modules that use the AWS SDK for PHP by including this module:

  • SlmMail - Module that allow to send emails with various providers (including Amazon SES)
  • SlmQueueSqs – Module that simplifies the use of Amazon SQS

Links

aws-sdk-php-zf2's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.