Dengan menggunakan API Python azure-storage
saya berharap dapat membuat token Akun SAS yang memungkinkan saya membaca dan menulis blob dalam wadah apa pun di akun penyimpanan saya.
Pembuatan token SAS berjalan tanpa pengecualian, tetapi ketika saya mencoba membuat BlockBlobService
menggunakan token SAS tersebut dan mencantumkan beberapa gumpalan untuk wadah tertentu, saya mendapatkan kesalahan AuthorizationPermissionMismatch
dari Azure.
Apakah saya memahami konsep token Akun SAS dengan benar?
Saya telah melihat banyak dokumentasi tentang dokumentasi "Memulai" Azure untuk Python Storage API, saya juga telah melihat melalui https://azure-storage.readthedocs.io/ref/azure.storage.blob.sharedaccesssignature.html cukup banyak.
Saya telah mencoba menggunakan azure.storage.blob.BlockBlobService.generate_account_shared_access_signature()
dengan izin yang sangat permisif dan masih mendapatkan pengecualian.
Saya dapat mengonfirmasi bahwa azure.storage.blob.BlockBlobService.generate_container_shared_access_signature()
berfungsi dengan baik, namun persyaratan saya adalah membuat Token SAS terlepas dari wadahnya.
from azure.storage.blob import BlockBlobService
from azure.storage.models import AccountPermissions, ResourceTypes
bbs = BlockBlobService("myaccountname", "myaccountkey")
sas_token = bbs.generate_account_shared_access_signature(
ResourceTypes.CONTAINER + ResourceTypes.OBJECT + ResourceTypes.SERVICE,
AccountPermissions.READ + AccountPermissions.WRITE + AccountPermissions.LIST + AccountPermissions.CREATE,
datetime.utcnow() + timedelta(hours=1)
)
BlockBlobService(account_name="myaccountname", sas_token=sas_token).list_blobs("containername")
azure.common.AzureHttpError: This request is not authorized to perform this operation using this permission.
<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission.
RequestId:6a06b32e-f01e-005a-44e7-430c8b000000
Time:2019-07-26T19:22:02.7337249Z</Message></Error>
Saya berharap dapat menelepon list_blobs()
di sini tidak masalah. Bagaimana saya bisa mencapai ini tanpa harus membuat wadah SAS Token demi wadah?