1 回答

TA貢獻1111條經驗 獲得超0個贊
您可以使用以下代碼:
package main
import (
? ? "context"
? ? awsutils "github.com/alessiosavi/GoGPUtils/aws"
? ? "github.com/aws/aws-sdk-go-v2/aws"
? ? "github.com/aws/aws-sdk-go-v2/service/lambda"
? ? "os"
? ? "sync"
)
var lambdaClient *lambda.Client = nil
var once sync.Once
func init() {
? ? once.Do(func() {
? ? ? ? cfg, err := awsutils.New()
? ? ? ? if err != nil {
? ? ? ? ? ? panic(err)
? ? ? ? }
? ? ? ? lambdaClient = lambda.New(lambda.Options{Credentials: cfg.Credentials, Region: cfg.Region})
? ? })
}
func ListLambdas() ([]string, error) {
? ? f, err := lambdaClient.ListFunctions(context.Background(), &lambda.ListFunctionsInput{})
? ? if err != nil {
? ? ? ? return nil, err
? ? }
? ? var functions = make([]string, len(f.Functions))
? ? for i, functionName := range f.Functions {
? ? ? ? functions[i] = *functionName.FunctionName
? ? }
? ? continuationToken := f.NextMarker
? ? for continuationToken != nil {
? ? ? ? f, err = lambdaClient.ListFunctions(context.Background(), &lambda.ListFunctionsInput{Marker: continuationToken})
? ? ? ? if err != nil {
? ? ? ? ? ? return nil, err
? ? ? ? }
? ? ? ? continuationToken = f.NextMarker
? ? ? ? for _, functionName := range f.Functions {
? ? ? ? ? ? functions = append(functions, *functionName.FunctionName)
? ? ? ? }
? ? }
? ? return functions, nil
}
func DescribeLambda(lambdaName string) (*lambda.GetFunctionOutput, error) {
? ? function, err := lambdaClient.GetFunction(context.Background(), &lambda.GetFunctionInput{FunctionName: aws.String(lambdaName)})
? ? if err != nil {
? ? ? ? return nil, err
? ? }
? ? return function, nil
}
func ListTags(lambdaARN string) (*lambda.ListTagsOutput, error) {
? ? return lambdaClient.ListTags(context.Background(), &lambda.ListTagsInput{
? ? ? ? Resource: aws.String(lambdaARN),
? ? })
}
然后您可以使用該ListLambdas方法列出所有 lambda。之后,您可以迭代返回的切片并調用該DescribeLambda方法以獲得lambdaARN,然后您可以調用ListTags.
- 1 回答
- 0 關注
- 108 瀏覽
添加回答
舉報