2016-09-20 4 views
1
  • は私がAWS
  • AWSからすべての自動スケーリンググループを抽出したい一方で、次のページへNextTokenポインティングと複数のページのレスポンスを提供します。したがって、NextTokenを探し続けてグループ名を引き出す必要があります。
  • NextTokenがない場合は終了してください。 Pythonで

、私は:ゴーLANGループ

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

QUESTION:コードは、第二に行きます同じ第2ページにループし続けます。 3番目のページ(NextTokenrespにある場合)または終了しない場合(がrespにない場合)

私のコードのヘルプを探しています。私は学びます

答えて

2

あなたの内部respshadowあなたのオリジナルrespのようです。 (=に置き換え:=インナーforループ内でこれを試してみてください:

resp, err = svc.DescribeAutoScalingGroups(params) 
+0

感謝を。 **外部** 'resp'の前に' var err error'を宣言すると、 'err'がこのブロックで再宣言されたというエラーでコードが失敗します。 ** inner ** 'resp'の前に' var err error'を宣言すると、動作に変化はありません。 – slayedbylucifer

+0

@slayedbyluciferこれは役に立ちませんか?ループ内で ':='を '='に置き換えるだけではどうでしょうか? –

+0

こんにちは@Ainar-G、 '= =を' = 'と置き換えて' undefined:resp'というエラーを出しました。 – slayedbylucifer