标签: aws-lambda

如何导入 LambdaContext?

我正在制作 AWS Lambda 函数。现在我想要isinstance(context,LambdaContext),我期待它在 AWS Lambda 中工作。但我在本地运行单元测试。

那么如何导入 LambdaContext。

最好的事物

python amazon-web-services aws-lambda

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

每 5 秒调用一次 Lambda 函数

我的问题

我想每 5 秒调用一次 AWS Lambda 函数,用于某些监控目的。

根据文档,

不支持小于一分钟的速率频率。

我试过什么

STFW。

我的问题

我可以每 5 秒自动调用一次 AWS Lambda 函数吗?

cron amazon-web-services aws-lambda

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

如何在 lambda 中使用 axios?

我是否必须在本地安装 axios 模块,然后将其部署到 lambda,或者有没有办法通过内联代码编辑器以及在浏览器中执行此操作?

amazon-web-services alexa aws-lambda alexa-skills-kit axios

10
推荐指数
4
解决办法
2万
查看次数

是否可以在运行时更改 AWS Lambda 的日志级别?

我在 AWS 上运行 Lamba,并使用 slf4j 进行日志记录

项目要求的一部分是可以在运行时设置日志级别,使用环境变量,但我不确定这是否可能

我正在使用以下代码,但将 UI 中的环境变量“LOG_LEVEL”更改为“DEBUG”对添加到 CloudWatch 日志的内容没有影响。这可能吗?

