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"
我正在尝试在 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"