Я пытаюсь создать CloudStorageAccount
с использованием токена доступа, сгенерированного через MSI на Azure, для использования в приемнике хранилища BLOB-объектов Serilog Azure. Я получаю токен и создаю учетную запись с использованием следующего
var tokenProvider = new AzureTokenProvider();
var token = await tokenProvider.GetAccessTokenAsync("https://storage.azure.com");
var tokenCredential = new TokenCredential(token);
var storageCredential = new StorageCredential(tokenCredential);
var account = new CloudStorageAccount(storageCredential, "accountnamehere", "core.windows.net", true);
Затем я передаю эту учетную запись в Serilog `LoggerConfiguration 'как таковую
Log.Logger = new LoggerConfiguration()
//other stuff
.WriteTo.AzureBlobStorage(new JsonFormatter(), account, //other settings)
.CreateLogger()
Однако, это никогда не будет писать в капля Моя учетная запись Azure напрямую имеет Contributor и наследует Contributor данных BLOB-объектов хранилища из группы. Виртуальная машина Azure, над которой я работаю, также имеет Участника хранения данных BLOB-объектов для этой учетной записи хранения. Однако в dev он использует мои учетные данные.
Когда я использую ключ учетной записи, к которой большой двоичный объект записывается без проблем, поэтому что-то не так с тем, как я генерирую CloudStorageAccount
, или разрешения в Azure не настроены правильно, я просто не уверен, какой.