【发布时间】:2021-07-01 10:08:42
【问题描述】:
我正在使用 AWS 的 Parameter Store 来存储 String 参数值。 我在从 Lambda 函数中获取参数时使用以下代码:
const ssm = require('aws-sdk/clients/ssm');
const getConfig = (prefix) => {
return ssm.getParameter({ Name: `/${prefix}/config`}).promise()
.then(resp => JSON.parse(resp.Parameter.Value))
.catch(err => console.error(err));
};
但我在从 AWS 控制台运行 Lambda 时不断收到以下错误:
ERROR AccessDeniedException: User: arn:aws:sts::XXX:assumed-role/lambdaExecutionRole is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:XXX:parameter/get/getValue
我尝试将管理员访问权限添加到角色:lambdaExecutionRole,但现在收到此错误:
ERROR SyntaxError: Unexpected token h in JSON at position 0
at JSON.parse (<anonymous>)
at /var/task/myFile.js:2:955529
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async Runtime.e.handler (/var/task/myFile.js:2:1065241)
我什至尝试在 doc 之后添加 ssm 权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Sid": "GetParam1",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "ssm:GetParameter",
"Resource": "*"
}
]
}
- An error occurred: AssumeRole policy may only specify STS AssumeRole actions.
- An error occurred: Has prohibited field Resource
知道我在这里可能缺少什么吗?提前致谢。
【问题讨论】:
-
操作是
ssm:GetParameter,但您的策略是ssm:GetParameters。 -
抱歉打错了,我更正了,但又是同样的问题
标签: amazon-web-services aws-lambda aws-parameter-store