标签: aws-lambda

在Python中使用MySQL和AWS Lambda的问题

我正在尝试使用AWS Lambda Python(Python btw中的初学者)启动并运行,但在包含MySQL依赖项方面存在一些问题.我试图按照指示在这里我的Mac上.

对于第3步,我在项目的根目录下执行命令会遇到一些问题

sudo pip install MySQL-python -t /
Run Code Online (Sandbox Code Playgroud)

错误:

例外:回溯(最近一次调用最后一次):文件"/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py",第122行,处于主状态= self .run(options,args)在运行os.path中的文件"/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/install.py",第311行. join(options.target_dir,item)文件"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py",第292行,移动引发错误,"目标路径"%s '已存在'%real_dst错误:目标路径'/MySQL_python-1.2.5-py2.7.egg-info/MySQL_python-1.2.5-py2.7.egg-info'已存在

我最终编写了以下lambda函数(在我的Mac上运行正常),这是:

import MySQLdb

def lambda_handler(event, context):
   # Open database connection
   db = MySQLdb.connect(...)

   # prepare a cursor object using cursor() method
   cursor = db.cursor()

   sql = "SELECT * FROM Users"

   try:
      # Execute the SQL command
      cursor.execute(sql)
      # Fetch all the rows in a list of lists.
      results = cursor.fetchall()
      for row in results:
         fname = row[0]
         lname = row[1]
         age …
Run Code Online (Sandbox Code Playgroud)

python mysql amazon-web-services python-2.7 aws-lambda

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

API网关 - 发布multipart\form-data

似乎我的问题可能与类似.

我的API网关中有一个API,我正在通过POST的multipart/form-data文件的端点进行HTTP代理.

如果我直接调用http端点(而不是通过API网关) - 使用邮递员,它按预期工作,但是,使用API​​网关端点(通过邮递员)失败.

我已经比较了两个似乎相同的请求(通过fiddler和CloudWatch日志):

请求直接API调用(工作):

POST https://domainname/api/v1/documents HTTP/1.1
Host: api.service
Connection: keep-alive
Content-Length: 202
Authorization: AuthToken
Postman-Token: a75869d6-1d64-6b9f-513d-a80ac192c8e1
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
docMetaInfo: some extra data needed
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryB85rsPlMffA2fziS
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8

------WebKitFormBoundaryB85rsPlMffA2fziS
Content-Disposition: form-data; name=""; filename="Test.txt"
Content-Type: text/plain

This is a test Text File
------WebKitFormBoundaryB85rsPlMffA2fziS--
Run Code Online (Sandbox Code Playgroud)

来自API网关的请求(不工作):

POST https://GATEWAY_domainname/api/v1/documents HTTP/1.1
Host: api-Gateway.service
Connection: keep-alive
Content-Length: 202
Authorization: …
Run Code Online (Sandbox Code Playgroud)

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

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

如何通过自定义域调用我的 AWS Lambda 函数 URL?

我创建了一个启用了新函数 URL功能的 AWS Lambda。

由于 URL 不太容易记住,我想创建一个 Route 53 别名,例如lambda.mywebsite.com

Route 53 别名的下拉菜单中没有 Lambda 函数 URL 的 Route 53 别名。

如何通过自定义域调用我的 AWS Lambda 函数 URL?

CNAME 记录是正确的选择吗?

amazon-web-services amazon-route53 aws-lambda

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

如何在本地测试aws lambda函数

