def _create_short_lived_file_sas(account_name, account_key, share, directory_name, file_name): # if dir is empty string change it to None directory_name = directory_name if directory_name else None expiry = (datetime.utcnow() + timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%SZ') sas = SharedAccessSignature(account_name, account_key) return sas.generate_file(share, directory_name=directory_name, file_name=file_name, permission=BlobPermissions(read=True), expiry=expiry, protocol='https')
def generate_shared_access_signature(self, table_name, shared_access_policy=None, sas_version=X_MS_VERSION): ''' Generates a shared access signature for the table. Use the returned signature with the sas_token parameter of TableService. table_name: Required. Name of table. shared_access_policy: Instance of SharedAccessPolicy class. sas_version: x-ms-version for storage service, or None to get a signed query string compatible with pre 2012-02-12 clients, where the version is not included in the query string. ''' _validate_not_none('table_name', table_name) _validate_not_none('shared_access_policy', shared_access_policy) _validate_not_none('self.account_name', self.account_name) _validate_not_none('self.account_key', self.account_key) sas = SharedAccessSignature(self.account_name, self.account_key) return sas.generate_signed_query_string( table_name, None, shared_access_policy, sas_version, table_name=table_name, )
def _create_short_lived_blob_sas(account_name, account_key, container, blob): expiry = (datetime.utcnow() + timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%SZ') sas = SharedAccessSignature(account_name, account_key) return sas.generate_blob(container, blob, permission=BlobPermissions(read=True), expiry=expiry, protocol='https')
def __init__(self, account_name, account_key, socket_timeout=600): self.__settings = Settings() self.__account_name = account_name self.__account_key = account_key self.__blockblob_service = BlockBlobService( account_name=self.__account_name, account_key=self.__account_key, socket_timeout=socket_timeout) self.__blob_access_signature = SharedAccessSignature( self.__account_name, self.__account_key)
def disk_image_sas(self, container_name, image_name, start, expiry, permissions): sas = SharedAccessSignature(self.account_name, self.account_key) signed_query = sas.generate_blob( container_name, image_name, permission=permissions, expiry=expiry.strftime(ISO8061_FORMAT), start=start.strftime(ISO8061_FORMAT)) return 'https://{}.blob.{}/{}/{}?{}'.format( self.account_name, self.blob_service_host_base, container_name, image_name, signed_query)
def create_short_lived_container_sas(account_name, account_key, container): from datetime import datetime, timedelta from azure.storage.sharedaccesssignature import SharedAccessSignature from azure.storage.blob.models import BlobPermissions expiry = (datetime.utcnow() + timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%SZ') sas = SharedAccessSignature(account_name, account_key) return sas.generate_container(container, permission=BlobPermissions(read=True), expiry=expiry, protocol='https')
def sas(self, container, start, expiry, permissions): sas = SharedAccessSignature( self.account_name, self.account_key ) signed_query = sas.generate_container( container_name=container, permission=permissions, expiry=expiry.strftime(ISO8061_FORMAT), start=start.strftime(ISO8061_FORMAT) ) return 'https://{}.blob.core.windows.net/{}?{}'.format( self.account_name, container, signed_query )
def url(self, name): ap = AccessPolicy(expiry=(timezone.datetime.utcnow() + timezone.timedelta(seconds=600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \ start=(timezone.datetime.utcnow() + timezone.timedelta(seconds=-600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \ permission='r') sap = SharedAccessPolicy(ap) sas = SharedAccessSignature(self.account_name, self.account_key) url = sas.generate_signed_query_string(path=self.azure_container + '/' + name, resource_type='b', shared_access_policy=sap) return self.connection.make_blob_url(self.azure_container, name) + "?" + url
def sasUrl(account, key, container, permission): start = datetime.utcnow() expiry = start + timedelta(hours=24) accss_plcy = AccessPolicy() accss_plcy.start = start.strftime('%Y-%m-%dT%H:%M:%SZ') accss_plcy.expiry = expiry.strftime('%Y-%m-%dT%H:%M:%SZ') accss_plcy.permission = permission sas = SharedAccessSignature(account_name=account, account_key=key) query = sas.generate_signed_query_string( container, ResourceType.RESOURCE_CONTAINER, SharedAccessPolicy(accss_plcy), ) return query
def setUp(self): self.sas = SharedAccessSignature(account_name=DEV_ACCOUNT_NAME, account_key=DEV_ACCOUNT_KEY)