我使用"上传.zip"在AWS(Python)中创建了一个lambda函数.我丢失了这些文件,我需要进行一些更改,是否有任何方法可以下载.zip?
Node.js Alexa任务问题
我目前正在通过AWS Lambda编写Node.js Alexa任务,我一直在尝试编写一个函数,该函数从OpenWeather API接收信息并将其解析为一个名为的变量weather.相关代码如下:
var request = require('request');
var weather = "";
function isBadWeather(location) {
var endpoint = "http://api.openweathermap.org/data/2.5/weather?q=" + location + "&APPID=205283d9c9211b776d3580d5de5d6338";
var body = "";
request(endpoint, function (error, response, body) {
if (!error && response.statusCode == 200) {
body = JSON.parse(body);
weather = body.weather[0].id;
}
});
}
function testWeather()
{
setTimeout(function() {
if (weather >= 200 && weather < 800)
weather = true;
else
weather = false;
console.log(weather);
generateResponse(buildSpeechletResponse(weather, true), {});
}, 500);
} …Run Code Online (Sandbox Code Playgroud) 我有以下函数用于从我的代码中调用Lambda函数.
但是,当我尝试在Lambda函数中使用它时,我收到以下错误:
AWS lambda undefined 0.27s 3 retries] invoke({ FunctionName: 'my-function-name',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: <Buffer > })
Run Code Online (Sandbox Code Playgroud)
如何在Lambda函数中调用Lambda函数?
我的功能:
'use strict';
var AWS = require("aws-sdk");
var lambda = new AWS.Lambda({
apiVersion: '2015-03-31',
endpoint: 'https://lambda.' + process.env.DYNAMODB_REGION + '.amazonaws.com',
logger: console
});
var lambdaHandler = {};
// @var payload - type:string
// @var functionName - type:string
lambdaHandler.invokeFunction = function (payload, functionName, callback) {
var params = {
FunctionName: functionName, /* required */
InvocationType: "RequestResponse",
LogType: "Tail",
Payload: new Buffer(payload, …Run Code Online (Sandbox Code Playgroud) 我在AWS上的S3存储桶中存储了一系列json文件.
我希望使用AWS lambda python服务来解析此json并将解析后的结果发送到AWS RDS MySQL数据库.
我有一个稳定的python脚本,用于解析和写入数据库.我需要lambda脚本来遍历json文件(当它们被添加时).
每个json文件都包含一个简单的列表 results = [content]
在伪代码中我想要的是:
jsondata)results)results)我可以列出我所拥有的桶:
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
Run Code Online (Sandbox Code Playgroud)
赠送:
jsondata
Run Code Online (Sandbox Code Playgroud)
但我无法访问此存储桶来读取其结果.
似乎没有read或load功能.
我希望有类似的东西
for bucket in s3.buckets.all():
print(bucket.contents)
Run Code Online (Sandbox Code Playgroud)
编辑
我误解了一些事情.lambda必须自己下载,而不是在S3中读取文件.
从这里看来,你必须给lambda一个下载路径,从中可以访问文件本身
import libraries
s3_client = boto3.client('s3')
def function to be executed:
blah blah
def handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key) …Run Code Online (Sandbox Code Playgroud) 我正在尝试从AWS Lambda访问我的VPC上的S3和资源,但由于我将AWS Lambda配置为访问VPC,因此在访问S3时会超时.这是代码
from __future__ import print_function
import boto3
import logging
import json
print('Loading function')
s3 = boto3.resource('s3')
import urllib
def lambda_handler(event, context):
logging.getLogger().setLevel(logging.INFO)
# Get the object from the event and show its content type
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
print('Processing object {} from bucket {}. '.format(key, bucket))
try:
response = s3.Object(bucket, key)
content = json.loads(response.get()['Body'].read())
# with table.batch_writer() as batch:
for c in content:
print(' Processing Item : ID' + str(c['id']))
# ##################
# Do custom processing …Run Code Online (Sandbox Code Playgroud) 总的来说,我对在VPC中使用AWS Lambda感到非常困惑.问题是Lambda在尝试访问S3存储桶时超时.该解决方案似乎是一个VPC端点.
我已将Lambda函数添加到VPC,因此它可以访问RDS托管数据库(未在下面的代码中显示,但功能正常).但是,现在我无法访问S3,任何尝试这样做都会超时.
我尝试创建一个VPC S3端点,但没有任何改变.
VPC配置
每当我第一次制作EC2实例时,我都会使用默认创建的简单VPC.它有四个子网,都是默认创建的.
VPC路由表
_Destination - Target - Status - Propagated_
172.31.0.0/16 - local - Active - No
pl-63a5400a (com.amazonaws.us-east-1.s3) - vpce-b44c8bdd - Active - No
0.0.0.0/0 - igw-325e6a56 - Active - No
Run Code Online (Sandbox Code Playgroud)
简单的S3下载Lambda:
import boto3
import pymysql
from StringIO import StringIO
def lambda_handler(event, context):
s3Obj = StringIO()
return boto3.resource('s3').Bucket('marineharvester').download_fileobj('Holding - Midsummer/sample', s3Obj)
Run Code Online (Sandbox Code Playgroud) 创建事件源映射时出错:配置模糊定义.如果前缀对于相同的事件类型重叠,则在两个规则中不能具有重叠的后缀.
我在6-7天前从GUI控制台创建了一个事件,它运行正常.第二天事件刚刚失踪,我无法再在Lambda控制台GUI上看到它.但每个S3对象仍然似乎触发lambda函数不是问题.如果我看不到,那就不好了; 所以我删除了Lambda函数,在创建另一个新函数之前等了5-10秒.现在,当我尝试创建这样的事件源时,我收到相同的内容:

