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

如何创建同时使用本地AWS配置文件并假定IAM角色的boto3会话?

解决方案:使用本地AWS配置文件并假定IAM角色拉取Secrets Management密钥

核心逻辑

先通过本地指定的my-profile配置文件建立初始AWS会话,再借助STS服务假定目标IAM角色获取临时凭证,最后用这些凭证创建Secrets Manager客户端拉取受限密钥。

完整代码示例

import boto3
from botocore.exceptions import ClientError

# 替换为你的实际参数
LOCAL_PROFILE_NAME = "my-profile"
TARGET_ROLE_ARN = "arn:aws:iam::123456789012:role/your-restricted-secrets-role"
ROLE_SESSION_NAME = "local-secrets-access-session"  # 自定义会话名,用于AWS控制台追踪请求
SECRET_NAME = "your-target-secret-name"

def get_restricted_secret():
    # 1. 用本地配置文件创建初始会话
    initial_session = boto3.Session(profile_name=LOCAL_PROFILE_NAME)
    
    # 2. 通过初始会话获取STS客户端,用于执行角色假定
    sts_client = initial_session.client("sts")
    
    try:
        # 3. 调用STS接口获取临时凭证
        assumed_role_response = sts_client.assume_role(
            RoleArn=TARGET_ROLE_ARN,
            RoleSessionName=ROLE_SESSION_NAME
        )
        temp_credentials = assumed_role_response["Credentials"]
        
        # 4. 用临时凭证创建Secrets Manager客户端
        secrets_client = boto3.client(
            "secretsmanager",
            aws_access_key_id=temp_credentials["AccessKeyId"],
            aws_secret_access_key=temp_credentials["SecretAccessKey"],
            aws_session_token=temp_credentials["SessionToken"],
            region_name=initial_session.region_name  # 继承本地配置的区域
        )
        
        # 5. 拉取目标密钥
        get_secret_response = secrets_client.get_secret_value(SecretId=SECRET_NAME)
        # 根据密钥存储格式调整,这里以明文字符串为例
        secret = get_secret_response["SecretString"]
        return secret
    
    except ClientError as e:
        print(f"获取密钥失败: {e.response['Error']['Message']}")
        raise

# 调用示例
if __name__ == "__main__":
    secret = get_restricted_secret()
    print("获取到的密钥内容:", secret)

关键注意事项

  • 权限前置检查:确保本地my-profile对应的IAM实体拥有sts:AssumeRole权限,且目标IAM角色的信任策略已允许该实体进行角色假定。
  • 临时凭证有效期:默认有效期1小时,最长可设置至12小时(需在角色信任策略中配置允许)。
  • 错误处理扩展:可根据ClientError的错误码(如AccessDeniedException、ResourceNotFoundException)添加针对性的异常处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:40:24