【问题标题】:Serverless: Serverless error while deployment无服务器:部署时无服务器错误
【发布时间】:2019-09-19 04:46:06
【问题描述】:

由于我是无服务器堆栈的新手,我试图创建一个用于部署的 yml 文件(NodeJS lambda 函数)。但是我可以在部署时发现语法错误。

请在 serverless.yml 下面找到

service: secretManager

provider:
  name: aws
  runtime: nodejs10.x
  timeout: 300
  memorySize: 512
  region: us-east-2
  stage: ${opt:stage,'v1'}
  role: secretManager
  stackTags:
    ApplicationId: ACL_9999999
    Product: secretManager
    Project: secretManager

functions:
  getParams:
    handler: getFromParamStore.getParams
    role: secretManager

resources:
  Resources:
    secretManager:
      Type: AWS::IAM::Role
      Properties:
        Policies:
        - PolicyName: myPolicy
          PolicyDocument:
            Version: '2017'
            Statement:
              - Effect: Allow 
                Action:
                  - logs:CreateLogGroup
                  - logs:CreateLogStream
                  - logs:PutLogEvents
                  - ssm:GetParameters
                  - ssm:GetParameter
                  - ssm:DescribeParameters
                Resource:
                  - 'Fn::Join':
                    - ':'
                    - 'arn:aws:logs'
                    - 'log-group:/aws/lambda/*:*:*'
                    - 'arn:aws:ssm:*:*:parameter/*'

package:
  include:
    - serverless.yml

部署无服务器时会引发错误。

错误:CloudFormation 模板无效:模板错误:每个 Fn::Join 对象都需要两个参数,(1) 字符串分隔符和 (2) 要连接的字符串列表或返回字符串列表的函数(如 Fn::GetAZs)要加入。

enter image description here

请帮忙

【问题讨论】:

    标签: aws-serverless


    【解决方案1】:

    Fn::Join的正确使用方式是:

    resources:
      Resources:
        secretManagerLambdaRole:
          Type: AWS::IAM::Role
          Properties:
            Policies:
              - PolicyName: myPolicy
                PolicyDocument:
                  Version: '2017'
                  Statement:
                    - Effect: Allow
                      Action:
                        - logs:CreateLogGroup
                        - logs:CreateLogStream
                        - logs:PutLogEvents
                        - ssm:GetParameters
                        - ssm:GetParameter
                        - ssm:DescribeParameters
                      Resource:
                        - 'Fn::Join':
                            - ':' # delimiter
                            - - 'arn:aws:logs'
                              - 'log-group:/aws/lambda/*:*:*'
                              - 'arn:aws:ssm:*:*:parameter/*'
    

    第一个参数: 是分隔符,第二个参数是要连接的字符串列表。

    【讨论】:

      猜你喜欢
      • 2021-10-07
      • 2019-01-02
      • 2021-05-12
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2021-01-07
      • 2019-08-26
      相关资源
      最近更新 更多