简介


刚学习go几天,尝试调用Azure的SDK进行管理API的操作,基本思路是基于注册的AD Application信息生成token,然后再使用Token生成serviceClient,然后再进行资源的创建等操作。因为对go并不是特别熟悉,如有使用不当之处还请批评指正。


环境搭建

  • go 安装(版本:1.10.2)
  • IDE:LiteIDE
  • 依赖安装:
go get -u github.com/Azure/azure-sdk-for-go/...

go get -u github.com/Azure-Samples/azure-sdk-for-go-samples/...

注意:在安装包的过程中会因为网络原因某些包总是无法安装,这时需要等位到GOPATH中的对应安装路径,采用git Clone的方式直接下载包即可。

示例:go get golang.org/x 包失败解决方法

示例程序:

主程序:

// test1 project main.go
package main import (
"context"
"fmt"
"log"
"os" "github.com/Azure-Samples/azure-sdk-for-go-samples/iam"
"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-06-01/storage"
"github.com/Azure/go-autorest/autorest"
"github.com/Azure/go-autorest/autorest/to"
) const (
errorPrefix = "Cannot create storage account, reason: %v"
) func getStorageAccountsClient(activeDirectoryEndpoint string, baseURL string, subscriptionID string) storage.AccountsClient { iam.ParseArgs() token, err := iam.GetResourceManagementTokenHybrid(activeDirectoryEndpoint, baseURL) if err != nil {
log.Fatal(fmt.Sprintf(errorPrefix, fmt.Sprintf("Cannot generate token. Error details: %v.", err)))
}
storageAccountsClient := storage.NewAccountsClientWithBaseURI(baseURL, subscriptionID) storageAccountsClient.Authorizer = autorest.NewBearerAuthorizer(token) return storageAccountsClient
} func main() {
fmt.Println("Hello World!")
//初始化参数定义,已经失效,仅供格式参考,根据情况修改为自己的测试参数
os.Setenv("AZURE_TENANT_ID", "b388b808-0ec9-4a09-a414-a7cbbd8b7e22")
os.Setenv("AZURE_CLIENT_ID", "0675a148-8425-4cc4-8747-18683cc70422")
os.Setenv("AZURE_CLIENT_SECRET", "VLMnO1T9zA/D9tgfwve3TO+Pq3w3UzY3lGIi+X7kbK22")
var subscriptionID string = "e0fbea86-6cf2-4b2d-81e2-9c59f4f96b22"
var resourceGroupName string = "yuvmtest"
var testStrorageAccountName string = "yugodemostoragetest191"
var location string = "chinanorth" //注意如下两个参数对于中国区Azure固定,不需要修改
var baseURL string = "https://management.chinacloudapi.cn/"
var activeDirectoryEndpoint string = "https://login.chinacloudapi.cn/" ctx := context.Background() storageAccountsClient := getStorageAccountsClient(activeDirectoryEndpoint, baseURL, subscriptionID)
fmt.Println(storageAccountsClient) future, err := storageAccountsClient.Create(
ctx,
resourceGroupName,
testStrorageAccountName,
storage.AccountCreateParameters{
Sku: &storage.Sku{
Name: storage.StandardLRS},
Kind: storage.Storage,
Location: to.StringPtr(location),
AccountPropertiesCreateParameters: &storage.AccountPropertiesCreateParameters{},
}) fmt.Println(future)
fmt.Println(err)
}

代码调整:

github.com/Azure-Samples/azure-sdk-for-go-samples/iam.ParseArgs 调整为如下形式:

// ParseArgs picks up shared env vars
// Other packages should use this func after helpers.ParseArgs()
func ParseArgs() { tenantID = os.Getenv("AZURE_TENANT_ID")
clientID = os.Getenv("AZURE_CLIENT_ID")
clientSecret = os.Getenv("AZURE_CLIENT_SECRET") }

测试结果:

参考链接

