Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用无服务器访问SSM变量_Node.js_Amazon Web Services_Serverless Framework - Fatal编程技术网

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: "*"