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

如何通过STS角色在Python脚本中提取AWS Parameter Store参数?

问题分析与修复方案

你的核心问题是用STS客户端调用了SSM Parameter Store的API,get_parameter是AWS Systems Manager(SSM)的接口,并非STS的接口。以下是修复后的完整代码及注意事项:

修复后的完整代码

import boto3

# 初始化STS客户端,获取角色临时凭证
sts = boto3.client('sts', region_name='us-east-1')
assumed_role = sts.assume_role(
    RoleArn='arn:aws:iam::xxxxxxxxxx:role/IAMRole',
    RoleSessionName='MyScript'
)

# 用临时凭证创建新的AWS会话
session = boto3.session.Session(
    aws_access_key_id=assumed_role['Credentials']['AccessKeyId'],
    aws_secret_access_key=assumed_role['Credentials']['SecretAccessKey'],
    aws_session_token=assumed_role['Credentials']['SessionToken']
)

# 关键:通过新会话创建SSM客户端,而非继续使用STS客户端
ssm_client = session.client('ssm', region_name='us-east-1')

# 提取目标参数值
param_path = "/abc/xyz/ServerIP"
response = ssm_client.get_parameter(Name=param_path)
ip_address = response["Parameter"]["Value"]
print(ip_address)

额外注意事项

  • 若目标参数是KMS加密的,需在get_parameter中添加WithDecryption=True参数,否则会返回加密密文
  • 确保IAMRole角色拥有ssm:GetParameter权限,否则会触发权限错误
  • 保持区域一致性:STS和SSM客户端的region需与参数存储的区域匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:48:11