无服务器中的条件资源
Conditional resource in 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
如果我删除所有参数,它就可以正常工作
Type
必须是 String
,而不是 string
。请参阅文档中的 supported parameter data types section。
我想根据环境变量的存在有条件地添加 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
如果我删除所有参数,它就可以正常工作
Type
必须是 String
,而不是 string
。请参阅文档中的 supported parameter data types section。