我希望使用 AWS Lambda 中的 Athena 查询 S3 存储桶中的数据。当我查看一些示例时,从 Lambda 到 Athena 的调用似乎是异步的。Lambda 调用 Athena 并等待 Athena 将结果写入 S3 存储桶。有没有办法直接检索响应而不必将其写入 S3 存储桶?
我在新创建的 VPC 中设置了一个 Aurora 数据库(已配置)并且没有公共可访问性。由于我想在 VPC 中运行一个 Lambda 函数,该函数既可以访问 RDS 实例,也可以访问 Internet,因此我将 RDS 实例的路由表更改为允许来自我放置在公共子网中的 NAT 网关的流量在同一个 VPC 中。
对于 Lambda 函数本身,我创建了一个单独的私有子网,在路由表中也只允许来自 NAT 网关的流量。我将此子网和 VPC 分配给 Lambda 设置中的 Lambda 函数。互联网连接在此配置下工作正常,但我无法访问数据库。这就是为什么我关注了这篇文章(https://serverfault.com/questions/941886/connect-an-aws-lambda-function-triggered-by-api-gateway-to-aurora-serverless-mys)并添加了 IP CIDR RDS 实例的安全组(称为 rds-launch-wizard)。
尽管如此,Lambda 函数仍能够与公共互联网交互,但无法连接到 RDS 实例(超时)。我的想法不多了,这里有什么问题?
我的 AWS Lambda 函数无法访问主节点上运行的 hive 服务器。它超时——与您尝试从非白名单 IP 访问节点的行为相同。显然,将 Lambda 函数添加为列入白名单的 IP 是不可能的。
如何配置 AWS Lambda 以便它可以访问 EMR 主节点上的服务?
system-administration amazon-web-services amazon-emr aws-lambda
当我在 RDS MySQL VPC 中移动我的 AWS Lambda 函数时,API Gateway 无法调用它并超时。是否可以从 API Gateway 调用 VPC Lambda?
VPC 链接不能使用应用程序负载均衡器创建,这是 Lambda 函数的唯一选择,它们需要网络负载均衡器。
我们在一些 AWS 存储桶前面有一个 Cloudfront 分配,由我团队的另一名成员设置。
我有一些用于 lambda@edge 的 node.js 代码来重写请求。
我的问题是如何使用 aws 命令行工具将这些存储桶部署到 Cloudfront?
我认为,这需要
我还没有找到任何连贯的文档或如何完成所有这些的示例,更不用说使用 aws 工具了。
事实上,当我通过网站登录时,我看不到 Cloudfront 或 S3 存储桶,但我可以通过命令行列出 s3 存储桶内容。(我不确定如何通过命令行访问 Cloudfront)。
我在 aws congnito 池中创建了一个自定义属性,现在添加 Post authentication lambda 并且在 lambda 内部想要读取“自定义属性”和登录用户名。
在 Node.js lambda 中:
var email=event.request.userAttributes.email;
var refNumber=event.request.userAttributes.ref_number; //custom attribute
var loginid=event.request.userAttributes.username;//loggedin id in cognito
Run Code Online (Sandbox Code Playgroud)
我能够正确获取电子邮件 ID,但是登录用户名和自定义属性都未定义。
在我的项目中,我使用的是 Angular 6、带有 lambda 函数和 api 网关的 nodejs,下面是我的文件夹结构。
--Bucket Name
|--Folder (folder name dynamically change based on user login)
|----sub Folder (sub folder name dynamically change)
|--- bird.jpg (file name also dynamic)
Run Code Online (Sandbox Code Playgroud)
我使用以下代码创建了存储桶和文件夹,我需要在文件夹中创建子文件夹并存储 jpg 或文本文件。下面是我的代码:
var AWS = require('aws-sdk');
AWS.config.update({
region: 'us-east-2',
accessKeyId: 'accessid',
secretAccessKey: 'secret id'
});
var s3 = new AWS.S3();
var bucketName = 'bucket name';
exports.handler = function uploadToS3(event, context, callback) {
s3.createBucket({Bucket: bucketName}, function() {
var params = {Bucket: bucketName,Key: event['keyName']};
s3.putObject(params, function(err, data) {
if …Run Code Online (Sandbox Code Playgroud) 我有一个 .zip 文件,其中包含 node_modules 和一个 utils 文件夹,
我在 AWS Lambda 层上上传了 .zip,但我无法获取对 AWS Lambda 函数的所有依赖项,
我相信问题可能与 package.json 有关,但
我尝试删除 node_modules、package-lock.json 并使用npm install命令重新安装依赖项。
依赖项似乎是在本地下载的,但是当我将它们上传到图层时,它们就会消失。
package.json-
{
"name": "serverless-currency",
"version": "1.0.0",
"description": "Lambda APIs for G2G Currency Module",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"debug": "SLS_DEBUG=* sls offline start"
},
"author": "Aniruddha Raje",
"license": "ISC",
"dependencies": {
"async": "^2.6.2",
"aws-sdk": "^2.447.0",
"axios": "^0.18.0",
"cryptr": "^4.0.2",
"jsonwebtoken": "^8.5.1", …Run Code Online (Sandbox Code Playgroud) 我试图用 Lambda 函数实现一个简单的计数器,但是每当我测试它时,下面的 updateItem 根本不起作用:回调中的任何日志语句都没有运行,当然还有表中的相关计数器永远不会更新。这是我的 lambda 函数:
'use strict';
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });
let params = {
TableName: 'Counters',
Key: {
'name': { S: 'global' }
},
UpdateExpression: 'SET val = val + :inc',
ExpressionAttributeValues: {
':inc': { N: '1' }
},
ReturnValues: 'ALL_NEW'
};
exports.handler = async(event) => {
console.log("Invoked counter-test");
dynamodb.updateItem(params, function(err, data) {
console.log("In updateItem callback");
if (err)
console.log(err, err.stack);
else
console.log(data);
});
console.log("Updated counter");
const response = { …Run Code Online (Sandbox Code Playgroud) 在 AWS Lambda 中,我的函数会将 S3 中的文件保存到/tmp目录中,如下所示:
local_filepath = '/tmp/file.txt'
s3.download_file(
Bucket=bucket,
Key=key,
Filename=local_filepath
)
Run Code Online (Sandbox Code Playgroud)
生活很好。
然而,使用 Serverless 是另一回事。
相同的设置会导致以下错误:
[Errno 2] No such file or directory: '/tmp/processed.txt.7E4850BD'
所以我猜想/tmp在无服务器执行环境中没有目录。
我试图将文件保存到当前目录,使用local_filepath = 'file.txt',但出现OSError(30, 'Read-only file system')错误。
python amazon-web-services aws-lambda serverless aws-serverless
aws-lambda ×10
amazon-s3 ×2
node.js ×2
amazon-emr ×1
amazon-rds ×1
amazon-vpc ×1
boto3 ×1
python ×1
serverless ×1