Azure Go Management SDK 中国版使用示例的更多相关文章

  1. 中国版 Azure 现提供 Azure Traffic Manager

    Stephen MaloneAzure网络 - DNS和 Traffic Manager高级项目经理 我们非常高兴地宣布,中国版 Azure中现已提供 Azure Traffic Manager.Az ...

  2. [Azure] 使用 Visual Studio 2013 管理中国版 Azure 订阅

    比较关心微软平台技术的朋友应该都知道,微软云服务(Microsoft Azure)以下简称Azure分为全球版和中国版,由于政府法规问题中国版的服务是由二十一世纪互联运营,整体来看中国版Azure和全 ...

  3. 使用VNET-to-VNET连接Microsoft Azure国际版和中国版

    Microsoft Azure的VNET-to-VNET功能可以实现跨虚拟网络的VPN连接,通过VNET-to-VNET互联的两个虚拟网络可以在同一个订阅下或者隶属不同的订阅,而且可以跨数据中心.这实 ...

  4. 跨云应用部署第一步:使用IPSEC VPN连接AWS中国版和Windows Azure中国版

    随着公有云的普及,越来越多的客户将关键应用迁移到云端.但是事实证明,没有哪家云服务提供商可以提供100%的SLA,无论是例行维护还是意外中断服务,对于客户的关键应用而言,都会受到不同程度的影响.此外, ...

  5. 中国版Azure 文件服务

    中国版Azure 文件服务预览版在2015年1月13日已经上线,文件存储使用标准SMB 2.1协议为应用程序提供共享存储. 当我们的虚拟机连接到文件共享后就可以像使用本地共享文件夹一样来读取和写入文件 ...

  6. 自制Azure中国版“加血包”

    Micrsoft Azure中国版的国际出口最近升级为电话线拨号模式,目测为10个用户共享一条56kb的电话线拨号链路.有图有真相: 中国的IT从业者,有三分之一的职业生涯时间是在跟网络斗智斗勇.这点 ...

  7. 完全变味的Windows Azure Marketplace中国版

    国际版的Microsoft Azure很早就发布Marketplace了,里面有非常丰富的(超过3000款)第三方应用.服务和虚拟机镜像可以购买.其定价模式也非常灵活,支持按需付费(pay as yo ...

  8. Traffic Manager:Azure中国版 正式发布

     我们很高兴地宣布Azure Traffic Manager 现已面向中国版Azure正式发布.此版本现已投入生产,由企业 SLA支持,随时可用于生产场景中. 借助Azure Traffic Ma ...

  9. Bluemix中国版体验(一)

    很高兴终于拿到了中国版Bluemix的账号!中国版的Bluemix是由世纪互联运营的,这也是世纪互联继Microsoft Azure,Office 365之后运营的又一个国际一线大品牌的云服务. 中国 ...

随机推荐

  1. android 热修补之andfix实践

    首先有这方面需要的请到https://github.com/xiangzhihong/andfixDemo/tree/master下载例子 对于网上提供的热补丁修复就不多说了,主要有这3种方式可以实现 ...

  2. Hadoop基本知识,(以及MR编程原理)

     hadoop核心是:MapReduce和HDFS (对应着job执行(程序)和文件存储系统(数据的输入和输出)) CRC32作数据交验:在文件Block写入的时候除了写入数据还会写入交验信息,在读取 ...

  3. objective-c中线程编程一例

    /* print with threads : print every file's first n char contents under the path that pass to this pr ...

  4. vs2010 matlab混合编程调用matlab引擎

    // matlab_engine.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "engine.h" ...

  5. 初探linux子系统集之led子系统(二)

    巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一眼看到7:1还以为点球也能踢成这样,后来想想,点球对多嘛6比1啊,接着就是各种新闻铺天盖地的来了.其实失败并没有什么,人生若是能够成功 ...

  6. nasm汇编一些需要注意的地方

    经常用msam或tasm的童鞋一下转换到nasm下可能觉得不怎么适应,它们应该先去晓习一下gas的语法,然后就适应了-that's only a joke! :) section .data v101 ...

  7. 使用kubeadm搭建Kubernetes(1.10.2)集群(国内环境)

    目录 目标 准备 主机 软件 步骤 (1/4)安装 kubeadm, kubelet and kubectl (2/4)初始化master节点 (3/4) 安装网络插件 (4/4)加入其他节点 (可选 ...

  8. C# 如何合并Excel工作表

    文档合并.拆分是实现文档管理的一种有效方式.在工作中,我们可能会遇到需要将多个文档合并的情况,那如何来实现呢,本文将进一步介绍.关于拆分Excel工作表,可参见这篇文章--C#如何拆分EXCEL工作表 ...

  9. 工作中常用Git指令操作

    常用Git指令总结 前阵子有几天好不顺,可谓是喝水都呛着,更何况被Git给呛着了,还不轻,哈哈.所以打算总结一下自己在工作使用到Git相关的东西以及和大家探讨使用GIt的心得体会.于是,关于Git的的 ...

  10. M1卡区块控制位详解

    M1卡区块控制位详解 Mifare 1S50/Mifare 1S70 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取 控制.存取控制为4个字节,共32位,扇区中的每个块(包括 ...