DynamoDB перечисляет все резервные копии, используя AWS GoLang SDK - PullRequest
0 голосов
/ 10 января 2019

Основано на примере, приведенном в ссылке на пагинацию API-операций без обратных вызовов. https://aws.amazon.com/blogs/developer/context-pattern-added-to-the-aws-sdk-for-go/ Я пытаюсь перечислить все резервные копии в DynamodB. Но кажется, что разбиение на страницы не работает, и это просто получение первой страницы и не переход к следующей странице

package main

    import (
        "context"
        "fmt"

        "github.com/aws/aws-sdk-go/aws"
        "github.com/aws/aws-sdk-go/aws/request"

        "github.com/aws/aws-sdk-go/aws/session"
        "github.com/aws/aws-sdk-go/service/dynamodb"
    )

    func main() {

        sess, sessErr := session.NewSession()

        if sessErr != nil {
            fmt.Println(sessErr)
            fmt.Println("Cound not initilize session..returning..")
            return
        }
        // Create DynamoDB client
        dynamodbSvc := dynamodb.New(sess)

        params := dynamodb.ListBackupsInput{}
        ctx := context.Background()

        p := request.Pagination{
            NewRequest: func() (*request.Request, error) {
                req, _ := dynamodbSvc.ListBackupsRequest(&params)
                req.SetContext(ctx)
                return req, nil
            },
        }

        for p.Next() {
            page := p.Page().(*dynamodb.ListBackupsOutput)
            fmt.Println("Received", len(page.BackupSummaries), "objects in page")
            for _, obj := range page.BackupSummaries {
                fmt.Println(aws.StringValue(obj.BackupName))
            }
        }
        //return p.Err()
    } //end of main

1 Ответ

0 голосов
/ 10 января 2019

Может случиться так, что вы немного врезаетесь в API при использовании

Вы можете вызывать списки резервного копирования максимум 5 раз в секунду.

Какое значение p.HasNextPage() в вашем p.Next() цикле?

...