我有一个用node.js express开发的移动应用程序后端.我尝试将其部署为lambda服务.为此,我创建了一个无服务器框架项目(https://github.com/serverless).之前我通过启动快速后端应用程序在本地测试了移动应用程序.现在我找不到一种方法来在没有本地后端的情况下在本地测试我的移动应用程序.jaws run命令只在我调用它时运行.

是否有任何方法可以将lambda函数作为Web服务启动?或者是否有无服务器框架的替代方案?

python amazon-web-services node.js aws-lambda serverless-framework

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

如何将ApiGateway指向特定的Lambda别名

我在亚马逊的ApiGateway创建了一个资源.它指向Lambda函数.这是受到本机移动应用程序(android和ios)的影响,它已经在野外.

我现在想要修改Lambda函数,但我认为无法将我的ApiGateway资源更改为指向lambda的别名.这是我第一次使用这些技术,我发现在aws控制台中没有简单的机制来管理它.

如何修改我的ApiGateway资源以指向我的lambda别名,以便我可以在不影响现有客户端的情况下编辑主干?

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

24
推荐指数
3
解决办法
7959
查看次数

将wordpress部署为AWS lambda函数?

我想知道在Word API网关上将wordpress部署为一系列lambda函数是否可行.关于可行性/陷阱的任何指示将不胜感激!

提前致谢,

库尔德工人党

wordpress aws-lambda

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

该策略未通过旧版解析

我正在尝试在AWS中创建IAM角色,但在创建时我遇到了错误

"我们在处理您的请求时遇到以下错误:在添加角色权限时出现问题.将在未经许可的情况下创建角色.策略未能通过旧版解析"

{"Version": "2012-10-17",  "Statement": [
{
  "Effect": "Allow",
  "Action": [
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:PutLogEvents"
  ],
  "Resource": "arn:aws:logs:*:*:*"
},
{
  "Action": [
    "sqs:SendMessage",
    "sqs:GetQueueUrl"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:sqs:ap-northeast-1:SOME_ID_HERE:test-messages"
}]}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-iam aws-lambda

24
推荐指数
5
解决办法
2万
查看次数

如何使用node.js从`AWS dynamodb`获取/扫描所有项目

如何从AWS dynamodb使用中获取/扫描所有项目node.js.我在这里发布我的代码.

var docClient = new aws.DynamoDB.DocumentClient();
    var params = {
    TableName:"users",
    KeyConditionExpression:"user_status=:status",
    ExpressionAttributeValues: {
        ":status": "Y"
    }
    };

    var queryExecute = function(callback) {
        docClient.query(params,function(err,result) {
            if(err) {
                console.log(err)
                callback(err);
                } else {
                console.log(result);

                if(result.LastEvaluatedKey) {
                    params.ExclusiveStartKey = result.LastEvaluatedKey;
                    queryExecute(callback);
                    } else {
                        callback(err,items);
                    }
                }
            });
        }
        queryExecute(callback); 
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误.

ValidationException: Query condition missed key schema element: `user_id`.
Run Code Online (Sandbox Code Playgroud)

这里的主键是user_id.我不想在查询条件中使用它,因为如果我提到主键,我需要设置一个值KeyConditionExpression.可能是我错了.但是请建议我一个很好的方法来获取所有项目dynamodb,这是有的user_status = "Y"

node.js amazon-dynamodb aws-lambda

24
推荐指数
6
解决办法
3万
查看次数

如何将参数传递给无服务器调用本地

我正在开发一个无服务器的无需项目,需要在本地测试lambda函数.
我正在使用serverless invoke local -f {function_name}命令来测试不请求任何路径或查询参数的API调用.
我的问题是如何使用此命令将任何路径或查询参数传递给函数?

示例无服务器描述

getFoodDetails:
    handler: handler.getFoodDetails
    events:
      - http:
          method: get
          path: /foods/{food_id}
          cors: true
          request:
            parameters:
              paths:
                food_id: true
Run Code Online (Sandbox Code Playgroud)

aws-lambda serverless-framework aws-serverless

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

执行 aws-lambda 函数时出现错误“fork/exec /var/task/main: no such file or directory”

获取错误 fork/exec /var/task/main: 执行 lambda 函数时没有这样的文件或目录。

我正在使用 Windows 平台在 Go 中运行和构建代码。

我已完成以下步骤来部署 go aws-lambda 处理程序:

  1. windows平台用VSCode用go语言编写代码
  2. 使用以下命令构建项目:go build main.go
  3. 将 main.exe 转换为 main.zip
  4. 使用 aws 控制台帐户上传带有处理程序名称 main aws-lambda 函数的 main.zip
  5. 创建测试事件来测试 lambda 函数
  6. 出现错误“fork/exec /var/task/main:执行 lambda 函数时没有这样的文件或目录”
package main

import (
    "fmt"

    "github.com/aws/aws-lambda-go/lambda"
)

// Request represents the requested object
type Request struct {
    ID    int    `json:"ID"`
    Value string `json:"Value"`
}

// Response represents the Response object
type Response struct {
    Message string `json:"Message"`
    Ok      bool   `json:"Ok"`
}

// Handler …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 handler go aws-lambda

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