gpt4 book ai didi

powershell - 如何使用 -SasToken 而不是 -StorageAccountKey 调用 New-AzureStorageContext

转载 作者:行者123 更新时间:2023-12-03 01:51:22 27 4
gpt4 key购买 nike

使用 Azure Powershell v1.3,我尝试使用引用现有策略的现有共享访问签名 token 创建新的存储上下文。当我使用 -SasToken-StorageAccountName 调用 New-AzureStorageContext 时,出现错误:

PS C:\> $ctx = New-AzureStorageContext -SasToken '?sr=c&sv=2015-02-21&si=ReadOnly&sig=<signature omitted>=&api-version=2015-04-05' -StorageAccountName 'mystorageaccount'

New-AzureStorageContext : An item with the same key has already been added.
At line:1 char:8

我觉得 SAS token 的格式错误,或者缺少步骤或参数,但没有关于它应该是什么样子的示例,这是我能够得到的唯一 SAS 表单从 Azure 查询。

注意,我不想使用 New-AzureStorageAccountSASToken (所有示例都使用),因为我已经有一个 token ,并且只想将其用于只读目的,所以我不'不需要使用存储帐户 key 。创建一个新的需要权限,我不希望该客户端拥有该权限。

缺少的语法/步骤是什么?

最佳答案

我认为您已经发现存储客户端库中的一个错误。我跟踪了从 PowerShell 到存储客户端库的代码,这就是我发现的内容。 PowerShell Cmdlet 代码尝试通过传递此 SAS token 来创建 StorageCredentials 对象。

    public StorageCredentials(string sasToken)
{
CommonUtility.AssertNotNullOrEmpty("sasToken", sasToken);

this.SASToken = sasToken;
this.UpdateQueryBuilder();
}

private void UpdateQueryBuilder()
{
SasQueryBuilder newQueryBuilder = new SasQueryBuilder(this.SASToken);

newQueryBuilder.Add(Constants.QueryConstants.ApiVersion, Constants.HeaderConstants.TargetStorageVersion);

this.queryBuilder = newQueryBuilder;
}

现在,如果您查看 UpdateQueryBuilder 的代码,它会尝试再次添加 api-version,而不检查它是否已经存在。

我为此在 Github 上创建了一个问题:https://github.com/Azure/azure-storage-net/issues/259 .

关于powershell - 如何使用 -SasToken 而不是 -StorageAccountKey 调用 New-AzureStorageContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36579561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com