无服务器中的条件资源

时间:2019-02-07 20:16:11

标签: amazon-sqs amazon-sns serverless

我想基于环境变量的存在有条件地添加AWS资源。我尝试了serverless-cloudformation-parameter-setter,但在部署过程中遇到了一般性错误,我看不出该如何解决

我正在尝试部署一个简单的lambda + SQS堆栈,并且如果定义了一个env var,也请将该队列订阅由env var表示的主题-否则,如果未定义var则根本不做那部分,只是lambda和队列

这是我尝试过的:

plugins:
- serverless-cloudformation-parameter-setter

provider:
  name: aws
  runtime: nodejs8.10
  region: eu-west-1

functions:
  update:
    handler: index.update
    events:
    - sqs:
        arn:
          Fn::GetAtt:
          - Queue
          - Arn

custom:
  cf-parameters:
    SourceTopicArn: "${env:UPDATE_SNS_ARN}"

resources:
  Parameters:
    SourceTopicArn:
      Type: string
  Resources:
    Queue:
      Type: "AWS::SQS::Queue"
    Subscription:
      Type: "AWS::SNS::Subscription"
      Condition: SourceTopicArn
      Properties:
        TopicArn:
          Ref: SourceTopicArn
        Endpoint:
          Ref: Queue

我收到的错误是:The CloudFormation template is invalid: Template format error: Unrecognized parameter type: string

如果我删除所有参数,它将正常工作

1 个答案:

答案 0 :(得分:1)

Type必须是String,而不是string。请参阅文档中的supported parameter data types section