dongrong3171 2016-09-20 12:30
浏览 47
已采纳

进入lang While循环

  • I want to extract all the autoscaling groups from AWS
  • AWS provides response in multiple pages with NextToken pointing to next page. So need keep looking for NextToken and pull the group names
  • If there is no NextToken, then quit.

In python, I do:

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)

I followed similar logic in go and came up with below code:

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)
    }
}

QUESTION: My go code goes to the 2nd page and then keep looping over the same 2nd page. It does not proceed to 3rd page (when there is NextToken in resp) or it does not quit (when there is no NextToken in resp).

Seeking help on my go code. I am learning go

  • 写回答

1条回答 默认 最新

  • doulu8537 2016-09-20 12:35
    关注

    Your inner resp seems to shadow your original resp. Try this inside the inner for loop (:= replaced with =):

    resp, err = svc.DescribeAutoScalingGroups(params)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?