gpt4 book ai didi

aws-lambda - 如何动态地将 arn cognito 添加到 lambda?

转载 作者:行者123 更新时间:2023-12-04 17:32:57 25 4
gpt4 key购买 nike

我想将 cognito 授权方添加到我的 lambda 函数中,但为此我需要 arn cognito,它是在堆栈构造中创建的(我的资源部分中的 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 属性?

最佳答案

根据 this ,为授权方提供一个名称让您可以使用内部函数来引用 ARN:

graphql:
handler: src/lambda-functions/graphql/index.handler
timeout: 30
memorySize: 2048
events:
- http:
path: graphql
method: any
private: true
cors: true
authorizer:
name: CognitoAuthorizer #supply a unique name here
arn:
!GetAtt CognitoUserPool.Arn

关于aws-lambda - 如何动态地将 arn cognito 添加到 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57888140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com