1
- 我想從AWS
- AWS提供了在有
NextToken
指向下一個頁面的多個頁面響應中提取所有的自動縮放組。所以需要繼續尋找NextToken
並拉組名 - 如果沒有
NextToken
,則退出。
在Python中,我做的:轉到郎While循環
import boto3
import pprint
session = boto3.session.Session(region_name='us-west-2')
client = session.client('autoscaling')
resp = client.describe_auto_scaling_groups()
pprint.pprint(resp)
while 'NextToken' in resp:
resp = client.describe_auto_scaling_groups(NextToken=resp['NextToken'])
pprint.pprint(resp)
我跟着相似的邏輯在go,並與下面的代碼上來:
package main
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/autoscaling"
)
func main() {
sess, err := session.NewSession(&aws.Config{Region: aws.String("us-west-2")})
if err != nil {
fmt.Println("Failed to create session: ", sess)
return
}
svc := autoscaling.New(sess)
params := &autoscaling.DescribeAutoScalingGroupsInput{}
resp, err := svc.DescribeAutoScalingGroups(params)
if err != nil {
fmt.Println("Something Went wrong")
return
}
fmt.Println(resp)
for {
if resp.NextToken == nil {
fmt.Println("No more pages left")
break
}
params := &autoscaling.DescribeAutoScalingGroupsInput{
NextToken: aws.String(*resp.NextToken),
}
resp, err := svc.DescribeAutoScalingGroups(params)
if err != nil {
fmt.Println("Something Went wrong")
return
}
fmt.Println(resp)
}
}
問題:我go代碼進入到第2頁面,然後繼續循環播放相同的第2頁。它不進行到第3頁(當NextToken
在resp
)或它不退出(resp
中沒有NextToken
時)。
謝謝。如果我在** outer **'resp'之前聲明'var err error',那麼代碼將失敗,並在此塊中重新聲明錯誤'err'。如果我在** inner **'resp'之前聲明'var err error',那麼行爲沒有變化。 – slayedbylucifer
@slayedbylucifer所以這沒有幫助?如果在循環中簡單地用'='替換':='會怎樣? –
Hi @ Ainar-G,用'='代替':='出錯''undefined:resp'。 – slayedbylucifer