验证 APIGW 正在缓存 Lambda 授权方响应
Verify APIGW is Caching Lambda Authorizer Response
我目前是 运行 API 到 APIGW,端点受 Lambda 授权方保护。为了提高性能,我在 APIGW 中为授权方生成的策略启用了缓存。
但是,我不确定如何有效地测试缓存是否正常工作。是否有一些我可以使用的标准系列调用,或者是否有某种方法可以明确检查是否正在缓存策略?
部分 SAM 模板:
EndpointConfiguration:
Type: PRIVATE
VPCEndpointIds: !Ref VPCEndpoints
Auth:
DefaultAuthorizer: DefAuthorizer
Authorizers:
DefAuthorizer:
FunctionPayloadType: TOKEN
FunctionInvokeRole: !Sub arn:aws:iam::${AWS::AccountId}:role/RoleName
FunctionArn: !ImportValue AuthorizerArn
Identity:
Headers:
- Authorization
ReauthorizeEvery: 3600
我们可以检查两件事:
- 自定义授权器 Lambda 在使用缓存中的策略时根本不会被调用。
- 您可以启用 Api 网关阶段日志到 cloudwatch。您会看到日志记录的差异。
缓存后,您只会看到一个条目 Using valid authorizer policy for principal
当它没有被缓存时,你应该看到额外的整体
- 正在向 https://lambda.us-east-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda... 发送请求。
- 解析前的授权方结果主体:... lambda 返回的完整策略
我目前是 运行 API 到 APIGW,端点受 Lambda 授权方保护。为了提高性能,我在 APIGW 中为授权方生成的策略启用了缓存。
但是,我不确定如何有效地测试缓存是否正常工作。是否有一些我可以使用的标准系列调用,或者是否有某种方法可以明确检查是否正在缓存策略?
部分 SAM 模板:
EndpointConfiguration:
Type: PRIVATE
VPCEndpointIds: !Ref VPCEndpoints
Auth:
DefaultAuthorizer: DefAuthorizer
Authorizers:
DefAuthorizer:
FunctionPayloadType: TOKEN
FunctionInvokeRole: !Sub arn:aws:iam::${AWS::AccountId}:role/RoleName
FunctionArn: !ImportValue AuthorizerArn
Identity:
Headers:
- Authorization
ReauthorizeEvery: 3600
我们可以检查两件事:
- 自定义授权器 Lambda 在使用缓存中的策略时根本不会被调用。
- 您可以启用 Api 网关阶段日志到 cloudwatch。您会看到日志记录的差异。 缓存后,您只会看到一个条目 Using valid authorizer policy for principal
当它没有被缓存时,你应该看到额外的整体
- 正在向 https://lambda.us-east-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda... 发送请求。
- 解析前的授权方结果主体:... lambda 返回的完整策略