【发布时间】:2020-01-13 05:38:42
【问题描述】:
我想将 cognito 授权器添加到我的 lambda 函数中,但为此我需要 arn cognito,它是在堆栈 coud 形成中创建的(我的资源部分中的 CognitoUserPool)。我正在使用无服务器框架。
serverless.yml 文件的一部分
graphql:
handler: src/lambda-functions/graphql/index.handler
timeout: 30
memorySize: 2048
events:
- http:
path: graphql
method: any
private: true
cors: true
authorizer:
arn:
Fn::Join:
- ''
- - 'arn:aws:cognito-idp:'
- ${self:provider.region}
- ':'
- Ref: AWS::AccountId
- ':userpool/'
- Ref: CognitoUserPool
我在部署应用程序时遇到错误:
TypeError: functionArn.split is not a function
在调试时,我发现 Fn::join 的输出应该传递给的函数是 object:
{"Fn::Join":["",["arn:aws:cognito-idp:","eu-west-1",":",{"Ref":"AWS::AccountId"},":userpool/",{"Ref":"CognitoUserPool"}]]}
并且应该传递给已经解析arn的函数例如:
arn:aws:cognito-idp:eu-west-1:XXXXXXXXXX:userpool/eu-west-XXXXXXX
如何强制计算 Fn::join 的输出并将该值传递给 arn 属性?
【问题讨论】:
标签: aws-lambda yaml amazon-cognito serverless-framework aws-serverless