标签: aws-lambda

使用Lambda查询DynamoDB什么都不做

我有一个Lambda函数的以下代码:

console.log('Loading function');
var aws = require('aws-sdk');
var ddb = new aws.DynamoDB();

function getUser(userid) {
    var q = ddb.getItem({
        TableName: "Users",
        Key: {
            userID: { S: userid } }
        }, function(err, data) {
            if (err) {
                console.log(err);
                return err;
            }
            else {
                console.log(data);
            }
    });
    console.log(q);
}


exports.handler = function(event, context) {
    console.log('Received event');
    getUser('user1');
    console.log("called DynamoDB");
    context.succeed();
};
Run Code Online (Sandbox Code Playgroud)

我有一个[Users]表定义如下:

{
    "cognitoID": { "S": "token" },
    "email": { "S": "user1@domain.com" },
    "password": { "S": "somepassword" },
    "tos_aggreement": { "BOOL": true …
Run Code Online (Sandbox Code Playgroud)

javascript callback node.js amazon-dynamodb aws-lambda

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

如何在Lambda中将对象上传到S3?

似乎无法将对象上传到Lambda中的S3.一切都在当地很好.日志中没有错误可以显示出错的地方......

代码如下:

console.log('Loading function');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();

exports.handler = function(event, context) {
    //console.log(JSON.stringify(event, null, 2));
    var s3 = new AWS.S3();
    var param = {Bucket: 'flow-logs', Key: 'test-lambda-x', Body: 'me me me'};
    console.log("s3");
    s3.upload(param, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data);           // successful response
    });
    console.log('done');
    context.done();
};
Run Code Online (Sandbox Code Playgroud)

运行成功没有错误,但似乎没有调用s3.upload中的回调.桶中没有对象被创建.

通过授予完全访问权限以及在本地测试,已验证的IAM角色权限不是问题.

产量

START RequestId: d4847fdb-160c-11e5-8a8c-b555b123e14d
2015-06-18T22:53:29.750Z    d4847fdb-160c-11e5-8a8c-b555b123e14d    s3
2015-06-18T22:53:30.271Z    d4847fdb-160c-11e5-8a8c-b555b123e14d    done
END RequestId: d4847fdb-160c-11e5-8a8c-b555b123e14d
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 amazon-web-services aws-lambda

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

如何让VAL中的AWS lambda发布SNS通知?

我有一个lambda函数,通过VPC访问我在RDS中的Postgres数据库.在查询数据库之后,我想向SNS发布通知.因为我的lambda函数存在于我的VPC中,所以它无法访问SNS.我的VPC上有一个互联网网关.我阅读了VPC端点文档,目前仅支持s3.

无论如何在VPC中以lambda函数发布到SNS?

amazon-web-services amazon-sns amazon-vpc aws-lambda

16
推荐指数
2
解决办法
7475
查看次数

获取错误:AWS API请求后缺少身份验证令牌

我试图通过AWS API Gateway调用Lambda函数.

当我尝试IAM身份验证,API密钥身份验证以及没有身份验证时,我一直收到此错误. 在此输入图像描述

{"message":"Missing Authentication Token"}
Run Code Online (Sandbox Code Playgroud)

由于不存在端点,有些人遇到了同样的问题.但是,我直接从Lambda Function AWS控制台获取了我的端点. 在此输入图像描述

我一直在尝试在浏览器和邮递员中打开URL(使用和不使用标头身份验证:x-​​api-key:*****************). 在此输入图像描述

两者都回答了上述错误.

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

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

Lambda函数错误:EROFS:只读文件系统,打开'./tmp/test.zip'在完成请求之前退出流程

我从s3存储桶下载了一个zip文件,然后解压缩了zip文件,最后使用Node JS将一个文件上传到Lambda函数中的s3存储桶.但是我收到了错误

==>错误:EROFS:只读文件系统,打开'./tmp/test.zip'"在完成>请求之前退出流程"

exports.handler = function (callback) {

downloadZipFile(params, downloadPath, function (err) {
    if (err) {
        callback(err);
    } else {
        processZipFile(downloadPath, function (err) {
            if (err) {
                callback(err);
            } else {
                callback(null);
            }
        });

      }
  });

};

function downloadZipFile(params, downloadPath, callback) {

const file = fs.createWriteStream(downloadPath);

s3.getObject(params)
    .on('httpData', function (chunk) {

        file.write(chunk);
    })
    .on('success', function () {

        callback(null);
    })
    .on('error', function (err) {

        callback(err);
    })
    .on('complete', function () {

        file.end();
    })
    .send();
}

