有没有一种简单的方法可以对具有多个密钥的Azure blob存储进行健康检查?

3
我正在使用 ASP.NET Core (C#, .NET 6) 构建 Azure Web 服务。我有一个 Azure 存储帐户,该存储帐户有两个访问密钥。如果第一个密钥过期或需要更改,应用程序可以无缝切换到第二个密钥,同时操作员更新第一个密钥。
我的应用程序有一个健康检查,并且我想包括对存储帐户的健康检查。我从这篇文章中获得了灵感:https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/monitor-app-health#healthchecks-implementation-in-eshoponcontainers 我编写了以下代码,使用 NuGet 包 AspNetCore.HealthChecks.AzureStorage:
services.AddHealthChecks()
    .AddAzureBlobStorage(
        $"DefaultEndpointsProtocol=https;AccountName={accountName};AccountKey={key1};EndpointSuffix=core.windows.net",
        name: "catalog-storage-check",
        tags: new string[] { "catalogstorage" });

问题在于,如果密钥1过期或被吊销,这个健康检查将失败。这不是我想要的。只要至少有2个密钥中的1个可用,我希望健康检查就能成功,并且如果两个密钥都失效,则检查失败。

有没有简单的方法来实现这一点,还是我必须自己编写代码?

1个回答

3
我查看了 AspNetCore.HealthChecks.AzureStorage 的实现。

https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks/blob/2f582f42a3e5c7dc73bfdb114d6031d711552af6/test/HealthChecks.AzureStorage.Tests/DependencyInjection/AzureBlobStorageRegistrationTests.cs

这段话的翻译如下:
“其实很简单。它只是检查一个 blob 容器是否存在。
所以我使用了同样的想法来实现自己的代码,但如果第一个密钥不起作用,就会重试。(我已经有了一种通用的方法来重试操作,如果第一个密钥失败了。)”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接