标签: aws-lambda

从 AWS Lambda 到 Athena 的同步调用

我希望使用 AWS Lambda 中的 Athena 查询 S3 存储桶中的数据。当我查看一些示例时,从 Lambda 到 Athena 的调用似乎是异步的。Lambda 调用 Athena 并等待 Athena 将结果写入 S3 存储桶。有没有办法直接检索响应而不必将其写入 S3 存储桶?

amazon-web-services boto3 aws-lambda amazon-athena

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

具有 RDS 和 Internet 连接的 VPC 中的 AWS Lambda

我在新创建的 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 实例(超时)。我的想法不多了,这里有什么问题?

amazon-rds amazon-vpc aws-lambda

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

如何配置 aws lambda 以便能够访问 emr 主节点上的服务?

我的 AWS Lambda 函数无法访问主节点上运行的 hive 服务器。它超时——与您尝试从非白名单 IP 访问节点的行为相同。显然,将 Lambda 函数添​​加为列入白名单的 IP 是不可能的。

如何配置 AWS Lambda 以便它可以访问 EMR 主节点上的服务?

system-administration amazon-web-services amazon-emr aws-lambda

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

Amazon API Gateway 无法在 VPC 中调用 Lambda

当我在 RDS MySQL VPC 中移动我的 AWS Lambda 函数时,API Gateway 无法调用它并超时。是否可以从 API Gateway 调用 VPC Lambda?

VPC 链接不能使用应用程序负载均衡器创建,这是 Lambda 函数的唯一选择,它们需要网络负载均衡器。

aws-lambda aws-api-gateway

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

如何通过 aws cli 在组织的 Cloudfront 实例中部署 lambda@edge 代码?

我们在一些 AWS 存储桶前面有一个 Cloudfront 分配,由我团队的另一名成员设置。

我有一些用于 lambda@edge 的 node.js 代码来重写请求。

我的问题是如何使用 aws 命令行工具将这些存储桶部署到 Cloudfront?

我认为,这需要

  1. 请求权限以承担角色;
  2. 将该功能部署在可以使用的地方(而不是我的帐户);
  3. 创建角色/信任关系;
  4. 在 Cloudfront 中创建行为;
  5. 并将该功能与查看器请求事件相关联。

我还没有找到任何连贯的文档或如何完成所有这些的示例,更不用说使用 aws 工具了。

事实上,当我通过网站登录时,我看不到 Cloudfront 或 S3 存储桶,但我可以通过命令行列出 s3 存储桶内容。(我不确定如何通过命令行访问 Cloudfront)。

amazon-s3 amazon-web-services amazon-cloudfront aws-lambda

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

如何在 lambda 中读取 AWS Cognito 自定义属性和登录用户

我在 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,但是登录用户名和自定义属性都未定义。

amazon-web-services amazon-cognito aws-lambda

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

如何使用带有 lambda 函数的 nodejs 在 aws s3 存储桶中创建嵌套文件夹?

在我的项目中,我使用的是 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)

amazon-s3 amazon-web-services node.js aws-lambda

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

无法在 AWS Lambda 层上上传 npm 依赖项

我有一个 .zip 文件,其中包含 node_modules 和一个 utils 文件夹,
我在 AWS Lambda 层上上传了 .zip,但我无法获取对 AWS Lambda 函数的所有依赖项,

我相信问题可能与 package.json 有关,但
我尝试删除 node_modules、package-lock.json 并使用npm install命令重新安装依赖项。
依赖项似乎是在本地下载的,但是当我将它们上传到图层时,它们就会消失。

根文件夹 - 在此处输入图片说明

图层文件夹下的子目录 - 在此处输入图片说明

node_modules - 在此处输入图片说明

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)

amazon-web-services node.js aws-lambda

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

Lambda 中的 DynamoDB updateItem 以静默方式失败

我试图用 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)

amazon-web-services amazon-dynamodb aws-lambda

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

访问无服务器 Lambda 函数中的 /tmp 或其他临时文件结构

使用控制台的 AWS Lambda 函数

在 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)

生活很好。

使用无服务器的 AWS Lambda 函数

然而,使用 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

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