- 我想从 AWS 中提取所有自动缩放组
- AWS 在多个页面中提供响应,
NextToken
指向下一页。所以需要继续寻找NextToken
并拉取组名 - 如果没有
NextToken
,则退出。
在 python 中,我这样做:
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代码转到第二页,然后继续循环遍历相同的第二页。它不会继续到第 3 页(当 resp
中有 NextToken
时)或它不会退出(当 resp 中没有
).NextToken
时) >resp
最佳答案
你内心的resp
似乎是shadow你原来的 resp
。在内部 for
循环中尝试这个(:=
替换为 =
):
resp, err = svc.DescribeAutoScalingGroups(params)
关于Golang While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39594169/