标签: serverless

无法在SAM模板中添加策略

我正在研究SAM模板,用于在AWS Serverless存储库中发布我的应用程序。但是,当我尝试为lambda添加策略时,会显示错误消息:Invalid Serverless Application Specification文档。发现的错误数量:1.错误:ID为[SyncPostDataFromSfLambda]的资源无效。“策略”属性中仅支持策略模板。

以下是我的SAM模板的示例:

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Transform": "AWS::Serverless-2016-10-31",
    "Description": "Deployment",
    "Resources": {
        "SyncPostDataToSfLambda": {
            "Type": "AWS::Serverless::Function",
            "Properties": {
                "Handler": "index.handler",
                "FunctionName": "myLambdaFunction",
                "CodeUri": "s3 URL",
                "Runtime": "nodejs6.10",
                "MemorySize": 512,
                "Policies": [
                    "AmazonDynamoDBFullAccess"
                ],
                "Events": {
                    "PostResource": {
                        "Type": "Api",
                        "Properties": {
                            "RestApiId": {
                                "Ref": "API"
                            },
                            "Path": "/apipath",
                            "Method": "post"
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

aws-lambda serverless

6
推荐指数
3
解决办法
5002
查看次数

在无服务器 yml 中从同一文件夹中包含排除包

我有一个 node_modules 文件夹,我只想排除几个模块,但在打包时应该添加其他模块。我该怎么做。还有如何使用正则表达式排除某些模块。就像在我的 node_modules 中,我创建了以 md-request、md-models 等开头的自定义模块,所以我只想从打包中排除这些模块。提前致谢。

amazon-web-services node.js aws-lambda serverless-framework serverless

6
推荐指数
2
解决办法
6726
查看次数

保护未经身份验证的 Cloud Run 端点

当我创建一个未经身份验证的(公共)Cloud Run 端点来托管 API 时,我有哪些选项可以保护此端点免受发出数十亿 HTTP 请求的恶意用户的攻击?

只需 10 美元,您就可以发起第 7 层HTTP 洪水攻击,每秒可以发送 25 万个请求。让我们假设您的 Cloud Run 端点扩展并处理所有请求。仅就调用而言,您将支付 360 美元/小时(每百万个请求 0.40 美元)。

请注意,如果攻击未分布在多个 Cloud Run 终端节点上,您可能会遇到并发限制最大实例限制。我还有哪些其他控件?

据我了解,Cloud ArmorCloud CDN的常用防御绑定到Global Load Balancer,Cloud Run 不可用,但 Cloud Run on GKE 可用。

google-cloud-platform serverless google-cloud-run

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

无服务器框架:输出编译的 CloudFormation

我正在为 lambda 项目使用无服务器框架。我们需要能够直接访问 cloudformation 以满足我们对其他项目的标准。如何查看从 编译的完整 CloudFormation serverless.yml

aws-cloudformation serverless-framework serverless

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

尝试部署无服务器时“发生错误:日志组 - <资源名称> 已存在”

sls deploy -v && sls s3deploy像往常一样运行后,我遇到了这个问题:

...

CloudFormation - CREATE_FAILED - AWS::Logs::LogGroup - CallTextractLogGroup

...

CloudFormation - CREATE_FAILED - AWS::IAM::Role - IamRoleStateMachineExecution
CloudFormation - CREATE_FAILED - AWS::Logs::LogGroup - StartTextractStateMachineLogGroup
CloudFormation - CREATE_FAILED - AWS::Lambda::LayerVersion - Boto3LayerLambdaLayer

...

  Serverless Error ---------------------------------------

  An error occurred: StartTextractStateMachineLogGroup - /aws/lambda/textract-service-dev-startTextractStateMachine already exists.

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com

  Your Environment Information ---------------------------
     OS:                     linux
     Node Version:           12.2.0
     Serverless Version:     1.42.3
Run Code Online (Sandbox Code Playgroud)

我不记得在部署之前做任何更改,除了在Retry我的 Step Function States 中添加部分,这根本不应该与 CF 日志混淆。

我尝试运行 …

amazon-web-services aws-cloudformation aws-lambda amazon-cloudwatchlogs serverless

6
推荐指数
2
解决办法
5016
查看次数

无服务器框架 - 使用 AWS SSM Parameter Store 需要什么权限?

我打开这个问题是因为似乎没有关于此的文档,所以我想在反复试验中浪费大量时间后提供答案。

作为背景,无服务器框架 [允许从 AWS SSM Parameter Store 加载纯文本和 SecureString 值]。1

执行无服务器部署时,访问和加载这些 SSM Parameter Store 值需要什么权限?

amazon-iam aws-lambda serverless-framework serverless aws-serverless

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

与多个无服务器功能共享数据库是一种好习惯吗?

与多个无服务器功能共享数据库是一种好习惯吗?

就像在 CRUD 应用程序中一样,通常创建、更新、删除和读取是共享同一数据库的不同操作。如果我们在无服务器上迁移这个想法,那仍然是理想的吗?所有这些操作都访问同一个数据库。

我的犹豫来自于在不同微服务之间共享数据库的想法。因为这会增加耦合并使事情变得更加脆弱。

microservices aws-lambda serverless

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

如何将 NODE_EXTRA_CA_CERTS 的值传递给使用无服务器部署的 AWS Lambda?

我正在使用Serverless部署 Node AWS Lambda。由于运行此代码的机构的内部要求,我需要通过额外的证书。我能找到的唯一解决方案是将NODE_EXTRA_CA_CERTS作为 CLI 参数传递。使用典型的环境变量(例如在dotenv定义)不起作用,因为此时在 Node 中已经配置了证书。

我的额外证书位于MyCerts.pem项目根目录中,我尝试运行的 Lambda 函数称为function1. 在本地运行 LambdaNODE_EXTRA_CA_CERTS=./MyCerts.pem npx serverless invoke local -f function1 -l可以正常工作。但是,一旦我使用 部署到 AWS npx serverless deploy -v,我就找不到正确包含这些附加证书的方法,包括使用NODE_EXTRA_CA_CERTS=./MyCerts.pem npx serverless invoke -f function1 -l.

我已经尝试了所有我能想到的方法并且不知所措。有人可以帮忙吗?

ssl-certificate amazon-web-services node.js aws-lambda serverless

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

Lambda 会收到已消费的 SQS 消息吗?

我有这样的系统设计

SQS -> 触发器 -> Lambda -> 如果失败 -> DLQ

前提条件

  1. Lambda 函数使用 try catch 块,它不会抛出任何错误。
  2. Lambda 函数永远不会耗尽内存或超时。(来自 Lambda 监控)
  3. Lambda 监控中的错误计数为 0
  4. 切勿使用 SQS 控制台查看消息
  5. Lambda SQS batchSize 设置为 1
  6. DLQ 最大接收设置为 1
  7. Lambda 调用大约 60k

跑了一会后

  1. 我们在 DLQ 中发现了一些消息
  2. DLQ 中的消息具有属性 ApproximateReceiveCount 为 2 或更大。

这是预期的吗?

在我看来,如果 Lambda 中没有错误抛出,DLQ 消息应该始终为零。

amazon-sqs node.js aws-lambda serverless

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

AWS - 在 SNS 订阅或 Lambda 函数上设置死信队列有什么区别?

在 SNS 主题或 Lambda 函数上设置死信队列有什么区别?

我想知道,因为如果您在 SNS 订阅上设置 DLQ,那么当 Lambda(订阅者)失败时,该订阅消息将故障转移到 DLQ,对吗?那么在这种情况下,在这两个地方设置 DLQ 会产生相同的效果吗?

我在 SNS 主题订阅上设置了 DLQ,但它没有“自动”显示为 Lambda 屏幕设置上的 DLQ,所以我认为可能存在一些差异?

SNS 死信队列参考:https : //docs.aws.amazon.com/sns/latest/dg/sns-dead-letter-queues.html

通常,当 Amazon SNS 由于客户端或服务器端错误而无法访问订阅的终端节点时,消息传送会失败。

Lambda 死信队列参考:https : //aws.amazon.com/about-aws/whats-new/2016/12/aws-lambda-supports-dead-letter-queues/

在标准重试策略(失败时额外重试 2 次)用完后,AWS Lambda 会将调用 Lambda 函数的事件对象写入此 [DLQ] 端点。

拉姆达:

拉姆达 dlq

SNS订阅:

在此处输入图片说明

amazon-web-services dead-letter amazon-sns aws-lambda serverless

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