简介


刚学习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. TCP的核心系列 — SACK和DSACK的实现(二)

    和18版本相比,37版本的SACK和DSACK的实现做了很多改进,最明显的就是需要遍历的次数少了, 减少了CPU的消耗.37版的性能提升了,代码有大幅度的改动,逻辑也更加复杂了. 本文主要内容:37版 ...

  2. 【Android 应用开发】OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解

    最近开始关注OpenGL ES 2.0 这是真正意义上的理解的第一个3D程序 , 从零开始学习 . 案例下载地址 : http://download.csdn.net/detail/han120201 ...

  3. 【Android 应用开发】自定义View 和 ViewGroup

    一. 自定义View介绍 自定义View时, 继承View基类, 并实现其中的一些方法. (1) ~ (2) 方法与构造相关 (3) ~ (5) 方法与组件大小位置相关 (6) ~ (9) 方法与触摸 ...

  4. butternife Zelezny自动注入插件

    插件地址:http://plugins.jetbrains.com/plugin/7369 Products: IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, ...

  5. ibm云时代的转型

    好几个月了,有两个说法很流行. 第一个说法,是老有人嚷嚷思科快被SDN整趴下了:第二个说法,是老有人嚷嚷IBM在云计算时代完全落后了,要倒下了. 刚开始我还跟有些人辩论: 1.裁员是西方企业常用的战略 ...

  6. "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no freetype in java.library.path

    Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no freetype in java ...

  7. javascript内置对象速查(一)

    字符串对象 var str = new String("Hello World"); 可以调用其中的一些方法: str.length str.big 日期对象 var dt = n ...

  8. day08_Servlet学习笔记

     ============================================================ 一.什么是Servlet?(非常非常重要) servlet 是运行在 Web ...

  9. Spring Aop 梳理

    Aspect Oriented Programming  面向切面编程.解耦是程序员编码开发过程中一直追求的.AOP也是为了解耦所诞生. 具体思想是:定义一个切面,在切面的纵向定义处理方法,处理完成之 ...

  10. Servlet 学习总结

    Servlet资料整理[很全很强大] 分类: J2EE2009-10-23 00:51 671人阅读 评论(0) 收藏 举报 servletsessionstring服务器initialization ...