Node.js 使用无服务器访问SSM变量
我想用 根据文档,我运行了以下命令:Node.js 使用无服务器访问SSM变量,node.js,amazon-web-services,serverless-framework,Node.js,Amazon Web Services,Serverless Framework,我想用 根据文档,我运行了以下命令: aws ssm put-parameter --name foo --value bar --type SecureString 我把它添加到我的serverless.yml: custom: foo: ${ssm:foo} 但是,在部署时,我会收到以下警告: Serverless Warning -------------------------------------- A valid SSM parameter to satisfy th
aws ssm put-parameter --name foo --value bar --type SecureString
我把它添加到我的serverless.yml
:
custom:
foo: ${ssm:foo}
但是,在部署时,我会收到以下警告:
Serverless Warning --------------------------------------
A valid SSM parameter to satisfy the declaration 'ssm:foo' could not be found.
如何访问此变量?谢谢 我需要为serverless函数和ssm变量赋值设置相同的区域:
aws ssm put-parameter --name foo--value bar --type SecureString --region us-east-1
如果参数是SecureString,则需要在serverless.yml文件上的参数路径后添加~true,如下所述:
这将告诉框架解密该值。确保您有权使用用于加密参数的密钥。要使用SSM变量,您需要在
/aws/reference/secretsmanager/
范例
${ssm:/aws/reference/secretsmanager/${self:provider.stage}/service/mysecret~true}
检查您的IAM策略。要获取参数,它需要访问SSM。这提供了完全访问权限
将其添加到serverless.yml文件中的provider部分
iamRoleStatements:
- Effect: "Allow"
Action:
- "ssm:GetParameters"
Resource: "*"
我认为在无服务器yaml的上下文中,默认情况下SSM并不意味着secrets manager,因此值得澄清您的答案。如果机密存储在机密管理器中,则您的答案是正确的
iamRoleStatements:
- Effect: "Allow"
Action:
- "ssm:GetParameters"
Resource: "*"