如何将 aws-sdk-go 的输出设置为 "text"?

How to set the output of the aws-sdk-go to "text"?

尽管 output 设置已设置为 text

~/.aws/config

[default]
output=text

aws-sdk-go return json。问题是输出是否可以切换为 text.

时间:

aws route53 get-hosted-zone --id some-id

是运行,输出如下:

NAMESERVERS some-ns
NAMESERVERS some-ns1
NAMESERVERS some-ns2
NAMESERVERS some-ns3

根据this AWS documentation可以设置配置:

sess, err := session.NewSession(&aws.Config{
    Region: aws.String("us-east-2")},
)

一次尝试是 to consult this Config struct,但似乎省略了 Output 选项。

如何设置输出为文本?

注意: an issue 也已添加到 aws-sdk-go 的 github 页面。

例子

package main

import (
    "fmt"
    "log"

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

func main() {
    session, err := session.NewSession()
    if err != nil {
        log.Fatal(err)
    }
    r53 := route53.New(session)

    listParams := &route53.ListResourceRecordSetsInput{
        HostedZoneId: aws.String("some-id"),
    }
    records, err := r53.ListResourceRecordSets(listParams)

    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(records)
}

returns:

{
  IsTruncated: false,
  MaxItems: "100",
  ResourceRecordSets: [
    {
      Name: "some-domain.",
      ResourceRecords: [{
          Value: "some-ip"
        }],
      TTL: 7200,
      Type: "A"
    }
}

aws route53 list-resource-record-sets --hosted-zone-id some-id,结果是:

RESOURCERECORDSETS      some-domain.     7200    A
RESOURCERECORDS some-ip

问题

虽然可以设置 aws-cli 的输出格式,但似乎无法对 SDK 执行相同的操作。


问题

如何让 go-aws-sdk return text 而不是 json?

我有你需要的所有信息,你只需要从响应(记录)中解开它。

要从上一个 cli 命令获得类似的结果:

for _, recordSet := range records.ResourceRecordSets {
    log.Println("RESOURCERECORDSETS " + *recordSet.Name + strconv.Itoa(int(*recordSet.TTL)) + *recordSet.Type)
    for _, record := range recordSet.ResourceRecords {
        log.Println("RESOURCERECORDS " + *record.Value)
    }
    log.Println("")
}