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

使用AWS SAM的C# Lambda本地API无法访问SSM参数求助

解决SAM Local调用SSM时的安全令牌无效问题

这个问题其实很常见,核心原因是本地运行SAM时并不会使用你SAM模板里定义的IAM角色权限,而是依赖你本地环境配置的AWS凭证来访问SSM服务。部署到AWS时Lambda会使用模板指定的IAM角色,但本地模拟时SAM会读取你本地的AWS credentials发起请求,当这些凭证无效、权限不足或者未配置时,就会抛出"The security token included in the request is invalid"错误。

下面是一步步的解决方案:

1. 检查本地AWS凭证配置

首先确认你本地已经正确配置了AWS凭证:

  • 在Linux/macOS上,凭证文件路径是~/.aws/credentials
  • 在Windows上,路径是C:\Users\<你的用户名>\.aws\credentials

这个文件里应该有类似这样的配置(替换成你的有效凭证):

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
region = eu-west-1

注意要确保region和你代码里指定的EUWest1(对应eu-west-1)一致,同时这个凭证对应的IAM用户/角色必须拥有ssm:GetParameter*权限。

2. 验证本地凭证的有效性和权限

先通过AWS CLI测试你的本地凭证能不能正常访问目标SSM参数,在终端运行:

aws ssm get-parameter --name "/project-name/your-test-parameter" --with-decryption --region eu-west-1

如果这个命令能成功返回参数值,说明凭证和权限没问题;如果报错,先解决CLI的问题,再回到SAM Local。

3. 指定特定的AWS配置文件(如果有多个)

如果你本地有多个AWS配置文件(比如工作用和个人用),可以通过环境变量指定要使用的配置文件:

  • Linux/macOS:
    export AWS_PROFILE=your-profile-name
    sam local start-api
    
  • Windows(PowerShell):
    $env:AWS_PROFILE = "your-profile-name"
    sam local start-api
    

4. 使用临时凭证(如果依赖IAM角色)

如果你的日常开发依赖IAM角色而不是长期凭证,可以通过aws sts assume-role获取临时凭证,然后设置环境变量:

# 替换成你的角色ARN和会话名称
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/your-ssm-access-role --role-session-name sam-local-session

把返回的AccessKeyId、SecretAccessKey、SessionToken设置为环境变量:

  • Linux/macOS:
    export AWS_ACCESS_KEY_ID=temp-access-key
    export AWS_SECRET_ACCESS_KEY=temp-secret-key
    export AWS_SESSION_TOKEN=temp-session-token
    sam local start-api
    
  • Windows(PowerShell):
    $env:AWS_ACCESS_KEY_ID = "temp-access-key"
    $env:AWS_SECRET_ACCESS_KEY = "temp-secret-key"
    $env:AWS_SESSION_TOKEN = "temp-session-token"
    sam local start-api
    

5. 确认SAM Local的凭证加载逻辑

SAM Local会按以下顺序寻找凭证:

  1. 环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN)
  2. 本地的credentials文件
  3. IAM角色(如果在EC2/EKS等AWS服务上运行,但本地开发基本用不到)

所以确保你的凭证在这个优先级链里能被正确找到。

总结一下,本地运行SAM时和部署到AWS的权限模型是不一样的,不要依赖模板里的IAM角色配置,必须保证本地凭证有对应的SSM访问权限,这样就能解决这个安全令牌无效的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:12:35