如何使用Azure Python SDK为容器创建共享访问签名

如何使用Azure Python SDK为容器创建共享访问签名,python,azure,sdk,azure-storage,azure-storage-blobs,Python,Azure,Sdk,Azure Storage,Azure Storage Blobs,我正在尝试使用Azure Python SDK为Azure存储中的容器创建有效的共享访问签名URL。我试图生成它,使其立即生效,在30天后过期,并提供对整个容器(而不仅仅是blob)的读写访问权。下面的代码工作正常,并在末尾打印最终URL。我还在门户中手动验证容器和blob是否已成功创建 但是,将URL粘贴到浏览器后,我收到以下错误消息: - 身份验证失败 服务器无法对请求进行身份验证。确保包括签名在内的授权标头的值格式正确。请求ID:adecbe4e-0001-007c-0d19-4067

我正在尝试使用Azure Python SDK为Azure存储中的容器创建有效的共享访问签名URL。我试图生成它,使其立即生效,在30天后过期,并提供对整个容器(而不仅仅是blob)的读写访问权。下面的代码工作正常,并在末尾打印最终URL。我还在门户中手动验证容器和blob是否已成功创建

但是,将URL粘贴到浏览器后,我收到以下错误消息:


-
身份验证失败
服务器无法对请求进行身份验证。确保包括签名在内的授权标头的值格式正确。请求ID:adecbe4e-0001-007c-0d19-40670C0000000时间:2015-12-26T20:10:45.9030215Z
签名字段格式不正确。

isoformat方法将微秒追加到字符串,因为这在ISO8601中无效

如果您这样修改代码:

todayPlusMonthISO = todayPlusMonth.replace(microsecond=0).isoformat() + 'Z'
生成的字符串将变为有效

例如,在您之前:

2016-01-03T21:04:10.545430

更改会将其转换为有效的:

2016-01-03T21:04:10Z