当前位置: 首页 > 知识库问答 >
问题:

如何使用CloudFormation for API Gateway为自定义websocket请求授权器创建lambda权限?

商燕七
2023-03-14

我一直试图为API网关和$connect路由的websockets请求授权程序创建一个lambda权限。AWS文档没有提到为websocket授权程序创建适当的lambda权限。当我尝试连接到我的自定义授权程序时,我总是得到一个500的错误。

由于AWS文档(https://docs.AWS.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-lambda-auth.html)没有提到任何有关此权限的内容,因此我认为必须像创建令牌授权程序一样创建lambda权限。

自定义授权器是用我的CloudFormation脚本创建的,如下所示:

# ***************************************************************
# API Gateway Websocket Authorizer
# ***************************************************************
WebsocketAuthorizer:
    Type: 'AWS::ApiGatewayV2::Authorizer'
    DependsOn: Lambda
    Properties:
        Name: WebsocketAuthorizer
        ApiId:
            Fn::ImportValue:
                !Sub ${Env}-${AWS::Region}-altosignal-global-websockets
        AuthorizerType: REQUEST
        AuthorizerCredentialsArn:
            Fn::ImportValue: 
                !Sub ${Env}-${AWS::Region}-global-iamprocesscommandsfromapigateway-arn
        AuthorizerUri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${Lambda.Arn}/invocations
        IdentitySource: 
            - route.request.querystring.token

当我使用控制台手动创建授权器时,在结束时会得到以下提示:

   LambdaPermission:
        Type: AWS::Lambda::Permission
        DependsOn: 
            - Lambda
            - WebsocketAuthorizer
        Properties:
            Action: lambda:*
            FunctionName: !GetAtt Lambda.Arn
            Principal: apigateway.amazonaws.com
            SourceArn: !Sub 
                - arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${apiId}/${Env}/$connect
                - apiId: 
                    Fn::ImportValue:
                        !Sub ${Env}-${AWS::Region}-altosignal-global-websockets

有人知道websocket API Gateway$connectendpoint的自定义授权器的适当lambda权限设置吗?

共有1个答案

澹台胜
2023-03-14

你肯定需要Lambda的许可。这是我用来设置权限的东西,它工作得很好。我在这里看到的唯一区别是没有给出SourceArn。希望这能给你一个开始的地方。

Permission:
    Type: "AWS::Lambda::Permission"
    DependsOn:
    - "WebsocketApi"
    Properties:
      Action: "lambda:InvokeFunction"
      FunctionName: !GetAtt Lambda.Arn
      Principal:
        Fn::Join:
        - ""
        - - "apigateway."
          - Ref: "AWS::URLSuffix"
 类似资料:
  • 技术栈在前端是reactJS,后端由APIGateway和Lambda供电。我正在使用Auth0作为我的react应用程序中的身份服务。通过Auth0提供的一个社交登录进行身份验证时,我会返回、和。此外,我可以使用获取用户信息,例如。现在,我需要保护/阻止对我的后端即APIGateway和lambda的访问。 有很多选项来保护对AWS APIGateway的访问,如IAM授权器、自定义授权器。有一

  • null 我尝试将@priority(interceptor.priority.platform_beform)和@prematching也放入我的过滤器中,但即使是在OIDC启动后也会调用。 另外,是否有任何方法支持扩展quarkus oidc逻辑以包括自定义代码? 我无法获得oidc和keycloak-auth拦截器的优先级(知道这些可以帮助我决定过滤器的优先级)。请帮忙。

  • 功能说明 目睹直播提供了一系列的授权观看方式,如密码验证,付费观看等,然而由于客户业务的多样性,实现如:接入客户自身账户体系,登陆OA系统后再跳转到目睹观看直播等一系列更高级的授权观看方式,此时就需要使用自定义授权。 自定义授权逻辑图 功能设置 首先,需在 某个频道 - 频道管理 - 授权观看 - 授权类型 中点击自定义授权,并输入您希望在观众进入观看页时跳转的链接,如: http://your-

  • 客户端通过按附录B使用“application/x-www-form-urlencoded”格式向授权端点URI的查询部分添加下列参数构造请求URI: response_type 必需的。值必须设置为“token”。 client_id 必需的。如2.2节所述的客户端标识。 redirect_uri 可选的。如3.1.2节所述。 scope 可选的。如3.3节所述的访问请求的范围。 state 推

  • 客户端通过按附录B使用“application/x-www-form-urlencoded”格式向授权端点URI的查询部分添加下列参数构造请求URI: response_type 必需的。值必须被设置为“code”。 client_id 必需的。如2.2节所述的客户端标识。 redirect_uri 可选的。如3.1.2节所述。 scope 可选的。如3.3节所述的访问请求的范围。 state 推

  • 但是看起来在我的lambda响应和API网关之间发生了一些奇怪的事情, 变量在内部的某个地方被压缩得更低, 而我仍然得到了相同的解析错误, 它会接受其他格式的响应吗?字符串也不起作用。 我还应该尝试什么?我的策略格式错误吗? 我从这些站点获得了两种不同的策略格式- 1。http://docs.aws.amazon.com/apigateway/latest/developerguide/use-c