Aws lambda 无服务器框架:CloudFormation变量导入/导出
我使用的是无服务器框架,有多个服务试图使用同一个SQS队列。我可以成功地在第一个服务中创建资源,但第二个服务在部署到AWS时缺少lambda触发器。硬编码ARN ID将成功触发,因此我只能假设我的语法/缩进有问题,但这与我导出/导入API网关详细信息的方式非常相似,我只是没有看到它 我设置了一个SQS队列,并从我的第一个服务导出,如下所示:Aws lambda 无服务器框架:CloudFormation变量导入/导出,aws-lambda,yaml,serverless-framework,serverless,aws-serverless,Aws Lambda,Yaml,Serverless Framework,Serverless,Aws Serverless,我使用的是无服务器框架,有多个服务试图使用同一个SQS队列。我可以成功地在第一个服务中创建资源,但第二个服务在部署到AWS时缺少lambda触发器。硬编码ARN ID将成功触发,因此我只能假设我的语法/缩进有问题,但这与我导出/导入API网关详细信息的方式非常相似,我只是没有看到它 我设置了一个SQS队列,并从我的第一个服务导出,如下所示: resources: - Resources: InitializeAuthenticationQueue: Type: "
resources:
- Resources:
InitializeAuthenticationQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "InitializeAuthenticationQueue"
- Outputs:
InitializeAuthenticationQueueArnId:
Value:
Fn::GetAtt:
- InitializeAuthenticationQueue
- Arn
Export:
Name: ${self:provider.stage}-InitializeAuthenticationQueueQueueArnId
functions:
authenticationIntialize:
handler: myHandlerFile.myHandler
events:
- sqs:
arn:
'Fn::ImportValue': ${self:provider.stage}-InitializeAuthenticationQueueArnId
在我的第二个服务中,我尝试使用SQS ARN ID作为函数的触发器,如下所示:
resources:
- Resources:
InitializeAuthenticationQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "InitializeAuthenticationQueue"
- Outputs:
InitializeAuthenticationQueueArnId:
Value:
Fn::GetAtt:
- InitializeAuthenticationQueue
- Arn
Export:
Name: ${self:provider.stage}-InitializeAuthenticationQueueQueueArnId
functions:
authenticationIntialize:
handler: myHandlerFile.myHandler
events:
- sqs:
arn:
'Fn::ImportValue': ${self:provider.stage}-InitializeAuthenticationQueueArnId
我也试过这个,看看我的缩进是否有错:
functions:
authenticationIntialize:
handler: myHandlerFile.myHandler
events:
- sqs:
arn:
'Fn::ImportValue': ${self:provider.stage}-InitializeAuthenticationQueueArnId
我觉得我在这件事上遗漏了一些明显的东西,但我已经被困太久了。有人能帮我找出明显的错误吗?你有哪些错误?生成的
.serverless/cloudformation模板update stack.json
对导出和导入值有什么作用
我通常发现使用内部无服务器CloudFormation属性引用更容易。因此,如果您试图导入SQS ARN,请执行以下操作:
${cf:STACK_NAME.InitializeAuthenticationQueueArnId}
其中STACK_NAME是无服务器部署生成的CloudFormation堆栈的名称,它具有SQS ARN输出。使用此方法,您引用要导入的值的方式是通过CloudFormation键,而不是导出名称(这是公认的混淆)