AWS SDK for Go 1.0版本正式推出 可在生產(chǎn)環(huán)境下使用
原創(chuàng)| “今年早些時(shí)候,我的同事Peter Moon分享了關(guān)于推出AWS SDK for Go的計(jì)劃。如同你將看到的下面這封來(lái)自Peter的郵件中所提到的,該SDK 現(xiàn)在可以得到廣泛使用了!“ — Jeff |
長(zhǎng)期以來(lái),AWS致力于圍繞其產(chǎn)品促進(jìn)和幫助開(kāi)發(fā)者社區(qū)的進(jìn)步。AWS非常重視與開(kāi)發(fā)者的直接溝通和協(xié)作能力,這也是為什么其將許多在GitHub上的庫(kù)和工具開(kāi)源出來(lái)的原因之一。在這所有經(jīng)驗(yàn)中,有關(guān)AWS SDK for Go產(chǎn)生的過(guò)程是一個(gè)他們特別樂(lè)于分享的故事。
11月19日,AWS宣布AWS SDK for Go 1.0版本正式發(fā)布并推薦在生產(chǎn)環(huán)境中使用。像AWS許多項(xiàng)目一樣,該SDK同樣遵循語(yǔ)義化版本號(hào)Sematic Versioning,也就是說(shuō)如果你從1.0版本開(kāi)始上手,之后的SDK升級(jí)都可以在任意1.X版本內(nèi)進(jìn)行,不會(huì)影響開(kāi)發(fā)者用現(xiàn)有的代碼繼續(xù)工作。
自六月開(kāi)發(fā)者預(yù)覽版本發(fā)布后,AWS SDK For Go完成了一些新的關(guān)鍵性改進(jìn),包括:
- Sessions——易于共享配置和客戶端之間的請(qǐng)求處理程序。
- JMESPATH支持——查詢和重塑復(fù)雜的API響應(yīng)和其他使用簡(jiǎn)單的表達(dá)式結(jié)構(gòu)。
- Paginators——遍歷列表類(lèi)API響應(yīng)多個(gè)頁(yè)面。
- Waiters——等待AWS資源內(nèi)異步狀態(tài)的變化
- Documentation——更新開(kāi)發(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)參閱:
原文作者:Jeff Barr
原文鏈接:https://aws.amazon.com/cn/blogs/aws/now-available-version-1-0-of-the-aws-sdk-for-g





















