【发布时间】: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