AWS SDK for Go 1.0版本正式推出 可在生產(chǎn)環(huán)境下使用
原創(chuàng) “今年早些時候,我的同事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)生的過程是一個他們特別樂于分享的故事。
11月19日,AWS宣布AWS SDK for Go 1.0版本正式發(fā)布并推薦在生產(chǎn)環(huán)境中使用。像AWS許多項(xiàng)目一樣,該SDK同樣遵循語義化版本號Sematic Versioning,也就是說如果你從1.0版本開始上手,之后的SDK升級都可以在任意1.X版本內(nèi)進(jìn)行,不會影響開發(fā)者用現(xiàn)有的代碼繼續(xù)工作。
自六月開發(fā)者預(yù)覽版本發(fā)布后,AWS SDK For Go完成了一些新的關(guān)鍵性改進(jìn),包括:
- Sessions——易于共享配置和客戶端之間的請求處理程序。
- JMESPATH支持——查詢和重塑復(fù)雜的API響應(yīng)和其他使用簡單的表達(dá)式結(jié)構(gòu)。
- Paginators——遍歷列表類API響應(yīng)多個頁面。
- Waiters——等待AWS資源內(nèi)異步狀態(tài)的變化
- Documentation——更新開發(fā)者指南
下面是一個代碼示例,這些示例對一些新功能進(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.")
了解更多信息請參閱:
原文作者:Jeff Barr
原文鏈接:https://aws.amazon.com/cn/blogs/aws/now-available-version-1-0-of-the-aws-sdk-for-g