Aws lambda 无服务器框架:CloudFormation变量导入/导出

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

我使用的是无服务器框架,有多个服务试图使用同一个SQS队列。我可以成功地在第一个服务中创建资源,但第二个服务在部署到AWS时缺少lambda触发器。硬编码ARN ID将成功触发,因此我只能假设我的语法/缩进有问题,但这与我导出/导入API网关详细信息的方式非常相似,我只是没有看到它

我设置了一个SQS队列,并从我的第一个服务导出,如下所示:

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键,而不是导出名称(这是公认的混淆)