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

如何为AWS根用户创建爱尔兰区域的SageMaker专用安全凭证?

嘿,我来帮你解决这个问题!

首先得纠正一个关键误解——AWS的访问密钥本身是全局通用的,不存在「区域专属密钥」这回事!你生成的根用户密钥可以在任何AWS区域使用,报错里的提示其实是说你的请求配置错了,不是密钥的问题。咱们一步步来:

先拆解报错的原因

你看到的错误:

{ "message": "Credential should be scoped to a valid region, not 'us-east-1'. Credential should be scoped to correct service: 'sagemaker'. " }

有两个核心问题:

  1. 你的请求默认用了us-east-1区域,但你的SageMaker端点在爱尔兰(eu-west-1)区域
  2. 请求的服务签名没有指定sagemaker服务,导致AWS识别不了你要调用的资源

Postman测试的快速修复

要让Postman正确调用爱尔兰区域的SageMaker端点,你需要检查这几个配置:

  • 请求URL必须是爱尔兰区域的SageMaker运行时端点:格式应该是
    https://runtime.sagemaker.eu-west-1.amazonaws.com/endpoints/[你的端点名称]/invocations
    注意要把[你的端点名称]换成你实际创建的端点名,区域部分是eu-west-1(爱尔兰的AWS区域代码)
  • AWS认证配置要选对区域和服务:在Postman的Authorization标签里,选择AWS Signature认证方式,然后:
    • Access Key和Secret Key填你生成的根用户密钥(虽然不推荐,但测试可以用)
    • Region要选eu-west-1,而不是默认的us-east-1
    • Service Name要填sagemaker,这个很关键,之前的报错就是因为没指定正确的服务

浏览器JS调用的正确姿势(重点:安全第一!)

绝对不要在浏览器的JS代码里直接使用根用户的访问密钥!这会直接泄露你的账户最高权限,任何人都能拿到密钥操作你的所有AWS资源,风险极大。正确的做法是用以下两种方式:

方式1:用Amazon Cognito身份池获取临时凭证

  1. 在爱尔兰区域创建一个Cognito身份池,开启「未认证身份访问」(如果是公开展示的页面)
  2. 创建一个IAM角色,给这个角色添加调用目标SageMaker端点的权限(比如AmazonSageMakerFullAccess或者更精细的权限,只允许调用你的特定端点)
  3. 在前端用AWS SDK for JavaScript(比如AWS Amplify)初始化Cognito身份池,它会自动获取带有正确区域和权限的临时凭证
  4. 用SDK调用SageMaker端点,此时请求会自动用正确的区域和服务签名

方式2:用API Gateway做中间层

  1. 创建一个API Gateway,在爱尔兰区域,添加一个POST方法,把后端指向你的SageMaker端点URL
  2. 给API Gateway配置IAM授权,只允许特定用户/角色调用
  3. 前端调用API Gateway的URL,而不是直接调用SageMaker,这样不需要在前端暴露任何AWS密钥

重要的安全提醒

  • 永远不要用根用户做日常操作:赶紧创建一个IAM用户,给它分配最小必要权限(比如只允许调用你的SageMaker端点),用这个IAM用户的密钥来测试,比根用户安全太多
  • 绝对不要在前端代码里硬编码任何AWS密钥:不管是根用户还是IAM用户的,只要放在前端,就有被泄露的风险,一定要用临时凭证或者中间层来处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:29:59