你所描述的一种保护形式的节流是完全可行的:) 而无需创建第二个 虚函数 如你所描述的那样
Lambdas带来了 保留并发 限制,使您可以设置最大并发接受的lambdas数。如果请求数超过该限制,则溢出请求将收到错误500响应。
要设置并发限制,您有以下几种选择:
在AWS控制台内导航到lambda,在配置页面中向下滚动到 并发 框,然后选择 保留并发 (输入您想要的号码50)
要修改 保留并发 通过命令行使用以下内容 命令 :
aws lambda put-function-concurrency --function-name YOUR_FUNCTION_NAME_HERE --reserved-concurrent-executions 50
如果使用无服务器框架部署功能,则可以修改 保留并发 对于任何内部的lambda function 你文件的一部分。
function
service: stackoverflow # NOTE: update this with your service name provider: name: aws runtime: python3.7 stage: ${opt:stage, 'dev'} region: ${opt:region, 'us-east-1'} profile: ${opt:profile, 'default'} environment: region: ${self:provider.region} stage: ${self:provider.stage} stackTags: Owner : krapes Project : concurrencyLimits Service : concurrencyLimits Team : brokenLeg stackPolicy: # This policy allows updates to all resources - Effect: Allow Principal: "*" Action: "Update:*" Resource: "*" iamRoleStatements: functions: dummy: handler: dummy.main timeout: 10 ## This parameter sets the reserved concurrency for the lambda 'dummy' reservedConcurrency: 50 # events: # - http: # method: GET # path: /dummy # resp: json #plugins: # - serverless-python-requirements custom: pythonRequirements: dockerizePip: non-linux
现在,当 测试 你的lambda,你会看到的 同 该 保留并发 设置超额请求时返回错误500代码,从而保护系统。
Details (average, fastest, slowest): DNS+dialup: 0.0009 secs, 2.0200 secs, 6.0415 secs DNS-lookup: 0.0002 secs, 0.0000 secs, 0.0185 secs req write: 0.0000 secs, 0.0000 secs, 0.0030 secs resp wait: 3.5561 secs, 2.0199 secs, 6.0414 secs resp read: 0.0001 secs, 0.0000 secs, 0.0032 secs Status code distribution: [200] 5000 responses
Details (average, fastest, slowest): DNS+dialup: 0.0007 secs, 0.0094 secs, 5.6580 secs DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0119 secs req write: 0.0000 secs, 0.0000 secs, 0.0033 secs resp wait: 1.1845 secs, 0.0093 secs, 5.5826 secs resp read: 0.0000 secs, 0.0000 secs, 0.0032 secs Status code distribution: [200] 1638 responses [500] 3362 responses
你可以简单地设置一个 功能级并发限制 这个Lambda函数的50。
不确定“未经身份验证的凭据”是什么意思?如果您希望客户端直接调用Lambda函数,那么您的客户端需要凭据以及允许Lambda调用的关联策略。