如何添加所有资源ARN?Golang Lambda函数标签列表获取求助
问题
我正尝试列出我的Lambda函数的所有标签对应的ARN,过程中遇到诸多困难,恳请知晓解决方案的人士提供帮助。
当前编写的部分代码
func main() { svc := lambda.New(session.New()) input := &lambda.ListTagsInput{ Resource: aws.String("arn:aws:lambda:us-east-1:657907747545:function-function-name"),
解决方案
要实现列出所有Lambda函数的标签及对应ARN,你需要先获取所有Lambda函数的ARN列表,再逐个查询每个函数的标签。以下是完整的Go语言示例代码:
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/lambda" ) func main() { // 初始化AWS会话,替换为你的目标区域 sess, err := session.NewSession(&aws.Config{ Region: aws.String("us-east-1"), }) if err != nil { log.Fatalf("创建会话失败: %v", err) } svc := lambda.New(sess) // 分页获取所有Lambda函数的ARN var allFunctions []*lambda.FunctionConfiguration nextMarker := aws.String("") for { listInput := &lambda.ListFunctionsInput{ Marker: nextMarker, } result, err := svc.ListFunctions(listInput) if err != nil { log.Fatalf("列出函数失败: %v", err) } allFunctions = append(allFunctions, result.Functions...) // 无更多函数时终止循环 if result.NextMarker == nil { break } nextMarker = result.NextMarker } // 遍历每个函数,获取标签并关联ARN输出 for _, function := range allFunctions { arn := aws.StringValue(function.FunctionArn) fmt.Printf("ARN: %s\n", arn) tagInput := &lambda.ListTagsInput{ Resource: aws.String(arn), } tagResult, err := svc.ListTags(tagInput) if err != nil { log.Printf("获取%s的标签失败: %v", arn, err) continue } if len(tagResult.Tags) == 0 { fmt.Println(" 无标签") } else { fmt.Println(" 标签:") for key, value := range tagResult.Tags { fmt.Printf(" %s: %s\n", key, aws.StringValue(value)) } } fmt.Println("---") } }
关键说明
- 通过
ListFunctions分页获取所有函数,适配大量Lambda函数的场景 - 对每个函数的ARN调用
ListTags接口获取标签 - 单个函数标签查询失败时仅打印错误,不终止整个程序执行
内容的提问来源于stack exchange,提问作者Ali Mustafa
相关产品推荐
相关产品推荐