import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyLambdaHandler implements RequestHandler<Integer, String> {

    private static final Logger LOGGER = LoggerFactory.getLogger(MyLambdaHandler.class);

    static {
        org.apache.log4j.Logger rootLogger = LogManager.getRootLogger();
        String logLevel = (System.getenv("LOG_LEVEL") != null) ? System.getenv("LOG_LEVEL") : "INFO";
        rootLogger.setLevel(Level.toLevel(logLevel));
    }

    public String myHandler(int myCount, Context context) {

        LOGGER.debug("Entering myHandler lambda handler";
        LOGGER.info("Handling myCount {}", myCount);
        int returnValue = myCount * 2;
        LOGGER.debug("MyHandler return value {}", returnValue);
        return returnValue; …
Run Code Online (Sandbox Code Playgroud)

logging log4j slf4j aws-lambda log-level

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

CloudWatch Insights:获取错误 lambda 的日志

一个 lambda 可以有一个成功或错误的结果。

我想查看错误的 lambda 日志。我正在尝试通过 CloudWatch Insights 查询来做到这一点。

我怎样才能做到这一点?

amazon-cloudwatch aws-lambda amazon-cloudwatchlogs aws-cloudwatch-log-insights

10
推荐指数
3
解决办法
6112
查看次数

不能在 Lambda 函数的模块外使用 import 语句

我创建了一个 lambda 函数来获取存储在 dynamodb 中的项目列表。然后我执行了 npm run build 命令,之后我得到了 .js 文件。我将 dist 内容与节点模块、webpack.config.js 和 package.json 一起压缩并上传。当我尝试对其进行测试时,出现以下错误。但据我检查,代码中没有错误。

{
  "errorType": "Runtime.UserCodeSyntaxError",
  "errorMessage": "SyntaxError: Cannot use import statement outside a module",
  "trace": [
    "Runtime.UserCodeSyntaxError: SyntaxError: Cannot use import statement outside a module",
    "    at _loadUserApp (/var/runtime/UserFunction.js:98:13)",
    "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
    "    at Object.<anonymous> (/var/runtime/index.js:43:30)",
    "    at Module._compile (internal/modules/cjs/loader.js:956:30)",
    "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)",
    "    at Module.load (internal/modules/cjs/loader.js:812:32)",
    "    at Function.Module._load (internal/modules/cjs/loader.js:724:14)",
    "    at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)",
    "    at internal/main/run_main_module.js:17:11"
  ]
}
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda

10
推荐指数
2
解决办法
7231
查看次数

Python 中的 AWS Lambda:在 Lambda 函数处理程序中导入父包/目录

我在我的无服务器应用程序(避免混乱的最简单应用程序)中有一个类似于以下的目录结构,我使用 AWS SAM 和 Python 3.8 作为运行时创建了它:

??? common
?   ??? a.py
??? hello_world
?   ??? __init__.py
?   ??? app.py
?   ??? requirements.txt
??? template.yaml
Run Code Online (Sandbox Code Playgroud)

我想common/a.py在 Lambda 处理程序中导入模块 - hello_world/app.py。现在我知道我可以通过将路径添加到or来在 Python 中正常导入它,但是当代码在 Docker 容器内的 Lambda 中运行时它不起作用。调用时,Lambda 处理函数在目录内运行,不考虑文件夹结构。PYTHONPATHsys.path/var/task

我尝试插入/var/task/common, /var/common,/var甚至像这样/common以sys.path编程方式插入:

import sys
sys.path.insert(0, '/var/task/common')
from common.a import Alpha
Run Code Online (Sandbox Code Playgroud)

但我仍然收到错误:

ModuleNotFoundError: No module named 'common'

我知道Lambda 层,但鉴于我的场景,我想直接引用多个 Lambda 函数中的公共代码,而无需上传到层。我想serverless-python-requirements在无服务器框架中但在 …

python python-3.x aws-lambda aws-sam-cli aws-sam

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

通过链接 API 密钥、使用计划和 Cognito 构建可计费的 API

我一直在使用 AWS API Gateway、Lambda 和无服务器框架构建无服务器 REST API。我想建立一个用户注册的网站,选择一个 API 计划(免费、基本、专业)并获得相应的长期 API 密钥,他们可以使用该密钥每月查询一定次数的无服务器 API。

我知道使用 Cognito 和自托管 UI,您可以使用 CUP(Cognito 用户池)令牌轻松处理用户身份验证,这些令牌实际上是 Json Web 令牌。我想自动创建 API 密钥并将其关联到使用计划,然后关联到 Cognito 用户。

第一部分很简单:使用 AWS Javascript SDK,只需执行以下操作:

var params = {
  keyId: 'whateverKeyId', /* required */
  keyType: 'API_KEY', /* required */
  usagePlanId: 'whateverUsagePlanId' /* required */
};
apigateway.createUsagePlanKey(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
Run Code Online (Sandbox Code Playgroud)

我在第二部分苦苦挣扎......我应该将 API 密钥作为自定义属性添加到用户池中吗?但是,我真的不知道如何检索 API 密钥。该文件是不是真的清楚。注册后将用户和 API Key 添加到我自己的 DynamoDB 数据库中(这真的会浪费 Cognito)? …

api-key amazon-web-services amazon-cognito aws-lambda

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

AWS CDK 将 API 网关 URL 传递到同一堆栈中的静态站点

我正在尝试在单个堆栈中部署 S3 静态网站和 API 网关/lambda。

S3 静态站点中的 javascript 调用 lambda 来填充 HTML 列表,但它需要知道用于 lambda 集成的 API 网关 URL。

目前,我像这样生成了一个 RestApi ......

    const handler = new lambda.Function(this, "TestHandler", {
      runtime: lambda.Runtime.NODEJS_10_X,
      code: lambda.Code.asset("build/test-service"),
      handler: "index.handler",
      environment: {
      }
    });

    this.api = new apigateway.RestApi(this, "test-api", {
      restApiName: "Test Service"
    });    

    const getIntegration = new apigateway.LambdaIntegration(handler, {
      requestTemplates: { "application/json": '{ "statusCode": "200" }' }
    });

    const apiUrl = this.api.url;
Run Code Online (Sandbox Code Playgroud)

但是在 cdk 部署上,apiUrl =

"https://${Token[TOKEN.39]}.execute-api.${Token[AWS::Region.4]}.${Token[AWS::URLSuffix.1]}/${Token[TOKEN.45]}/"

因此,直到静态站点需要该值之后,才会解析/生成 url。

如何计算/查找/获取 API 网关 URL 并更新 cdk …

aws-lambda aws-api-gateway aws-cdk

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

.NET Core 3.1 - 组件依赖解析失败 - AWS Mock Lambda 测试工具

我创建了一个新的 AWS Lambda .NET Core 3.1 项目,然后使用 AWS Lambda 测试工具运行它,然后我按预期得到了这个页面:

在此处输入图片说明

但是,如果我安装这些软件包之一:

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.Data.SqlClient

当我运行时,出现此错误并且无法打开测试页面:

AWS .NET Core 3.1 Mock Lambda Test Tool (0.10.0)
Unknown error occurred causing process exit: Dependency resolution failed for component C:\Users\siri\repos\bolao-futebol\website-core\AWSLambda1\bin\Debug\netcoreapp3.1\AWSLambda1.dll with error code -2147450740. Detailed error: Error:
An assembly specified in the application dependencies manifest (AWSLambda1.deps.json) was not found:
package: 'runtime.win-x64.runtime.native.System.Data.SqlClient.sni', version: '4.4.0'
path: 'runtimes/win-x64/native/sni.dll'

at System.Runtime.Loader.AssemblyDependencyResolver..ctor(String componentAssemblyPath)
at Amazon.Lambda.TestTool.Runtime.LambdaAssemblyLoadContext..ctor(String lambdaPath) in C:\codebuild\tmp\output\src142363207\src\Tools\LambdaTestTool\src\Amazon.Lambda.TestTool\Runtime\LambdaAssemblyLoadContext.cs:line 28
at Amazon.Lambda.TestTool.Runtime.LocalLambdaRuntime.Initialize(String directory, IAWSService awsService) in C:\codebuild\tmp\output\src142363207\src\Tools\LambdaTestTool\src\Amazon.Lambda.TestTool\Runtime\LocalLambdaRuntime.cs:line 71
at Amazon.Lambda.TestTool.Runtime.LocalLambdaRuntime.Initialize(String directory) …
Run Code Online (Sandbox Code Playgroud)

c# aws-lambda .net-core-3.1

10
推荐指数
2
解决办法
2669
查看次数