Componette

Componette

ublaboo

ublaboo / aws-sdk-nette-extension v1.1.0

A Nette extension for the AWS SDK for PHP http://aws.amazon.com/sdkforphp/

download-cloud-line composer require ublaboo/aws-sdk-nette-extension

Latest Stable Version License Total Downloads Gitter

aws-sdk-nette-extension

A Nette extension for the AWS SDK for PHP http://aws.amazon.com/sdkforphp/

Installation

Download extension using composer

composer require ublaboo/aws-sdk-nette-extension

Register extension in your config.neon file:

extensions:
	aws: Ublaboo\AwsSdkNetteExtension\DI\AwsSdkNetteExtension

Configuration

Configure extension in your config.neon file:

aws:
	region: eu-west-1
	version: latest

	# settings for interacting with other then Amazon endpoints
	endpoint: (optional - when ommited, Amazon AWS URL is used)
	use_path_style_endpoint: true|false (optional - default=false)	

And put your key and secret in your config.local.neon file (which should not be versioned)

aws:
	credentials:
		key: your_access_key
		secret: your_secret_access_key
	use_aws_shared_config_files: true|false (optional - default=true)

Usage

Ideally create some services wrapping the S3 client with your logic inside them

class S3Service
{

	/**
	 * @var \Aws\S3\S3Client
	 */
	public $s3;


	public function __construct(\Aws\S3\S3Client $s3)
	{
		$this->s3 = $s3;
	}


	public function save($path_to_file)
	{
		$this->s3->putObject([
			'Bucket'     => 'YourBucket',
			'Key'        => 'YourObjectKey',
			'SourceFile' => $path_to_file,
		]);
	}

}

And use them in your presenters:

class HomepagePresenter extends Presenter
{

	/**
	 * @var S3Service
	 * @inject
	 */
	public $service;


	public function actionDefault()
	{
		$this->service->save('/path/to/file');
	}

}
Componette Componette felix@nette.org