当我单击"提交"时,事件源选项卡显示"您没有此功能的任何事件源",Lambda不会被触发; 这意味着整个应用程序流程现在已经崩溃:(
问题几乎与:" https://forums.aws.amazon.com/thread.jspa?messageID=670712 "但不知何故我不能回复该线程,所以我在这里创建了一个新线程.谁有人遇到这个问题?
事实上,我尝试回应现有的AWS论坛帖子:https://forums.aws.amazon.com/thread.jspa? messageID = 670712 , 但我一直收到这个有趣的错误:"你的邮件配额已达到. 请稍后再试.".我甚至没有张贴任何东西,我怎么能用完我的配额?
我正在尝试查找AWS Lambda中可用的最大虚拟处理器核心数.官方文档暗示它随着配置的内存量而扩展:
但是,Number of cores = 2即使我配置了可请求的最大内存量,运行以下代码段也会得到我:1536 MB.
package example;
import java.io.{ InputStream, OutputStream }
class Main {
def main(input: InputStream, output: OutputStream): Unit = {
val result = "Number of cores = " + Runtime.getRuntime().availableProcessors()
output.write(result.getBytes("UTF-8"))
}
}
Run Code Online (Sandbox Code Playgroud)
那么这里发生了什么?我是否使用了availableProcessors()错误或错误解释了其结果?或者是否有其他配置需要获得更多内核?
如何在本地运行aws lambda(java)进行测试.
我能够找到节点的一些信息,但不能找到java的信息.
从zip文件上传代码时,我在aws-lambda控制台中不断收到此错误.我尝试上传其他zip文件,但它们正常工作..js文件在zip文件中名为"CreateThumbnail.js".我相信处理程序也正确命名为"CreateThumbnail.handler".node_modules子目录也已设置.任何人都有任何想法?
{
"errorMessage": "Cannot find module 'CreateThumbnail'",
"errorType": "Error",
"stackTrace": [
"Function.Module._resolveFilename (module.js:338:15)",
"Function.Module._load (module.js:280:25)",
"Module.require (module.js:364:17)",
"require (module.js:380:17)"
]
}
Run Code Online (Sandbox Code Playgroud) aws-lambda ×10
amazon-s3 ×3
node.js ×3
amazon-vpc ×2
javascript ×2
aws-sdk ×1
json ×1
python ×1
request ×1