小编rhy*_*thm的帖子

使用Serverlesss Framework在API Gateway和Lambda上提供多个api版本

我正在使用API​​ Gateway和Lambda(无服务器框架)构建无服务器应用程序,并试图找到一种方法来提供应用程序API的多个版本。

这是我能想到的方式。

无服务器

 handler: list.handler
 events:
     - http:
         path: {ver}/list
         method: get
         cors: true
         authorizer: aws_iam
Run Code Online (Sandbox Code Playgroud)

list.js

 export async function handler(event, context, callback) {
     const ver = event.pathParameters.ver;
     if (ver >= '1.0') {
         return fooUtil.getNo(ver);
     } else {
         return 1;
     }  
 }
Run Code Online (Sandbox Code Playgroud)

fooUtil.js

 export function getNo(ver) {
     if (ver >= 1.3) {
         return 3;
     } else {
         return 2;
     }
 }
Run Code Online (Sandbox Code Playgroud)

但是,我需要以这种方式将“ ver”参数传递给所有函数。

有什么方法可以更容易(并且可以测试)从如下所示的请求中获取版本号?

fooUtil.js

 export function getNo() {
     if (session.getValue('ver') >= 1.3) {
     }
 }
Run Code Online (Sandbox Code Playgroud)

我不希望划分存储库或git分支来管理多个版本。

amazon-web-services aws-lambda aws-api-gateway serverless-framework serverless-architecture

5
推荐指数
1
解决办法
1231
查看次数

在不超过速率限制的情况下尽快通过 SES 发送电子邮件

我目前正在使用 SendGrid 从许多无服务器 Node.js Lambda 函数发送电子邮件,并计划从 SendGrid 转移到 SES(因为价格合理)。

SendGrid 的速率限制如此之高,以至于通过某些 lambda 函数同时使用 for 循环向用户发送电子邮件永远不会造成问题。但SES的速率限制较低(我的例子是每秒50封电子邮件),并且会出现超出最大发送速率限制的错误。

如何才能在不超过速率限制的情况下尽可能快地发送电子邮件?

我当前的计划是通过许多 lambda 函数向 SQS 队列发送电子邮件请求,并通过 1 个不停运行的 Lambda 函数接收 SQS 消息以发送电子邮件。但我不知道如何控制向SES发送请求的速度。

email rate-limiting node.js amazon-ses aws-sdk

3
推荐指数
1
解决办法
5907
查看次数

Laravel 缓存不存储空值

我正在使用 Laravel 5.2 并希望缓存 eloquent 结果,但它不会在缓存中存储空结果(= null)。有什么办法吗?

return Cache::remember("cacheKey_{$id}", 120, function () use ($id) {
  return FooModel::where(...)->first();
});
Run Code Online (Sandbox Code Playgroud)

当结果不为空时,缓存工作正常。

caching laravel eloquent laravel-5

2
推荐指数
1
解决办法
4067
查看次数

特定用户的 IP 地址限制 - AWS / Cognito / IAM / API Gateway

我正在使用 API Gateway 和 Lambda 构建一个无服务器 Web 应用程序,它限制 Cognito 和 IAM 对注册用户的 API 调用。我们有个人/企业用户,希望对特定企业用户设置额外的访问限制。

所以就有了如下的用户组。

  • 个人用户可以从任何地方访问
  • A公司用户只能从A网络访问
  • B公司用户只能从B网络访问
  • C 公司用户可以从任何地方访问

控制这种访问限制的有效方法是什么?

amazon-iam amazon-cognito aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
4951
查看次数

Laravel Eloquent 在调用 save() 后重置主键值

我正在使用 Laravel 5.2,当我插入模型时,主键 id 列以某种方式重置为 0。发生的事情如下。

$fooModel = new FooModel();
$fooModel->foo_id = 123;
$fooModel->foo_title = 'foo';
echo($fooModel->foo_id); //123
$fooModel->save();
echo($fooModel->foo_id); //0
Run Code Online (Sandbox Code Playgroud)

数据成功插入到 MySQL 数据库,但 foo_id 列在 PHP 中重置为 0。如果它是一个自动增量列,我知道它会被下一个序列值更新,但这个列不是。有什么我想念的吗?

class FooModel extends Model
{
    protected $table = 'foo_table';
    protected $primaryKey = 'foo_id';
    protected $guarded = ['foo_id'];
    protected $casts = [
        'foo_id' => 'integer'
    ];
}
Run Code Online (Sandbox Code Playgroud)

laravel eloquent laravel-5

1
推荐指数
1
解决办法
1002
查看次数