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

跨账号访问AWS SSM Parameter Store遇IndexError,求排查指导

跨账号SSM Parameter Store访问报错IndexError排查方案

问题概述

源账号通过RAM共享SSM参数给目标账号,已配置目标账号执行角色权限,但执行代码时触发IndexError: list index out of range,核心原因是get_parameters返回的Parameters列表为空,说明参数未被成功获取。执行的代码如下:

def fetch_parameters(key):
    ssm_client = build_client(service="ssm", region=get_aws_region())
    result = ssm_client.get_parameters(Names=[ARN], WithDecryption=True))
    return result["Parameters"][0]["Value"]

逐一排查以下配置/操作:

1. 确认RAM共享已被目标账号接受

  • 登录目标账号RAM控制台,进入共享资源页面,查看源账号共享的SSM参数是否存在且状态为「已接受」。若状态是「待接受」,需手动完成接受操作。

2. 检查参数ARN的正确性

  • 跨账号访问必须使用源账号参数的完整ARN,格式为:arn:aws:ssm:<区域>:<源账号ID>:parameter/<参数名称>
  • 禁止使用仅参数名称或相对路径,否则SSM无法定位到跨账号的参数。

3. 验证目标账号执行角色的权限

  • 检查角色的IAM策略,确保包含:
    • 针对目标参数ARN的ssm:GetParameters(或ssm:GetParameter)权限
    • 若参数是加密状态,需额外添加对应KMS密钥的kms:Decrypt权限(如果使用自定义KMS密钥,源账号的KMS密钥策略也必须允许目标账号角色访问)
  • 示例权限策略片段:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ssm:GetParameters",
            "Resource": "arn:aws:ssm:us-east-1:123456789012:parameter/my-shared-param"
        },
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc123"
        }
    ]
}

4. 修正代码语法错误

  • 代码中get_parameters调用末尾多了一个冗余的右括号:result = ssm_client.get_parameters(Names=[ARN], WithDecryption=True)),这会直接导致语法错误,先修正该问题后重新测试。

5. 通过CloudTrail定位具体错误

  • 在目标账号开启CloudTrail日志,搜索GetParameters API调用记录,查看返回的errorCode和errorMessage,这能直接获取权限不足、参数不存在等具体失败原因。

6. 确认源账号参数状态正常

  • 登录源账号SSM控制台,检查共享的参数是否存在、状态正常,未被删除或禁用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:37:09