标签: aws-lambda

在AWS Lambda上运行时如何解决python中的cx_Oracle问题

在AWS Lambda上进行测试时,遇到了以下错误消息。

Unable to import module 'lambda_handler': No module named 'cx_Oracle'

这个lambda由python代码组成,但是在我的本地主机上特别有效。

另外,我pip install cx_Oracle -t ./在相同级别的lambda_handler.py文件路径上执行了命令,并且上传的zip文件的文件路径在该路径下。

./lambda_handler.py

./cx_Oracle.cp36-win_amd64.pyd

./cx_Oracle-6.4.1.dist-info/*

./cx_Oracle-doc/*
Run Code Online (Sandbox Code Playgroud)

我不明白为什么lambda_handler只能cx_Oracle library在lambda函数中找不到。

我想念什么?

import cx_Oracle
import boto3
from docutils.nodes import row

def lambda_handler(event, context):

    url = 'myOracleUrl'
    user = 'myOralceUserId'
    pwd = 'myOraclePwd'
    con = cx_Oracle.connect(user + '/' + pwd + '@' + url)
    cur = con.cursor()
    cur.execute("select 1 from dual")
    cur.close()
    con.close()

    return {
        "statusCode": 200,
        "body": context.invoked_function_arn
    }
Run Code Online (Sandbox Code Playgroud)

python cx-oracle amazon-web-services aws-lambda

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

Lambda和DynamoDB上的无服务器CMS

我正在考虑启动一个开源项目,以开发基于AWS技术的无服务器CMS。我想将DynamoDB作为存储数据的后端,而不是使用简单的markdown CMS。我想从这里的社区中了解这个想法是否合理并且听起来不错,因为我在AWS方面有一定的经验,因此对它并不完全坚定并寻求帮助。

我将通过Lambda在ASP.NET MVC Core中开发CMS。此CMS将具有一个外部API,该外部API将是ASP.NET MVC Core Web API。

我还需要考虑运行此CMS的成本,例如,您认为与传统CMS相比,或者DynamoDB是否可以榨取大量果汁,运行起来会便宜吗!!!

amazon-dynamodb asp.net-mvc-5 aws-lambda aws-api-gateway

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

如何使用无服务器框架通过AWS API网关返回用Node.js编写的AWS Lambda函数的错误?

我正在编写供内部使用的API,并且这是我第一次使用无服务器框架。我正在Node.js中编写Lambda函数,并使用AWS API Gateway进行连接。

在某些情况下,我想返回一个自定义错误消息,而我试图编写一个允许我执行此操作的函数。现在,每当Lambda进程失败时,我都会从API收到一条标准消息。在代码中,如果我尝试使用杀死进程process.exit(1),即使我已经使用callback()以下命令返回了错误,也会收到一般错误:

{
    "message": "Internal server error"
}
Run Code Online (Sandbox Code Playgroud)

如果不使用process.exit(1),我会callback()在日志中看到通过错误返回的错误,但是该过程继续进行,最终超时:

{
    "message": "Endpoint request timed out"
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种使用该callback()方法返回错误的方法,但是到目前为止,我还没有成功。我试过这种方法:

async function return_error(callback, context, error, returnCode){
  console.error("FATAL ERROR: ", error);
  let ErrorObj = {
    errorType : "InternalServerError",
    httpStatus : 500,
    requestId : context.awsRequestId,
    errorMessage : error
}
  callback(JSON.stringify(ErrorObj));
  process.exit(1);
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

async function return_error(callback, error, returnCode){
  console.error("FATAL ERROR: ", error);
  callback({
    isBase64Encoded: false,
    statusCode: returnCode,
    headers: { 'Content-Type': 'application/json' …
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda aws-api-gateway serverless-framework serverless

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

如何为引用了Amazon AWS上托管的ASP.NET Web API的本地文件启用CORS

因此,当我打开引用托管ASP.NET Web API 2.0项目的文件时,出现错误:

可能存在跨域(CORS)问题?URL来源(https://secreturl.amazonaws.com)与页面(file://)不匹配。检查服务器是否返回正确的“ Access-Control-Allow- *”头。

我仅获得为HTTP请求管道启用核心的答案,而没有获得针对(file://)的答案。我从index.html文件中打开文件,其路径为:file:///C:/Users/PCName/desktop/index.html我认为必须在Startup.cs文件中启用CORSASP.NET Core Web API 2.0

c# amazon-web-services aws-lambda asp.net-core-2.0

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

如何设置PyCharm以在本地计算机上开发AWS Lambda功能?

我期待使用PyCharm在python中开发一些AWS lambda函数。如何设置我的IDE以在本地开发和测试功能?专家可以指导如何设置吗?任何链接或相关教程将非常有帮助。

python amazon-web-services python-3.x aws-lambda

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

API网关授权者和注销(性能/安全注意事项)

我正在使用Cognito,API网关和授权者。授权者配置为缓存5分钟以提高性能。我觉得这是一个不错的功能。

我知道授权者是将身份验证逻辑放在一个地方的好方法,并且应用程序可以假定用户已被授权。但是,我对此表示怀疑。

渗透测试报告建议,一旦注销,令牌就不能使用。因此,为了安全起见,我不应该启用授权者缓存吗?这也意味着所有经过身份验证的API都要经过一个lambda授权者的开销...

同样从编码的角度来看,使用很难进行端到端测试的授权者真的是一个好主意吗?我可以将lambda函数作为一个单元进行测试。但是对我来说更重要的是它们已连接到正确的API。我目前无法看到可以轻松测试的方法。

另一个问题是查看代码,我再也无法轻易分辨出需要什么授权……我必须查看应该附加哪个授权者(例如CloudFormation),然后查看lambda代码本身。

使用授权者有什么好处吗?或实际上最佳做法是什么?

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

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

我应将哪种类型的TypeTypescript的AWS Lambda响应返回给AWS API网关方法响应套件?

我想在AWS lambda上构建适当的打字稿项目。

现在,我有以下定义:

export type HttpResponse = {
  statusCode: number;
  headers: {};
  body: string;
}

export async function readCollection (event, context, callback): Promise<HttpResponse>{

  console.log(event); // Contains incoming request data (e.g., query params, headers and more)

  const data =  [
    {
      id: "a7b5bf50-0b5b-11e9-bc65-6bfc39f23288",
      name: "some thing",
      uri: `/notifications/a7b5bf50-0b5b-11e9-bc65-6bfc39f23288`
    }
  ]

  const response = {
    statusCode: 200,
    headers: {
    },
    body: JSON.stringify({
      status: "ok",
      data: data
     })
  };

  return response;
};
Run Code Online (Sandbox Code Playgroud)

但

除了使用自定义HttpResponse类型,我还想使用一个官方定义。

但是我要导入和返回哪种正式类型?

typescript aws-lambda aws-api-gateway

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

从Node.js中的AWS Lambda函数返回的正确方法是什么?

我是AWS Lambda的新手,有一件事我感到非常困惑。

到目前为止,我发现了以下选项如何从Node.js中的函数返回:

1。

exports.handler = (event, context) => {
    context.succeed('ok');
}
Run Code Online (Sandbox Code Playgroud)

2。

exports.handler = (event, context) => {
    context.done(null, 'ok');
}
Run Code Online (Sandbox Code Playgroud)

3。

exports.handler = (event, context, callback) => {
    callback(null, 'ok');
}
Run Code Online (Sandbox Code Playgroud)

4。

exports.handler = async event => {
    return "ok";
}
Run Code Online (Sandbox Code Playgroud)

这些有什么不同?功能或性能上有区别吗?

谁能解释如何以正确的方式终止功能?

node.js aws-lambda

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

如何在C#中的AWS Lambda Project中设置和获取环境变量

我已经AWS Lambda Project在C#(NOT Serverless Application)中创建了

在此处输入图片说明

我在aws-lambda-tools-defaults.json下面定义了一个环境变量

"environment-variables": {
 "my-api": "http://myapihost.com/api/attendance-backfill"
 }
Run Code Online (Sandbox Code Playgroud)

在Function.cs中,按如下所示获取值

   var apiUrl = Environment.GetEnvironmentVariable("my-api").ToString();
Run Code Online (Sandbox Code Playgroud)

但是它总是像null。

如何设置和获取环境变量?

谢谢!

根据评论。

launch-settings.json

Function.cs

c# environment-variables amazon-web-services aws-lambda asp.net-core

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

Lambda触发器回调与context.done

我在这里遵循指南来设置预注册触发器。

但是,当我使用callback(null, event)lambda函数时,它实际上将永远不会返回,并且最终会导致错误

{代码:“ UnexpectedLambdaException”,名称:“ UnexpectedLambdaException”,消息:“ arn:aws:lambda:us-east-2:642684845958:function:proj-dev-confirm-1OP5DB3KK5WTA失败,并在调用Lambda函数时出现错误套接字超时。” }

我在这里找到了一个类似的链接,说要使用context.done()。

切换后,它可以正常工作。

有什么不同?

exports.confirm = (event, context, callback) => {
    event.response.autoConfirmUser = true;
    context.done(null, event);
    //callback(null, event); does not work
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js amazon-cognito aws-lambda amazon-cognito-triggers

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