Flask工具,用于Amazon S3。
项目描述
Flask工具,用于签名Amazon S3 POST请求和验证Amazon S3文件。支持Python 2.7和3.4。
升级说明:Pontus 1.x分支使用Boto3。如果您仍在使用boto,请使用0.x.x版本。检查Git分支 `version-0`。
安装
使用pip安装
pip install Pontus
依赖项
Pontus有如下依赖项
Flask >= 0.10.1
boto3 >= 1.4.7
python-magic >= 0.4.6 (https://github.com/ahupp/python-magic)
此外,python-magic依赖于libmagic文件类型识别库。
示例
签名的POST请求
为签名的Amazon S3 POST请求创建表单字段
import boto3
from flask import current_app
from pontus import AmazonS3SignedRequest
session = boto3.session.Session(
aws_access_key_id=current_app.config.get('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=current_app.config.get('AWS_SECRET_ACCESS_KEY'),
region_name=current_app.config.get('AWS_REGION_NAME')
)
bucket = session.resource('s3').Bucket('testbucket')
signed_request = AmazonS3SignedRequest(
key_name=u'my/file.jpg',
mime_type=u'image/jpeg',
bucket=bucket,
session=session
)
signed_request.form_fields
# {
# 'x-amz-algorithm': 'AWS4-HMAC-SHA256',
# 'x-amz-credential': 'your-aws-access-key-id/date/region-name/s3/aws4_request',
# 'x-amz-date': 'date',
# 'x-amz-signature': 'generated-signature',
# 'success_action_status': '201',
# 'acl': 'public-read',
# 'Content-Type': 'image/png',
# 'key': u'f6c157e1-1a1a-4418-99fe-3362dcf7b1ea/images/my-image.jpg',
# 'policy': 'generated-policy-document'
# }
这些表单字段可用于将文件POST到Amazon S3,具体操作请参阅Amazon的文档。
Amazon S3文件验证
验证图像文件小于2MB,并且是image/jpeg
MIME类型。
import boto3
from flask import current_app
from pontus import AmazonS3FileValidator
from pontus.validators import FileSize, MimeType
session = boto3.session.Session(
aws_access_key_id=current_app.config.get('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=current_app.config.get('AWS_SECRET_ACCESS_KEY')
)
bucket = session.resource('s3').Bucket('testbucket')
validator = AmazonS3FileValidator(
key_name='images/my-image.jpg',
bucket=bucket,
validators=[FileSize(max=2097152), MimeType('image/jpeg')],
session=session
)
if validator.validate():
# File is <2MB image/jpeg
pass
else:
# File was invalid, printing errors
print validator.errors
验证器可以是继承自pontus.validators.BaseValidator
的类的实例,或者是接受一个参数obj
的可调用函数,其中obj
是一个boto.S3.Object实例。
from pontus.exceptions import ValidationError
from pontus.validators import BaseValidator
def name_starts_with_images(obj):
if not obj.key.startswith('images/'):
raise ValidationError()
# OR
class NameStartsWith(BaseValidator):
def __init__(self, starts_with_str):
self.starts_with_str = starts_with_str
def __call__(self, obj):
if not obj.key.startswith(starts_with_str):
raise ValidationError()
name_starts_with_images = NameStartsWith('images/')
项目详情
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
pontus-4.1.0.tar.gz (40.7 kB 查看哈希值)
构建分布
Pontus-4.1.0-py2.py3-none-any.whl (10.3 kB 查看哈希值)
关闭
pontus-4.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5b86b4d8af046692c72f81286d4df52ac9dc0932b74592cfd4febba4cd028e5c |
|
MD5 | 00e24cdca0e9cb8aa5321bd5d9d387df |
|
BLAKE2b-256 | b0385a367d52e817d98f0846213637d3e60100a080a7140cfb6a754695c9dd34 |
关闭
Pontus-4.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bfa203c63e8234f933d3793006da0c95ca2a1dc6320fcac9b56999ed96c783a1 |
|
MD5 | bd006e7b95e20011ca15a831086f4e63 |
|
BLAKE2b-256 | 9abac8ccedcddb4d16d95a051223c409ba9372f80e83768a2515bc864f11ab15 |