【发布时间】:2021-11-30 15:24:55
【问题描述】:
我正在按照https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-dotnet 中的步骤创建一个 POC 来在 Azure 中存储文件。在下面的 sn-p 中,创建目录失败并显示消息 No such host is known。 (securedfstest02.blob.core.windows.net:443)。感谢任何解决方法的建议 这个问题。
using Azure;
using Azure.Storage;
using Azure.Storage.Files.DataLake;
using Azure.Storage.Files.DataLake.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace DataLakeHelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
try
{
CreateFileClientAsync_DirectoryAsync().Wait();
}
catch(Exception e)
{
Console.WriteLine(e);
}
}
static async Task CreateFileClientAsync_DirectoryAsync()
{
// Make StorageSharedKeyCredential to pass to the serviceClient
string storageAccountName = "secureblobtest02";
string storageAccountKey = "mykeyredacted";
string dfsUri = "https://" + storageAccountName + ".dfs.core.windows.net";
StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);
// Create DataLakeServiceClient using StorageSharedKeyCredentials
DataLakeServiceClient serviceClient = new DataLakeServiceClient(new Uri(dfsUri), sharedKeyCredential);
// Create a DataLake Filesystem
DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient("my-filesystem");
if(!await filesystem.ExistsAsync())
await filesystem.CreateAsync();
//Create a DataLake Directory
DataLakeDirectoryClient directory = filesystem.CreateDirectory("my-dir");
if (!await directory.ExistsAsync())
await directory.CreateAsync();
// Create a DataLake File using a DataLake Directory
DataLakeFileClient file = directory.GetFileClient("my-file");
if(!await file.ExistsAsync())
await file.CreateAsync();
// Verify we created one file
var response = filesystem.GetPathsAsync();
IAsyncEnumerator<PathItem> enumerator = response.GetAsyncEnumerator();
Console.WriteLine(enumerator?.Current?.Name);
// Cleanup
await filesystem.DeleteAsync();
}
}
}
【问题讨论】:
-
虽然这似乎是一个暂时性错误,但您能否分享完整的代码和更多片段 - 完整的错误消息以便更好地理解。你是如何认证的?这是否具有所需的访问级别?如果通过防火墙或 Vnet,请确保存储具有适当的访问权限。
-
我复制了上面的整个代码。 Azure 存储资源管理器将 DFS 端点显示为 secureblobtest02.dfs.core.windows.net。但从例外情况来看,客户端似乎正在寻找不正确的 DFS 端点。无法判断客户端从哪里选择了错误的端点。
-
我希望您也将
string dfsUri行中的storageAccountName替换为secureblobtest02。并且mykeyredacted应该替换为您在门户中的存储帐户 > 安全 + 网络设置 > 访问密钥下找到的访问密钥中的一个 -
您可以通过导航到存储帐户 > 端点 > 数据湖存储来确认端点
-
看我上面的评论。我从 Azure 存储资源管理器复制了 DFS 终结点。是的,你指的是基本的。如果我有错误的密钥,我就不会创建过去的文件系统。
标签: azure-blob-storage azure-storage azure-data-lake