如何在 Golang 中为 Azure SDK 指定 x509 证书
How to specify x509 certificate for Azure SDK in Golang
我正在尝试连接以使用适用于 Golang 的 Azure SDK 将文件从在线容器下载到我的设备,并使用 azure 提供的连接字符串进行连接。对于上下文,这是嵌入式 Linux
版本上的 运行
我有两个问题,第一个是如何将特定证书传递给 azure SDK 以用于连接,因为目前我在连接时遇到了这个问题
Get "https://transaction.blob.core.windows.net/transactions?comp=list&restype=container": x509: certificate signed by unknown authority
或者失败了如何生成正确的证书并将其放入 /etc/ssl?据我所知,我认为去哪里寻找证书。
还有第二个问题,如果我的文件夹结构看起来像 /transaction/my-libs/images/1.0.0/libimage.bin,我应该使用 azure sdk for go 的什么功能从在线 blob 下载,其中事务是我的 blob容器。
func testConnection(){
Println("TESTING CONNECTION")
connStr := "..." // actual connection string hidden
serviceClient, err := azblob.NewServiceClientFromConnectionString(connStr, nil)
// crashes here <------------
//ctx := context.Background()
//container := serviceClient.NewContainerClient("transactions")
//
//_, err = container.Create(ctx, nil)
//
//blockBlob := container.NewBlockBlobClient("erebor-libraries")
//_, err = blockBlob.Download(ctx, nil)
//Open a buffer, reader, and then download!
downloadedData := &bytes.Buffer{}
reader := get.Body(RetryReaderOptions{}) // RetryReaderOptions has a lot of in-depth tuning abilities, but for the sake of simplicity, we'll omit those here.
_, err = downloadedData.ReadFrom(reader)
err = reader.Close()
if data != downloadedData.String() {
err := errors.New("downloaded data doesn't match uploaded data")
if err != nil {
return
}
}
pager := container.ListBlobsFlat(nil)
for pager.NextPage(ctx) {
resp := pager.PageResponse()
for _, v := range resp.ContainerListBlobFlatSegmentResult.Segment.BlobItems {
fmt.Println(*v.Name)
}
}
• 您可以使用以下 Azure SDK for Go 命令将特定证书传递给 Azure SDK,通过为其创建服务主体来连接到其他 Azure 资源:-
‘ type ClientCertificateConfig struct {
ClientID string
CertificatePath string
CertificatePassword string
TenantID string
AuxTenants []string
AADEndpoint string
Resource string
} ‘
有关客户端证书的创建及其使用的更多信息,请参阅下面的文档link以获取更多详细信息:-
https://pkg.go.dev/github.com/Azure/go-autorest/autorest/azure/auth#ClientCertificateConfig
此外,即使您的文件夹结构是 '/transaction/my-libs/images/1.0.0/libimage.bin',但是 blob URL 是独一无二的blob URL 中提到的文件夹层次结构,因此在连接到 Azure 存储帐户以下载 blob 时,请以单个倒逗号表示法提及 URL 以指定 blob 路径。
请参考下面的示例代码,通过 Azure SDK for Go 下载 blob:-
https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob#example-package
https://pkg.go.dev/github.com/Azure/azure-storage-blob-go/azblob#pkg-examples
我正在尝试连接以使用适用于 Golang 的 Azure SDK 将文件从在线容器下载到我的设备,并使用 azure 提供的连接字符串进行连接。对于上下文,这是嵌入式 Linux
版本上的 运行我有两个问题,第一个是如何将特定证书传递给 azure SDK 以用于连接,因为目前我在连接时遇到了这个问题
Get "https://transaction.blob.core.windows.net/transactions?comp=list&restype=container": x509: certificate signed by unknown authority
或者失败了如何生成正确的证书并将其放入 /etc/ssl?据我所知,我认为去哪里寻找证书。
还有第二个问题,如果我的文件夹结构看起来像 /transaction/my-libs/images/1.0.0/libimage.bin,我应该使用 azure sdk for go 的什么功能从在线 blob 下载,其中事务是我的 blob容器。
func testConnection(){
Println("TESTING CONNECTION")
connStr := "..." // actual connection string hidden
serviceClient, err := azblob.NewServiceClientFromConnectionString(connStr, nil)
// crashes here <------------
//ctx := context.Background()
//container := serviceClient.NewContainerClient("transactions")
//
//_, err = container.Create(ctx, nil)
//
//blockBlob := container.NewBlockBlobClient("erebor-libraries")
//_, err = blockBlob.Download(ctx, nil)
//Open a buffer, reader, and then download!
downloadedData := &bytes.Buffer{}
reader := get.Body(RetryReaderOptions{}) // RetryReaderOptions has a lot of in-depth tuning abilities, but for the sake of simplicity, we'll omit those here.
_, err = downloadedData.ReadFrom(reader)
err = reader.Close()
if data != downloadedData.String() {
err := errors.New("downloaded data doesn't match uploaded data")
if err != nil {
return
}
}
pager := container.ListBlobsFlat(nil)
for pager.NextPage(ctx) {
resp := pager.PageResponse()
for _, v := range resp.ContainerListBlobFlatSegmentResult.Segment.BlobItems {
fmt.Println(*v.Name)
}
}
• 您可以使用以下 Azure SDK for Go 命令将特定证书传递给 Azure SDK,通过为其创建服务主体来连接到其他 Azure 资源:-
‘ type ClientCertificateConfig struct {
ClientID string
CertificatePath string
CertificatePassword string
TenantID string
AuxTenants []string
AADEndpoint string
Resource string
} ‘
有关客户端证书的创建及其使用的更多信息,请参阅下面的文档link以获取更多详细信息:- https://pkg.go.dev/github.com/Azure/go-autorest/autorest/azure/auth#ClientCertificateConfig
此外,即使您的文件夹结构是 '/transaction/my-libs/images/1.0.0/libimage.bin',但是 blob URL 是独一无二的blob URL 中提到的文件夹层次结构,因此在连接到 Azure 存储帐户以下载 blob 时,请以单个倒逗号表示法提及 URL 以指定 blob 路径。
请参考下面的示例代码,通过 Azure SDK for Go 下载 blob:-
https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob#example-package
https://pkg.go.dev/github.com/Azure/azure-storage-blob-go/azblob#pkg-examples