【发布时间】:2022-11-21 06:14:54
【问题描述】:
这是我试过的。下面的代码获取关联账户的列表,但只获取一个 AWS 账户的域列表。我想列出每个特定链接帐户的域或任何其他资源。
问题似乎出在svc := route53.New(sess) 或sess 本身,因为帐户 ID 未传递给 svc 或 sess。那么问题来了,如何传递account Id呢?
package main
import (
"context"
"crypto/tls"
"fmt"
"log"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/organizations"
"github.com/aws/aws-sdk-go-v2/service/route53domains"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/route53"
)
func main() {
// Load the Shared AWS Configuration (~/.aws/config)
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithDefaultRegion("us-east-1"))
if err != nil {
log.Fatal(err)
}
// Create an Amazon service clients
awsOrgClient := organizations.NewFromConfig(cfg)
awsRoute53DomainsClient := route53domains.NewFromConfig(cfg)
// Build the request with its input parameters
resp, err := awsOrgClient.ListAccounts(context.TODO(), &organizations.ListAccountsInput{})
if err != nil {
log.Fatalf("failed to list tables, %v", err)
}
fmt.Println("Accounts:")
for _, account := range resp.Accounts {
fmt.Println(*account.Name)
// Build the request with its input parameters
resp, err := awsRoute53DomainsClient.ListDomains(context.TODO(), &route53domains.ListDomainsInput{}, func(o *route53domains.Options) {})
if err != nil {
log.Fatalf("failed to list tables, %v", err)
}
fmt.Println("Accounts:")
for _, route53 := range resp.Domains {
fmt.Println(*&route53.DomainName)
}
// fetch list of domains from AWS Route53
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))
svc := route53.New(sess)
// call svc.ListHostedZones() for an account
result, err := svc.ListHostedZones(&route53.ListHostedZonesInput{})
if err != nil {
fmt.Println(err.Error())
return
}
for _, hostedzone := range result.HostedZones {
fmt.Println(*hostedzone.Name)
}
}
}
【问题讨论】:
标签: amazon-web-services go aws-sdk aws-organizations aws-sdk-go-v2