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

如何在Go编写的AWS Lambda中读取调用者的STS会话标签?

能否在Go语言编写的AWS Lambda中获取调用者的STS会话标签?

可以实现,你需要结合AWS STS API和Lambda的执行上下文来获取并读取调用者的STS会话标签,具体步骤如下:

前提条件

确保Lambda的执行角色拥有sts:GetCallerIdentity和sts:GetSessionTags的IAM权限,否则无法调用相关API获取会话信息。

实现步骤与代码示例

  1. 加载AWS配置,创建STS客户端
  2. 调用GetCallerIdentity获取调用者的身份ARN,从中提取会话ID
  3. 调用GetSessionTags传入会话ID,读取已设置的标签
package main

import (
	"context"
	"fmt"
	"strings"

	"github.com/aws/aws-lambda-go/lambda"
	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/sts"
)

func handler(ctx context.Context) error {
	// 加载默认AWS配置
	cfg, err := config.LoadDefaultConfig(ctx)
	if err != nil {
		return fmt.Errorf("加载配置失败: %v", err)
	}

	// 初始化STS客户端
	stsClient := sts.NewFromConfig(cfg)

	// 获取调用者身份信息
	callerResp, err := stsClient.GetCallerIdentity(ctx, &sts.GetCallerIdentityInput{})
	if err != nil {
		return fmt.Errorf("获取调用者身份失败: %v", err)
	}

	// 从ARN中解析会话ID(ARN格式示例:arn:aws:sts::123456789012:assumed-role/MyRole/MySession)
	arnSegments := strings.Split(*callerResp.Arn, "/")
	if len(arnSegments) < 3 {
		return fmt.Errorf("调用者ARN格式无效")
	}
	sessionID := arnSegments[len(arnSegments)-1]

	// 获取会话标签
	tagsResp, err := stsClient.GetSessionTags(ctx, &sts.GetSessionTagsInput{
		SessionId: aws.String(sessionID),
	})
	if err != nil {
		return fmt.Errorf("获取会话标签失败: %v", err)
	}

	// 输出会话标签
	fmt.Println("STS会话标签:")
	for _, tag := range tagsResp.Tags {
		fmt.Printf("%s: %s\n", *tag.Key, *tag.Value)
	}

	return nil
}

func main() {
	lambda.Start(handler)
}

注意事项

  • 只有当Lambda的调用者身份是STS临时会话(带标签)时,GetCallerIdentity返回的ARN才会包含会话ID,否则无法提取有效会话信息
  • 确保IAM策略中给Lambda执行角色添加了允许调用sts:GetCallerIdentity和sts:GetSessionTags的权限,策略示例:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:GetCallerIdentity",
                "sts:GetSessionTags"
            ],
            "Resource": "*"
        }
    ]
}

内容的提问来源于stack exchange,提问作者dolan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:40:14