You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SDK Go V1/V2中SecretsManager ListSecrets过滤器如何正确应用?

AWS SDK Go SecretsManager ListSecrets 过滤器正确使用方法

V1 版本问题与修正

你的V1代码存在类型不匹配的核心问题:ListSecretsInput.Filters 是 []*secretsmanager.Filter 切片类型,但你直接赋值了单个 *secretsmanager.Filter 指针,导致过滤器根本没有被正确传入请求。若要按名称过滤,Key需指定为 "name",该过滤器会匹配名称包含指定值的密钥。

修正后的V1代码:

func GetSecretManagerList(svc secretsmanageriface.SecretsManagerAPI) (*secretsmanager.ListSecretsOutput, error) {
    // 构造过滤器切片,而非单个Filter指针
    filters := []*secretsmanager.Filter{
        {
            Key:    aws.String("name"),
            Values: []*string{aws.String("mtls")},
        },
    }

    input := &secretsmanager.ListSecretsInput{
        MaxResults: aws.Int64(2),
        Filters:    filters, // 传入切片类型参数
    }

    result, err := svc.ListSecrets(input)
    if err != nil {
        return nil, err
    }
    return result, nil
}

V2 版本问题与修正

你的V2代码错误使用了 types.FilterNameStringTypeDescription(对应"description")作为过滤Key,但你要过滤的是名称中的"mtls",应改用 types.FilterNameStringTypeName(对应"name")。AWS Secrets Manager的name过滤器为包含匹配,会返回名称中包含指定字符串的密钥。

修正后的V2代码:

import (
    "context"
    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/service/secretsmanager"
    "github.com/aws/aws-sdk-go-v2/service/secretsmanager/types"
)

func GetSecretManagerList(ctx context.Context, client secretsmanager.Client) (*secretsmanager.ListSecretsOutput, error) {
    // 使用name作为过滤Key,匹配名称包含mtls的密钥
    filters := []types.Filter{
        {
            Key:    types.FilterNameStringTypeName,
            Values: []string{"mtls"},
        },
    }

    result, err := client.ListSecrets(ctx, &secretsmanager.ListSecretsInput{
        MaxResults: aws.Int32(2),
        Filters:    filters,
    })

    if err != nil {
        return nil, err
    }
    return result, nil
}

额外注意事项

  • 不同过滤Key的匹配规则不同:比如tag-key是精确匹配标签键,primary-region是精确匹配密钥所属区域,使用前需明确对应规则。
  • 单元测试模拟:若通过mock验证,需确保mock的ListSecrets方法能正确识别Filters参数,返回符合过滤条件的结果,否则测试会出现不符合预期的情况。
  • 分页处理:若符合条件的密钥数量超过MaxResults设置值,需通过返回的NextToken进行分页查询,避免遗漏结果。

内容的提问来源于stack exchange,提问作者Yoel Blanco Torriente

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:50:55