标签: aws-serverless

aws sam 发布/部署流程

我没有完全掌握使用 sam 发布/部署的流程。我最大的问题是我的 sam 模板声明了 aAWS::Serverless::Function并且 CodeUri 参数强制我输入 s3 存储桶 url。

我见过一些示例,其中 CodeUri 只是计算机上代码资源的路径。当我尝试这个时,萨姆抱怨道

“CodeUri”不是具有可选 versionId 查询参数的“s3://bucket/key”形式的有效 S3 Uri。

为了解决这个问题,我必须

  • 将函数的 CodeUri 更改为模板中代码的根文件夹
  • 进入AWS控制台,删除我的s3存储桶中的资源,否则sam包不会上传
  • 运行 sam package 上传我更新的代码资源
  • 复制新的 s3 资源密钥
  • 返回我的模板并将 CodeUri 替换为新的 s3 存储桶 uri
  • 运行 sam 部署

这是非常令人讨厌的。

我缺少什么?

{ 
    "Description" : "Serverless backend",
    "Transform" : "AWS::Serverless-2016-10-31",
    "Globals" : {
    },
    "Resources" : {
        "db" : {
            "Type": "AWS::RDS::DBInstance",
            "Properties" : {
                "AllocatedStorage": "20",
                "DBInstanceClass": "db.t2.micro",
                "DBName": "nameforthedb",
                "DeleteAutomatedBackups": true,
                "Engine": "postgres",
                "MasterUsername": "masterUserName",
                "MasterUserPassword": …
Run Code Online (Sandbox Code Playgroud)

aws-lambda aws-sam-cli aws-serverless

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

具有ID的API不包含路径/ *的资源,该资源的ANY方法具有集成LAMBDA

.net核心无服务器Web api我正在尝试与lambda和api网关进行代理集成,而AWS控制台一切正常

但是我在尝试与cli集成时遇到了aws cli命令的问题,但lambda没有正确集成

aws apigateway create-resource --rest-api-id id --parent-id id --path-part {proxy+}


aws apigateway put-method --rest-api-id id --resource-id id --http-method ANY --authorization-type "NONE" 


aws apigateway put-integration --rest-api-id id --resource-id id --http-method ANY --type HTTP_PROXY --integration-http-method ANY --uri arn:aws:apigateway:us-east-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-east-2:account_id:function:helloworld/invocations 


aws lambda add-permission --function-name helloworld --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn arn:aws:execute-api:us-east-2:account_id:apiid/*/*/* --statement-id 12345678
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cli aws-lambda asp.net-core-webapi aws-serverless

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

AWS Serverless-Image-handler v3.x因AWS Lamdba执行环境的更改而中断

我们正在使用v3版本的AWS无服务器图像处理程序来为我们的站点进行图像处理。但是,当AWS发布此更新时,整个事情就坏了。不幸的是,由于以下原因,新版本(v4)不适用于Thumbor样式请求:

我如何在新版本的AWS serverless-image-handler上启动并运行,而不必对应用程序进行重大更改(即,我想继续使用Thumbor样式请求,但使用v4的serverless-image -处理程序)?

image-processing amazon-web-services node.js aws-lambda aws-serverless

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

Streams 和 Firehose 的用例是什么?

我正在开发一个可以读取和分析支付交易日志的应用程序。我知道我会根据我的要求使用 Kinesis Analytics,它从 Data Streams 和 Firehose 获取输入。但是我在决定我的系统应该使用哪种输入法时遇到了麻烦。我的要求是:

  1. 它可以容忍延迟,但数据不应该丢失数据。
  2. 必须记录 DynamoDB 或 S3 存储桶中的所有错误。

哪个输入流适合我的用例?

amazon-web-services data-stream amazon-kinesis aws-lambda aws-serverless

9
推荐指数
3
解决办法
2991
查看次数

无服务器 - 部署期间出现“未知对象类型异步函数”错误

今天早上,我项目的无服务器部署开始失败。我没有更改代码中的任何内容,最后一次成功部署大约是在一周前。

这是部署日志:

Error --------------------------------------------------
 
  Error: Unknown object type "asyncfunction"
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:218:17)
      at Object._function (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:319:14)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object._function (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:319:14)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach (<anonymous>)
      at Object._object (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:242:21)
      at Object.dispatch (/usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:185:30)
      at /usr/local/lib/node_modules/serverless/node_modules/object-hash/index.js:246:18
      at Array.forEach …
Run Code Online (Sandbox Code Playgroud)

serverless aws-serverless

9
推荐指数
3
解决办法
3272
查看次数

即使有 0 个连接,Aws Aurora Serverless v2 也不会缩减至 0.5 ACU

我正在运行一个 v2 实例,并且根据 aws 文档,您应该只为实际使用的资源付费。我有一个实例,大多数时候连接数为 0,但它永远不会缩减到 2 个 ACU 以下。请参阅下面的图片以供参考。我的实例设置在 0.5-16ACU 之间扩展。但负载似乎并不重要,它始终保持在 2ACU 的基线。

在此输入图像描述

在此输入图像描述

在此输入图像描述

amazon-rds aws-serverless aws-aurora-serverless

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

Yaml-schema 抛出不正确的错误消息

我收到String is longer than the maximum length of 1.yaml-schema: AWSDynamoDBTableAttributeDefinition 以下代码块的错误

TodosTable:
  Type: AWS::DynamoDB::Table
  Properties:
    TableName: Todos-${self:provider.stage}
    AttributeDefinitions:
      - AttributeName: todoId
        AttributeType: S
      - AttributeName: createdAt
        AttributeType: S
      - AttributeName: name
        AttributeType: S
      - AttributeName: dueDate
        AttributeType: S
    KeySchema:
      - AttributeName: todoId
        KeyType: HASH
      - AttributeName: createdAt
        KeyType: RANGE
    BillingMode: PAY_PER_REQUEST
    StreamSpecification:
      StreamViewType: NEW_IMAGE
    LocalSecondaryIndexes:
      - IndexName: todoNameIndex
        KeySchema:
          - AttributeName: todoId
            KeyType: HASH
          - AttributeName: name
            KeyType: RANGE
        Projection:
          ProjectionType: ALL
Run Code Online (Sandbox Code Playgroud)

解释: yaml 模式似乎将AttributeName与混淆了AttributeType。因为它期望字符串只有一个字符。 …

yaml serverless aws-serverless

9
推荐指数
0
解决办法
217
查看次数

无服务器:通过调用方法触发并忘记无法正常工作

我有一个无服务器的 lambda函数,在其中我想触发(调用)一个方法而忘记它

我用这种方式做

   // myFunction1
   const params = {
    FunctionName: "myLambdaPath-myFunction2", 
    InvocationType: "Event", 
    Payload: JSON.stringify(body), 
   };

   console.log('invoking lambda function2'); // Able to log this line
   lambda.invoke(params, function(err, data) {
      if (err) {
        console.error(err, err.stack);
      } else {
        console.log(data);
      }
    });


  // my function2 handler
  myFunction2 = (event) => {
   console.log('does not come here') // Not able to log this line
  }
Run Code Online (Sandbox Code Playgroud)

我注意到,直到并且除非我执行Promise returnin myFunction1,否则它不会触发myFunction2,但是不应该设置lambda InvocationType = "Event"意味着我们希望此操作被触发并忘记并且不关心回调响应吗?

我在这里想念什么吗?

非常感谢您的帮助。

javascript aws-lambda serverless aws-lambda-edge aws-serverless

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

如何将graphql Union 从python lambda 返回到AWS appsync?

是否可以Union从 python lambda用 graphql 进行响应?如何? 这似乎是可能的,但我无法超越它。

我包含了一个__typename属性,但大多数情况下我都会收到此错误:

{'errorType': 'BadRequestException', 
 'message': "Could not determine the exact type of MealMix. Missing __typename key on value.'"}
Run Code Online (Sandbox Code Playgroud)

MealMix 是我的工会,架构如下所示:

type Meal { name: String }
type OtherMeal { name: String }
union MealMix = Meal | OtherMeal
type Query {
    GetMealMix(identity_id: ID!, date: AWSDate!): [MealMix]
}
Run Code Online (Sandbox Code Playgroud)

查询是:

        query test_query {
            GetMealMix(identity_id: "this", date: "2020-11-20") {
                ... on Meal {name}
                ... on OtherMeal {name}
            }
        }
Run Code Online (Sandbox Code Playgroud)

我从 lambda 返回:

return …
Run Code Online (Sandbox Code Playgroud)

python aws-appsync aws-serverless

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

上传的文件必须是非空的 zip(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;

我有一个简单的 Express/Node.js 应用程序,其中包含以下没有子目录的文件(除了 .serverless 和 node_modules)。

  • .serverless
  • 节点模块
  • 应用程序.js
  • 拉姆达.js
  • 包.json
  • 包-lock.json
  • 无服务器.yml

AWS 抛出此错误 -发生错误:ApiLambdaFunction - 上传的文件必须是非空 zip(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:5779d4c3-beaa-4bc2-b525-c1e89a82635a;空值)。

当我访问代码上传到的 S3 存储桶时,.zip 文件不是空的。我能够看到 .zip 文件夹及其所有内容,但是,serverless deployAWS CLI的操作失败,引发上述异常。任何帮助将问题归零将不胜感激。谢谢!

以下是代码。

  • 应用程序.js
const express = require("express")
const app = express();

app.use(express.json());
app.use(express.urlencoded({extended: false}));

app.get("/", (req, res) => {
    res.status(200).send("Root endpoint")
})

app.post("/postReq", (req, res) => {
    res.status(200).send(req.body);
})

app.listen(8080, () => console.log("App started."))

Run Code Online (Sandbox Code Playgroud)
  • 拉姆达.js
'use strict'
const awsServerlessExpress = require('aws-serverless-express')
const app = require('./app')
const server = awsServerlessExpress.createServer(app)

exports.handler …
Run Code Online (Sandbox Code Playgroud)

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

8
推荐指数
2
解决办法
4748
查看次数