Фильтр региона в конфигурации не учитывается DescribeSnapshots - PullRequest
0 голосов
/ 30 апреля 2018

Даже после явной настройки региона SDK сообщает о большем количестве снимков, чем видно в консоли AWS. Похоже, он возвращает данные снимка из всех регионов для учетной записи.

  sess := session.Must(session.NewSessionWithOptions(session.Options{
        Config: aws.Config{Region: aws.String("eu-central-1"),Endpoint: aws.String("ec2.eu-central-1.amazonaws.com")},
    }))
  svc := ec2.New(sess, &aws.Config{
    Region: aws.String(endpoints.EuCentral1RegionID),
  })
  input := &ec2.DescribeSnapshotsInput{
      Filters: []*ec2.Filter{
        &ec2.Filter{
          Name: aws.String("status"),
          Values: []*string{aws.String("completed")},
        },
      },
  }

  result, err := svc.DescribeSnapshots(input)
  if err != nil {
      if aerr, ok := err.(awserr.Error); ok {
          switch aerr.Code() {
          default:
              fmt.Println(aerr.Error())
          }
      } else {
          fmt.Println(err.Error())
      }
  }

  for _, snapshot := range result.Snapshots{
    fmt.Println(*snapshot.SnapshotId, " : ", *snapshot.VolumeSize)
  }

1 Ответ

0 голосов
/ 01 мая 2018

Следовал документации здесь и понял, что DescribeSnapshots возвращает три типа снимков. a) Общедоступные снимки (делаются публично доступными для создания томов кем-то еще) b) Явные снимки (делаются доступными явно для вашей учетной записи AWS кем-то еще) c) Неявные снимки (снимки создаются вашей собственной учетной записью)

Следовательно, результатов намного больше, чем ожидалось.

Дополнительно, если вы передаете в DescribeSnapshotsInput следующий фильтр:

&ec2.Filter{
  Name: aws.String("owner-id"),
  Values:[]*string{aws.String("XXXXYYYYYZZZZ")},
},

результаты дополнительно уменьшены для отображения снимков, доступных только в вашем регионе

...