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

如何授权AWS Fargate容器内代码从AWS Parameter Store获取密钥

问题

我需要在部署于AWS Fargate的Docker容器中运行JavaScript代码,从AWS Parameter Store获取存储的密钥。目前使用aws-sdk的ssmClient.getParameter函数实现,本地通过设置AWS环境变量可正常运行,但部署到Fargate容器后无权限获取参数。尝试过在Dockerfile添加环境变量、控制台配置参数均未解决,想要无需过期的授权方案。

附本地运行代码示例:

//params.js
const AWS = require('aws-sdk')
async function getParameters () {
  const ssmClient = new AWS.SSM({
    apiVersion: '2014-11-06',
    region: 'us-west-1'
  })
  const secret= await ssmClient.getParameter({
    Name: '/aws_account/dev/somesecret',
    WithDecryption: true
  })
return secret
}

本地终端执行命令:

export AWS_ACCESS_KEY_ID="ID"
export AWS_SECRET_ACCESS_KEY="KEY"
export AWS_SESSION_TOKEN="TOKEN"

node params.js

无需过期的授权方案:使用IAM任务角色

Fargate容器无需手动配置长期密钥,通过为ECS任务绑定IAM角色,容器可自动获取AWS托管的临时凭证(自动轮换,不会过期),这是AWS官方推荐的安全方案。

步骤1:创建带SSM权限的IAM角色

  1. 登录AWS IAM控制台,新建角色,信任实体选择Elastic Container Service Task。
  2. 为角色附加以下权限策略(根据你的参数路径调整资源范围):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": "arn:aws:ssm:us-west-1:你的AWS账号ID:parameter/aws_account/dev/somesecret",
      "Condition": {
        "Bool": {
          "ssm:ParameterWithDecryption": "true"
        }
      }
    }
  ]
}

注意:若需访问多个参数,可使用通配符(如/aws_account/dev/*),但遵循最小权限原则,尽量缩小资源范围。

步骤2:关联IAM角色到Fargate任务定义

  1. 打开ECS控制台,找到目标任务定义,创建新版本。
  2. 在任务角色栏选择刚才创建的IAM角色(任务角色用于给容器内运行的应用程序提供权限,匹配你的场景)。
  3. 保存任务定义,更新Fargate服务以使用新版本任务定义。

步骤3:优化代码(可选)

Fargate会自动将AWS凭证注入容器环境,无需手动配置SSM客户端的凭证,代码可简化:

//params.js
const AWS = require('aws-sdk')
async function getParameters () {
  // AWS SDK会自动从ECS任务角色获取凭证,无需手动指定
  const ssmClient = new AWS.SSM({
    apiVersion: '2014-11-06',
    region: 'us-west-1'
  })
  // aws-sdk v2需调用.promise()才能配合await使用
  const secret = await ssmClient.getParameter({
    Name: '/aws_account/dev/somesecret',
    WithDecryption: true
  }).promise();
  return secret.Parameter.Value; // 直接返回密钥值更便于后续使用
}

验证配置

更新Fargate服务后,等待新任务启动,通过容器日志或业务测试确认可正常获取Parameter Store中的密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:30:03