ProviderARN 需要是有效的 Cognito 用户池

ProviderARNs need to be valid Cognito Userpools

我正在尝试在 sam 模板中使用字符串列表,但它没有按预期工作。有我的代码

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  Sample SAM Template

Parameters:
  CognitoPoolArns:
    Type: List<String>
    Default: "[\"arn:aws:cognito-idp:eu-west-X:XXXXX:userpool/eu-west-XXXXXXX\",\"arn:aws:cognito-idp:eu-west-X:XXXXXX:userpool/eu-west-XXXXXX\",]"
  

Resources:
 Api:
    Type: AWS::Serverless::Api
    Properties:
      StageName: dev
      Name: name
      EndpointConfiguration:
        Type: REGIONAL
      Auth:
        DefaultAuthorizer: MyCognitoAuthorizer
        Authorizers:
          MyCognitoAuthorizer:
            UserPoolArn: !Ref CognitoPoolArns
        

  PingGetFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: lambdas/ping_get/
      FunctionName: get-ping
      Handler: main.lambda_handler
      Runtime: python3.8
      Events:
        API:
          Type: Api
          Properties:
            RestApiId: !Ref Api
            Path: /api/v1/ping
            Method: get

我收到此错误消息:Errors found during import: Unable to create authorizer 'MyCognitoAuthorizer': ProviderARNs need to be valid Cognito Userpools. Invalid ARNs- ["arn:aws:cognito-idp:eu- west-X:XXXX:userpool/eu- west-XXXXX" "arn:aws:cognito-idp:eu- west-X:XXXXXX:userpool/eu- west-XXXXX" ]

但如果我这样做

MyCognitoAuthorizer:
                UserPoolArn: 
                       - arn:aws:cognito-idp:eu-west-X:XXX:userpool/eu-west-XXXXXXXX
                       - arn:aws:cognito-idp:eu-west-X:XXX:userpool/eu-west-XXXXXXXX

它正在工作。我如何通过传递变量来处理这个问题?

如下更改模板中 CognitoPoolArns 参数的默认值以解决错误。

修改后执行sam build命令即可部署成功

Default: "arn:aws:cognito-idp:eu-west-X:XXXXX:userpool/eu-west-XXXXXXX, arn:aws:cognito-idp:eu-west-X:XXXXXX:userpool/eu-west-XXXXXX"