【问题标题】:AWS Serverless Error for Provider variables - Trying to populate non string value into a string for variable提供程序变量的 AWS 无服务器错误 - 尝试将非字符串值填充到变量的字符串中
【发布时间】:2020-03-20 21:32:04
【问题描述】:

我正在使用无服务器框架。

我在一个堆栈中创建了 Cognito 用户池并将其导入第二个堆栈。

当我将在第一个堆栈中创建的 Cognito 用户池 ID 的值分配给环境变量时,它可以工作。

但是,当我在为 Cognito Authorizer 创建 ARN 时尝试使用它时,它不起作用。 我收到一个错误 - 尝试将非字符串值填充到变量的字符串中

这是我的 serverless.yml 文件的 sn-p。

service: myservice

plugins:
  - serverless-pseudo-parameters

provider:
  name: aws
  runtime: go1.x
  stage: dev
  region: us-east-1

  cognitoUserPoolId :
    Fn::ImportValue: cloudformation-resources-${self:provider.stage}-CognitoUserPool
  cognitoAppClientId :
    Fn::ImportValue: cloudformation-resources-${self:provider.stage}-CognitoUserPoolClient


custom:

  environment:

    COGNITO_USER_POOL_ID : ${self:provider.cognitoUserPoolId}
    COGNITO_APP_CLIENT_ID: ${self:provider.cognitoAppClientId}

functions:
  myfunction:
    handler: bin/handlers/myfunction
    package:
     exclude:
        - "**/**"
     include:
       - ./bin/handlers/myfunction
    events:         

      - http:
            path: mypath
            method: put
            authorizer:
               name: cognitoapiauthorizer
               arn: arn:aws:cognito-idp:#{AWS::Region}:#{AWS::AccountId}:userpool/${self:provider.cognitoUserPoolId}
            cors: true

任何与缩进相关的问题或在 ARN 等其他变量中的使用方式?

【问题讨论】:

  • 我没有花太多时间在上面,但乍一看,似乎是“arn”问题。 arn: !Sub "arn:aws:cognito-idp:${AWS::Region}:${AWS::AccountId}:userpool/${self:provider.cognitoUserPoolId}"

标签: amazon-web-services amazon-cloudformation serverless-framework


【解决方案1】:

我看到您正在尝试解决错误 Trying to populate non string value into a string for variable。根据我的经验,这意味着变量为空。如果您在 ARN 末尾硬编码 cognitoUserPoolId 会发生什么?错误解决了吗?我怀疑会这样。从那里开始,您应该仔细查看如何声明该变量。您对Fn::ImportValue 的使用可能无法按预期工作。

另外,我肯定会通过验证器运行您的 YAML。冒号前有太多多余的空行和多余的空格,例如COGNITO_USER_POOL_ID : ${self:provider.cognitoUserPoolId}。这些可能会导致问题。保持 YAML 格式整洁。

【讨论】:

  • 迟到的评论,但希望保留可见性:从另一个堆栈输出的导入有点像 special 字符串:您可以将它们独立用作变量,但是当涉及到 ARN 时 - 它们会中断模板的编译
猜你喜欢
  • 2020-03-14
  • 2023-03-22
  • 2022-10-17
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多