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)
私は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)
}
}
QUESTION:私goコードは、第二に行きます同じ第2ページにループし続けます。 3番目のページ(NextToken
がresp
にある場合)または終了しない場合(がresp
にない場合)
感謝を。 **外部** 'resp'の前に' var err error'を宣言すると、 'err'がこのブロックで再宣言されたというエラーでコードが失敗します。 ** inner ** 'resp'の前に' var err error'を宣言すると、動作に変化はありません。 – slayedbylucifer
@slayedbyluciferこれは役に立ちませんか?ループ内で ':='を '='に置き換えるだけではどうでしょうか? –
こんにちは@Ainar-G、 '= =を' = 'と置き換えて' undefined:resp'というエラーを出しました。 – slayedbylucifer