aws-sdk-go describeStacks() 试图获取 stackids 列表或从堆栈名称获取 stackid
aws-sdk-go describeStacks() trying to get a list of stackids or get stackid from stack name
首先,我为我的英语道歉,我建议我是 Go 的新手。
我正在尝试获取我的 opsworks 堆栈中所有 stackId 的列表,
或像我对 ruby sdk 所做的那样提供堆栈名称并获取堆栈 ID,以便我可以与其他服务调用一起使用,但现在我正在尝试让它们全部熟悉 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
上面写着:"An array of stack IDs that specify the stacks to be described. If you omit this parameter, DescribeStacks returns a description of every stack."
O 继续获取或 "not enough arguments in call to svc.DescribeStacks"
或 "alidationException: Please provide no arguments or, one or more stack IDs" 或“!v(PANIC=reflect:调用 reflect.Value.Interface 零值)”
所以我尝试了很多方法..不仅仅是我粘贴在这里的那个..这就是为什么差异结果...更改为 () 到 (nil) 等..省略参数以便我可以获得所有堆栈的列表。
我肯定很傻,知道吗?我在 google 等中进行了搜索,但所有示例均针对 ec2 或 s3...
在主要 github 问题站点得到了有效的响应。
我明白了,谢谢你的澄清。您在 180498284 中列出的示例实际上是获取所有堆栈 ID 列表的最佳方式。
要从您使用 opsworks.DescribeStacksOutput 结构的字段的响应中检索各个堆栈 ID。该结构有一个字段 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 的 input/output 结构的字符串指针类型转换为值的助手。它还可以防止值为 nil return 空字符串。
首先,我为我的英语道歉,我建议我是 Go 的新手。 我正在尝试获取我的 opsworks 堆栈中所有 stackId 的列表, 或像我对 ruby sdk 所做的那样提供堆栈名称并获取堆栈 ID,以便我可以与其他服务调用一起使用,但现在我正在尝试让它们全部熟悉 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 上面写着:"An array of stack IDs that specify the stacks to be described. If you omit this parameter, DescribeStacks returns a description of every stack."
O 继续获取或 "not enough arguments in call to svc.DescribeStacks" 或 "alidationException: Please provide no arguments or, one or more stack IDs" 或“!v(PANIC=reflect:调用 reflect.Value.Interface 零值)”
所以我尝试了很多方法..不仅仅是我粘贴在这里的那个..这就是为什么差异结果...更改为 () 到 (nil) 等..省略参数以便我可以获得所有堆栈的列表。 我肯定很傻,知道吗?我在 google 等中进行了搜索,但所有示例均针对 ec2 或 s3...
在主要 github 问题站点得到了有效的响应。
我明白了,谢谢你的澄清。您在 180498284 中列出的示例实际上是获取所有堆栈 ID 列表的最佳方式。
要从您使用 opsworks.DescribeStacksOutput 结构的字段的响应中检索各个堆栈 ID。该结构有一个字段 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 的 input/output 结构的字符串指针类型转换为值的助手。它还可以防止值为 nil return 空字符串。