我正在使用AWS Lambda扫描DynamoDB表中的数据.这是我得到的回报:
{
"videos": [
{
"file": {
"S": "file1.mp4"
},
"id": {
"S": "1"
},
"canvas": {
"S": "This is Canvas1"
}
},
{
"file": {
"S": "main.mp4"
},
"id": {
"S": "0"
},
"canvas": {
"S": "this is a canvas"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的前端应用程序正在使用Ember Data Rest Adapter,它不接受此类响应.有什么方法可以获得正常的JSON格式吗?有一个NPM模块被调用dynamodb-marshaler来将DynamoDB数据转换为普通的JSON.如果可能的话,我正在寻找原生解决方案.
我有一个AWS api代理lamba函数.我目前使用不同的端点和单独的lambda函数:
api.com/getData --> getData
api.com/addData --> addData
api.com/signUp --> signUp
Run Code Online (Sandbox Code Playgroud)
管理所有端点和功能的过程变得很麻烦.当我将一个端点用于一个lambda函数时,是否有任何缺点,该函数根据查询字符串决定做什么?
api.com/exec&func=getData --> exec --> if(params.func === 'getData') { ... }
Run Code Online (Sandbox Code Playgroud) 我们已经要求我的学校项目编写一个在AWS Lambda中运行的Java代码.它应该获取特定URL的源代码,然后将其上载到S3存储桶.Java代码应该在AWS Lambda上运行.
我在Java中获取String变量的源代码.然后我有while循环尝试将String写入/ tmp目录中的文件.然后将文件上传到S3.
一切正常,但我遇到了一个特定的URL.我已经跟踪了这个问题:
try {
BufferedWriter out = new BufferedWriter(new FileWriter("/tmp/url.txt"));
out.write(source_code); //Replace with the string
//you are trying to write
out.close();
}
catch (IOException e) {
System.out.println("Exception ");
}
Run Code Online (Sandbox Code Playgroud)
最奇怪的是,当我在本地测试代码时,一切正常.文件在我的计算机上的/ tmp目录中创建,然后上传到S3存储桶.但是,当我在Lambda中运行代码时,我收到以下错误:
Task timed out after 15.00 seconds
Run Code Online (Sandbox Code Playgroud)
知道为什么Lambda在这个特定情况下无法将文件写入临时目录并且与其他人一起使用?
有没有办法在AWS Lambda中执行aws-cli?它似乎没有预先安装.(我通过Node.js子进程检查了"which aws",但它不存在.)
我按照教程使用Python创建了一个Alexa应用程序:
我能够成功地遵循所有步骤并使应用程序工作.我现在想要修改python代码并使用外部库,例如import requests
我使用pip安装的任何其他库.如何设置我的lambda函数以包含我在本机上本地安装的任何pip包?
我没有成功写入aws lambda实例的文件系统. 文档说标准的lambda实例有512mb的可用空间/tmp/.但是,在本地计算机上运行的以下代码在lambda实例上根本不起作用:
var fs = require('fs');
fs.writeFile("/tmp/test.txt", "testing", function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
Run Code Online (Sandbox Code Playgroud)
匿名回调函数中的代码永远不会在lambda实例上调用.这有什么成功的吗?非常感谢你的帮助.
这可能是一个相关的问题.是否有可能在s3代码和我正在尝试用fs回调函数之间发生某种冲突?下面的代码是当前正在运行的代码.
console.log('Loading function');
var aws = require('aws-sdk');
var s3 = new aws.S3({ apiVersion: '2006-03-01' });
var fs = require('fs');
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
// Get the object from the event and show its content type
var bucket = event.Records[0].s3.bucket.name;
var key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
var params …Run Code Online (Sandbox Code Playgroud) 根据此文档,如果我需要通过VPC访问从我的Lambda函数访问Internet资源,我需要设置NAT网关.
所以我按照本指南设置了NAT网关.但是,在我需要编辑子网的路由表以添加目的地:0.0.0.0/0和目标作为我的NAT网关的id的条目的阶段,我收到一个错误
An entry with this destination already exists
Run Code Online (Sandbox Code Playgroud)
我检查并注意到,对于现有条目,目标是我的VPC的互联网网关.如果我用NAT网关ID替换该条目,我无法通过SSH从外部访问该VPC中的任何EC2实例.如何实现此VPC中所有EC2实例的情况
我正在尝试使用CloudFormation创建一个新版本的Lambda函数.
我想拥有相同Lambda函数的多个版本,以便我可以(a)指向不同版本的别名 - 比如DEV和PROD - 以及(b)能够回滚到早期版本
这是我的Lambda版本的定义:
LambdaVersion:
Type: AWS::Lambda::Version
Properties:
FunctionName:
Ref: LambdaFunction
Run Code Online (Sandbox Code Playgroud)
运行"aws cloudformation create-stack"时会创建一个版本,但随后的"aws cloudformation update-stack"命令不会执行任何操作.没有创建新的Lambda版本.
我正在尝试在将新的zip文件上传到S3然后运行"update-stack"之后创建一个新版本的Lambda函数.我可以使用CloudFormation做到吗?AWS :: Lambda :: Version真的坏了吗(如https://github.com/hashicorp/terraform/issues/6067#issuecomment-211708071所述)或者我只是没有得到什么?
更新1/11/17 亚马逊支持的官方回复:"...对于要发布的任何新版本,您需要定义一个添加(原文如此) AWS :: Lambda :: Version资源......"
AWS CloudFormation/Lambda团队,如果您正在阅读此内容 - 这是不可接受的.修理它.
我在AWS上有一个RDS数据库实例,暂时将其关闭.但是,它每隔几天就会自行启动.我现在没有任何其他服务.
我的RDS日志中存在此事件:"数据库实例正在启动,因为它超过了停止的最大允许时间."
为什么我的RDS实例可以停止多长时间?我只想暂停我的项目几周,但AWS不会让我关闭我的数据库?让它闲置成本为12.50美元/月,所以我不想为此付费,而且我当然不希望AWS为我启动一个不习惯的实例.
请帮忙!
我正在玩Cloudformation无服务器转换,并试图弄清楚如何以及何时使用AWS::Serverless::Function或AWS::Lambda::Function.出于某种原因,Lambda版本用于AWS中的SAM示例.这非常令人困惑.SAM github.然后还有servlerless框架本身,它实际上是一个nodejs框架.所有这些让我非常困惑.
aws-lambda ×10
amazon-s3 ×1
api ×1
aws-cli ×1
database ×1
java ×1
javascript ×1
json ×1
node.js ×1
pip ×1
python ×1
serverless ×1