function processZipFile(filePath) {

const stats = fs.statSync(filePath) …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 node.js aws-lambda

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

AWS Lambda vs Heroku:主要区别是什么?

我在线搜索但无法找到AWS Lambda与Heroku之间关键差异的良好答案.我可以编写Node JS,但什么时候应该使用Lambda和何时使用Heroku?

heroku amazon-web-services aws-lambda

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

API网关响应状态为0,集成延迟10000ms

这是我从API网关自动生成的javascript SDK中获得的错误.

{
    "data": "",
    "status": 0,
    "statusText": "",
    "headers": {

    },
    "config": {
        "method": "POST",
        "headers": {
            "Content-Type": "application/json",
            "Accept": "application/json",
            "x-amz-date": "20180127T231842Z",
            "Authorization": "AWS4-HMAC-SHA256 Credential=.....",
            "x-amz-security-token": "....."
        },
        "timeout": 0,
        "transformRequest": [null],
        "transformResponse": [null],
        "url": "https://somevalues.execute-api.us-west-2.amazonaws.com/env/some/path",
        "data": "{\"startDay\":0,\"endDay\":1}"
    }
}
Run Code Online (Sandbox Code Playgroud)

我查看了我的cloudwatch日志,并且呼叫成功了.我将API网关绑定到AWS lambda作为无服务器功能设置.

我从未见过这些类型的错误,但今天我得到了其中的5个错误.后续调用全部奏效.

编辑:这可能与CORS设置有关吗?每隔一段时间API网关似乎打嗝并且不会发送回适当的CORS.可能是功能冷的时候?我不确定...

编辑2:我刚刚验证 - 我的所有OPTIONS端点(用于CORS的端点)都不需要auth或api密钥.所以我认为不是这样的.

编辑4:编辑3错了,我正在击中错误的端点.使用curl命中我的API OPTIONS端点可以正常工作.

编辑5:查看云观察中的API网关日志,这就是它们的样子......此时完全丢失了.

[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m START RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1 Version: $LATEST
[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m END RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1
[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m REPORT RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1   Duration: 10007.96 ms   Billed Duration: 10000 ms   Memory Size: 128 MB …
Run Code Online (Sandbox Code Playgroud)

aws-lambda aws-api-gateway api-gateway

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

使用 AWS CDK 为 lambda 指定自定义角色

我意识到它很新,但我没有看到任何语言的示例如何为使用 AWS CDK 创建的 lambda 指定角色。

我试图这样做

const cdk       = require('@aws-cdk/cdk');
const lambda    = require('@aws-cdk/aws-lambda');
const iam       = require('@aws-cdk/aws-iam');

const path      = require('path');

class MyStack extends cdk.Stack {
    constructor (parent, id, props) {
            super(parent, id, props);

            //
            // Create a lambda...
            const fn = new lambda.Function(this, 'MyFunction-cdktest', {
                runtime: lambda.Runtime.NodeJS810,
                handler: 'index.handler',
                code: lambda.Code.directory( path.join( __dirname, 'lambda')),
                role: iam.RoleName('lambda_basic_execution')
            });

    }
}

class MyApp extends cdk.App {
        constructor (argv) {
                super(argv);

                new MyStack(this, 'hello-cdk');
        }
}

console.log(new MyApp(process.argv).run());
Run Code Online (Sandbox Code Playgroud)

为了尝试为函数指定现有的 IAM …

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

16
推荐指数
4
解决办法
2万
查看次数

使用 AWS Amplify 创建 process.env 变量?

使用无服务器,我们可以process.env通过创建这样的配置文件条目来添加变量:

environment:
    STRIPE_SECRET_KEY: ${self:custom.secrets.stripeSecretKey} # Stripe secret API key
Run Code Online (Sandbox Code Playgroud)

我们可以像这样在 lambda 函数中访问它:

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
Run Code Online (Sandbox Code Playgroud)

我们如何使用 AWS Amplify 做到这一点?

amazon-web-services node.js aws-lambda aws-sdk-js aws-amplify

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

将 AWS Secrets Manager 与 Python 结合使用(Lambda 控制台)

我正在尝试在 AWS 中使用 Secrets Manager 一个 Lambda 函数。管理器用于将数据库凭据存储到 Snowflake(用户名、密码)的机密。

我设法在 Secrets Manager 中设置了一个秘密,其中包含几个键/值对(例如一个用于用户名,另一个用于密码)。

现在我试图在我的 Python 函数代码中引用这些值。AWS 文档友好地提供了以下代码段:

import boto3
import base64
from botocore.exceptions import ClientError


def get_secret():

    secret_name = "MY/SECRET/NAME"
    region_name = "us-west-2"

    # Create a Secrets Manager client
    session = boto3.session.Session()
    client = session.client(
        service_name='secretsmanager',
        region_name=region_name
    )

    # In this sample we only handle the specific exceptions for the 'GetSecretValue' API.
    # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
    # We rethrow the exception by default.

    try:
        get_secret_value_response = client.get_secret_value(
            SecretId=secret_name
        )
    except ClientError …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services aws-lambda aws-secrets-manager

16
推荐指数
2
解决办法
3万
查看次数