为了账号安全,请及时绑定邮箱和手机立即绑定

aws-sdk-go describeStacks() 尝试获取 stackid 列表或从堆栈名称中

aws-sdk-go describeStacks() 尝试获取 stackid 列表或从堆栈名称中

Go
MYYA 2021-12-07 18:33:52
首先,我为我的英语道歉,我建议我是 Go 新手。我正在尝试获取我的 opsworks 堆栈上所有 stackId 的列表,或者像我对 ruby sdk 所做的那样提供堆栈名称并获取 stackid,以便我可以与其他服务调用一起使用,但现在我正在尝试获取所有这些熟悉sdk。func main() {        svc := opsworks.New(session.New(&aws.Config{                Region:      aws.String("us-east-1"),                Credentials: credentials.NewSharedCredentials("", "development"),        }))         resp, err := svc.DescribeStacks()        if err != nil {                fmt.Println(err.Error())                return        }               fmt.Println(resp)}我省略“params”的原因是:http : //docs.aws.amazon.com/sdk-for-go/api/service/opsworks.html#type-DescribeStacksInput 说:“堆栈ID的数组指定要描述的堆栈。如果省略此参数,DescribeStacks 将返回每个堆栈的描述。”O 不断获取或“调用 svc.DescribeStacks 时参数不足”或“alidationException:请不要提供参数,或者,一个或多个堆栈 ID”或“!v(PANIC=reflect: 调用reflect.Value.Interface 为零值)”所以我尝试了很多方法.. 不仅仅是我在这里粘贴的那个.. 这就是为什么 diff 结果......更改为 () 到 (nil) 等.. 省略参数,以便我可以获得所有堆栈的列表. 我肯定很傻,知道吗?我在谷歌等搜索,但所有的例子都是 ec2 或 s3 ...
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

得到了在主要 github 问题站点中有效的响应。


我看到感谢澄清。您在 180498284 中列出的示例实际上是获取所有堆栈 ID 列表的最佳方式。


要从响应中检索单个堆栈 ID,您可以使用 opsworks.DescribeStacksOutput 结构的字段。这个结构体有一个字段 Stacks,它是一个 opsworks.Stack 结构体的列表。StackId 是此结构上的一个字段。


resp, err := svc.DescribeStacks(nil)

if err != nil {

    return err

}


for _, stack := range resp.Stacks {

   stackName := aws.StringValue(stack.Name)

   if stackName == owstackname {

       fmt.Printf("found %s stackid\n", stackName)

       fmt.Println(aws.StringValue(stack.StackId))

   }

}

aws.StringValue 函数是将 SDK 输入/输出结构的字符串指针类型转换为值的助手。它还可以防止值为 nil 的情况下它将返回空字符串。


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信