go 边走边转
我想从AWS中提取所有自动缩放组
AWS在多个页面中提供响应,NextToken指向下一页。因此,您需要继续查找下一个主题,并提取组名
如果没有NextToken,则退出
在python中,我会:
go 边走边转 我想从AWS中提取所有自动缩放组 AWS在多个页面中提供响应,NextToken指向下一页。因此,您需要继续查找下一个主题,并提取组名 如果没有NextToken,则退出,
go,go,
go,Go,在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.d
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)
我在中遵循了类似的逻辑,并得出了以下代码:
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)
}
}
问题:我的代码转到第二页,然后继续在同一第二页上循环。它不会进入第3页(当resp
中有NextToken
时)或不会退出(当resp
中没有NextToken
时)
正在寻求有关我的代码的帮助。我正在学习你内心的
resp
似乎与你原来的resp
相似。在循环的内部中尝试此操作(:=
替换为=
):
谢谢如果我在外部resp
之前声明var error
,则代码失败,错误err在此块中重新声明。如果我在internalresp
之前声明var error error
,则行为没有变化。@slayedbylucifer所以这没有帮助?如果你只是在循环中用=
替换:=
怎么办?嗨@Ainar-G,用=
替换:=
会出现错误,说未定义:resp
@slayedbylucifer你确定要替换内部resp中的:=
吗?@slayedbylucifer是的,写a,b:=foo()
与var a,b=foo()基本相同。所以你用它定义了新的变量。在这种情况下,您定义了一个新变量resp
,它不同于您在其上方的if
中选中的resp
。这是一个常见的问题,:=
。
resp, err = svc.DescribeAutoScalingGroups(params)