新聞中心
AWS SDK for GO 1.0版本正式推出 可在生產(chǎn)環(huán)境下使用
原創(chuàng)
作者:原文:Jeff Barr/編譯:于雪 2015-11-20 15:28:36
云計(jì)算 長期以來,AWS致力于圍繞組品促進(jìn)和幫助開發(fā)者社區(qū),AWS非常重視與開發(fā)者的直接溝通和協(xié)作能力,這也是為什么AWS將許多在GitHub上的庫和工具開源出來的原因之一。在開源社區(qū)所有的經(jīng)驗(yàn)中,有關(guān)AWS SDK for Go產(chǎn)生的過程是他們特別樂于分享的一個(gè)故事。

| “今年早些時(shí)候,我的同事Peter Moon分享了關(guān)于推出AWS SDK for Go的計(jì)劃。如同你將看到的下面這封來自Peter的郵件中所提到的,該SDK 現(xiàn)在可以得到廣泛使用了!“ — Jeff |
長期以來,AWS致力于圍繞其產(chǎn)品促進(jìn)和幫助開發(fā)者社區(qū)的進(jìn)步。AWS非常重視與開發(fā)者的直接溝通和協(xié)作能力,這也是為什么其將許多在GitHub上的庫和工具開源出來的原因之一。在這所有經(jīng)驗(yàn)中,有關(guān)AWS SDK for Go產(chǎn)生的過程是一個(gè)他們特別樂于分享的故事。
11月19日,AWS宣布AWS SDK for Go 1.0版本正式發(fā)布并推薦在生產(chǎn)環(huán)境中使用。像AWS許多項(xiàng)目一樣,該SDK同樣遵循語義化版本號(hào)Sematic Versioning,也就是說如果你從1.0版本開始上手,之后的SDK升級(jí)都可以在任意1.X版本內(nèi)進(jìn)行,不會(huì)影響開發(fā)者用現(xiàn)有的代碼繼續(xù)工作。
自六月開發(fā)者預(yù)覽版本發(fā)布后,AWS SDK For Go完成了一些新的關(guān)鍵性改進(jìn),包括:
- Sessions——易于共享配置和客戶端之間的請(qǐng)求處理程序。
- JMESPATH支持——查詢和重塑復(fù)雜的API響應(yīng)和其他使用簡單的表達(dá)式結(jié)構(gòu)。
- Paginators——遍歷列表類API響應(yīng)多個(gè)頁面。
- Waiters——等待AWS資源內(nèi)異步狀態(tài)的變化
- Documentation——更新開發(fā)者指南
下面是一個(gè)代碼示例,這些示例對(duì)一些新功能進(jìn)行了練習(xí):
// Create a session
s := session.New(aws.NewConfig().WithRegion("us-west-2"))
// Add a handler to print every API request for the session
s.Handlers.Send.PushFront(func(r *request.Request) {
fmt.Printf("Request: %s/%s\n", r.ClientInfo.ServiceName, r.Operation)
})
// We want to start all instances in a VPC, so let's get their IDs first.
ec2client := ec2.New(s)
var instanceIDsToStart []*string
describeInstancesInput := &ec2.DescribeInstancesInput{
Filters: []*ec2.Filter{
&ec2.Filter{
Name: aws.String("vpc-id"),
Values: aws.StringSlice([]string{"vpc-82977de9"}),
},
},
}
// Use a paginator to easily iterate over multiple pages of response
ec2client.DescribeInstancesPages(describeInstancesInput,
func(page *ec2.DescribeInstancesOutput, lastPage bool) bool {
// Use JMESPath expressions to query complex structures
ids, _ := awsutil.ValuesAtPath(page, "Reservations[].Instances[].InstanceId")
for _, id := range ids {
instanceIDsToStart = append(instanceIDsToStart, id.(*string))
}
return !lastPage
})
// The SDK provides several utility functions for literal <--> pointer transformation
fmt.Println("Starting:", aws.StringValueSlice(instanceIDsToStart))
// Skipped for brevity here, but *always* handle errors in the real world :)
ec2client.StartInstances(&ec2.StartInstancesInput{
InstanceIds: instanceIDsToStart,
})
// Finally, use a waiter function to wait until the instances are running
ec2client.WaitUntilInstanceRunning(describeInstancesInput)
fmt.Println("Instances are now running.") 了解更多信息請(qǐng)參閱:
- AWS SDK for Go倉庫
- API 文檔
- 開發(fā)者指南
原文作者:Jeff Barr
文章題目:AWSSDKforGo1.0版本正式推出可在生產(chǎn)環(huán)境下使用
文章位置:http://fisionsoft.com.cn/article/djjjjhd.html


咨詢
建站咨詢
