如何将 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("")
}
尽管 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("")
}