0

Python SDKを使用してプライベートAzureBLOBストレージコンテナーでBLOBを共有しようとしています。コードは、次のとおりです。

try:
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2013-03-12'
        accss_plcy.expiry = '2013-03-13'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        qry_str = sas.generate_signed_query_string('picture/xxx.jpg','blob', sap)
    except Exception as ex:
        abort(400, 'Download blob fail %s'%ex)
    return sas._convert_query_string(qry_str)

以下は、クエリ文字列の戻り値です。

st=2013-03-12&se=2013-03-13&sp=r&resource=blob&sig=FI88prUINf58Seg5Nwo6Uj5RP9FxXGZBBSKi7pybmeQ=&

あなたはそれに気付くかもしれませんがresource=blob、それは戻るはずsr=bです。

問題をどのように解決すればよいですか?

4

1 に答える 1

2

SDKのバグのようです。Azure SDKのコードはオープンソースであるため、コードをダウンロードして次のファイルに変更を加えることができます:https ://github.com/WindowsAzure/azure-sdk-for-python/blob/master/src/azure/storage /sharedaccesssignature.py。そのファイルのソースコードを見ると、次のコード行(129行目)を変更する必要があります。

convert_str += SIGNED_RESOURCE_TYPE + '=' + query_string[SIGNED_RESOURCE] + '&'

convert_str += SIGNED_RESOURCE + '=' + query_string[SIGNED_RESOURCE] + '&'

blobまた、上記のコードでリソースタイプとして渡されていることに気付きました。

qry_str = sas.generate_signed_query_string('picture/xxx.jpg','blob', sap)

'blob'の代わりに'b'を渡す必要があります

qry_str = sas.generate_signed_query_string('picture/xxx.jpg','b', sap)

私はそれがトリックをするべきだと思います。また、コードの保守を担当するチームが修正できるように、Githubでバグを送信するようにしてください。

于 2013-03-12T14:00:51.997 に答える