Thin wrapper around boto3 S3 client which supports client side encryption compatable with ruby aws-sdk-core
Project description
[](https://travis-ci.org/boldfield/s3-encryption)
[](https://badge.fury.io/py/s3-encryption)
s3-encryption is a thin wrapper around the `boto3` S3 client. It facilitates client-side encryption
which is compatible to that provided by the Ruby aws-sdk-core-resources.
Functionality is currently limited to that demonstrated below:
Upload encrypted content in python:
```python
import boto3
from s3_encryption.client import S3EncryptionClient
REGION = 'us-west-2'
BUCKET = 'testing.stuff.bucket'
s3_key = 'testing.txt'
s3e = S3EncryptionClient(encryption_key=plaintext_key, region_name=REGION)
s3e.put_object(Body='this is a test', Bucket=BUCKET, Key='testing.txt')
s3e.client.put_object(Body=encoded_key, Bucket=BUCKET, Key=s3_key + '.key')
```
Download encrypted content in python:
```python
REGION = 'us-west-2'
BUCKET = 'testing.stuff.bucket'
s3_key = 'testing.txt'
s3 = boto3.client('s3', region_name=REGION)
encoded_key = s3.get_object(Bucket=BUCKET, Key=s3_key + '.key')
plaintext_key = decode_encryption_key(encoded_key)
s3e = S3EncryptionClient(encryption_key=plaintext_key, region_name=REGION)
print s3e.get_object(Bucket=BUCKET, Key=s3_key)
>> 'this is a test'
```
Download encrypted content in ruby:
```ruby
REGION = 'us-west-2'
BUCKET = 'testing.stuff.bucket'
s3_key = 'testing.txt'
s3c = Aws::S3::Client.new
res = s3c.get_object(:bucket => BUCKET, :key => s3_key + '.key')
enc_key = res[:body].read
plaintext_key = decode_encryption_key(enc_key)
s3ec = Aws::S3::Encryption::Client.new(:encryption_key => plaintext_key)
res = s3ec.get_object(:bucket => bucket, :key => s3_key)
body = res[:body].read
puts body
>> 'this is a test'
```
[](https://badge.fury.io/py/s3-encryption)
s3-encryption is a thin wrapper around the `boto3` S3 client. It facilitates client-side encryption
which is compatible to that provided by the Ruby aws-sdk-core-resources.
Functionality is currently limited to that demonstrated below:
Upload encrypted content in python:
```python
import boto3
from s3_encryption.client import S3EncryptionClient
REGION = 'us-west-2'
BUCKET = 'testing.stuff.bucket'
s3_key = 'testing.txt'
s3e = S3EncryptionClient(encryption_key=plaintext_key, region_name=REGION)
s3e.put_object(Body='this is a test', Bucket=BUCKET, Key='testing.txt')
s3e.client.put_object(Body=encoded_key, Bucket=BUCKET, Key=s3_key + '.key')
```
Download encrypted content in python:
```python
REGION = 'us-west-2'
BUCKET = 'testing.stuff.bucket'
s3_key = 'testing.txt'
s3 = boto3.client('s3', region_name=REGION)
encoded_key = s3.get_object(Bucket=BUCKET, Key=s3_key + '.key')
plaintext_key = decode_encryption_key(encoded_key)
s3e = S3EncryptionClient(encryption_key=plaintext_key, region_name=REGION)
print s3e.get_object(Bucket=BUCKET, Key=s3_key)
>> 'this is a test'
```
Download encrypted content in ruby:
```ruby
REGION = 'us-west-2'
BUCKET = 'testing.stuff.bucket'
s3_key = 'testing.txt'
s3c = Aws::S3::Client.new
res = s3c.get_object(:bucket => BUCKET, :key => s3_key + '.key')
enc_key = res[:body].read
plaintext_key = decode_encryption_key(enc_key)
s3ec = Aws::S3::Encryption::Client.new(:encryption_key => plaintext_key)
res = s3ec.get_object(:bucket => bucket, :key => s3_key)
body = res[:body].read
puts body
>> 'this is a test'
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
s3-encryption-0.1.3.tar.gz
(9.3 kB
view details)
File details
Details for the file s3-encryption-0.1.3.tar.gz
.
File metadata
- Download URL: s3-encryption-0.1.3.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
82da0195a70bd1d44edb87950ee121e77174fa32d322dd1097abd3488c38964d
|
|
MD5 |
fd850ff3daf62a6a3ef3892abc5626c1
|
|
BLAKE2b-256 |
88c1ac97fa713c6723b1afa7937936c4519fb936e3191990c6cd2b281d7a8f9a
|