标签: aws-lambda

在本地测试Elasticache和无服务器AWS Lambda

我正在使用无服务器使用nodejs模板创建lambda函数。

  1. 要连接到我的Elasticache Redis,我设置了一个VPC,并将安全组和子网ID以及该区域添加到了我的lambda中serverless.yml。
  2. 我部署了它并确认可以设置并从Redis获取密钥。

当我尝试时serverless invoke local -f functionName,它总是超时,因此我必须部署它进行测试。

是否可以在本地进行测试serverless?

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

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

AWS Lambda中的Boto3 S3列表对象抛出错误

lambda中的代码:

import boto3

def lambda_handler(event, context):
    s3_client = boto3.resource('s3')
    mybucket = s3_client.Bucket('bucket-name')
    for object in mybucket.objects.all():
       print(object)

    for key in s3_client.list_objects(Bucket='bucket-name')['Contents']:
       print(key['Key'])'
Run Code Online (Sandbox Code Playgroud)

第一个“ for”块列出存储桶中的所有键,但是第二个“ for”块引发以下错误。

's3.Service Resource' object has no attribute 'list_objects' : AttributeError
Run Code Online (Sandbox Code Playgroud)

根据http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.list_buckets,这没有任何意义。关于可能是什么问题的任何提示?我使用了python 2.7和python 3.6

python amazon-s3 amazon-web-services boto3 aws-lambda

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

将terraform cloudwatch规则作为lambda触发器

我正在尝试使用以下内容配置在特定日期/时间触发lambda函数的cloudwatch规则:

resource "aws_lambda_function" "cleanup_daily" {
  filename          = "name"
  function_name     = "name"
  role              = "arn<removed>"
  handler           = "snapshotcleanup.lambda_handler"
  source_code_hash  = "${base64sha256(file("file_name"))}"
  runtime           = "python2.7"
  timeout           = "20"
  description       = "desc"
}

resource "aws_cloudwatch_event_rule" "daily_rule" {
  name                = "name"
  description         = "desc"
  schedule_expression = "cron(....)"
}

resource "aws_cloudwatch_event_target" "daily_target" {
  rule  = "${aws_cloudwatch_event_rule.daily_rule.name}"
  arn   = "${aws_lambda_function.cleanup_daily.arn}"
}
Run Code Online (Sandbox Code Playgroud)

但是lambda函数不运行.如果我查看lambda并检查触发器选项卡,那里什么也没有.如果我查看cloudwatch规则并查看Targets,则会显示lambda函数,如果单击它,我将重定向到函数本身.任何想法在这里可能有什么不妥

对于其中一个cloudwatch规则,我点击了编辑 - >保存 - >配置详细信息 - >更新而不更改任何内容,现在显示在lambda的触发器选项卡下,但仍然需要让其他人无法使用此步骤,

amazon-web-services amazon-cloudwatch aws-lambda terraform

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

AWS SQS是否需要

我正在构建一个服务,它将使用来自其他来源(服务)的数据.所以,我想使用以下管道: -

其他服务----> SNS主题----> SQS ----> AWS Lambda ----> Dynamo Db

那么,上面的流程说的是另一项服务将数据推送到SQS将成为订户的SNS主题.现在,AWS Lambda将在此SQS上触发一个触发器,该触发器将侦听SQS中的消息并将其推送到Dynamo Db.虽然看起来没问题.但现在我在想是否真的需要SQS.我可以避免使用它吗?AWS Lambda不是使用SQS,而是在SNS上直接触发.如果我不使用AWS SQS,我只想到一个案例.如果AWS Dynamo DB失败,它将如何处理该方案?我认为只有SNS,我会丢失一些消息,我的Dynamo Db处于失败状态,但如果我有SQS,那么这些消息将存储在SQS队列中.

如果我的理解是正确的,请告诉我.

非常感谢你的帮助.

amazon-sqs amazon-web-services amazon-sns amazon-dynamodb aws-lambda

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

AWS Step Functions:创建新状态机时不显示现有角色列表

问题:

1)我用“ Hello World”蓝图创建新的AWS状态机

2)点击创建状态机按钮

3)它打开一个对话框,然后选择IAM角色下拉列表为空,并且不显示与我的AWS帐户关联的现有IAM角色的列表

调试:

我发现在执行其他操作之前,加载仪表板本身时会引发JS错误。

JS错误:grapheneConsole_prod_963c8da….gz.js:110 POST https://us-west-2.console.aws.amazon.com/states/service/iam/createrole 403(禁止)

因此,我认为它假定用户具有我没有的“创建角色”权限。

如果有人以前遇到过这个问题并解决了。请帮我。

一些额外的信息:我正在使用分配给所有开发人员的公司AWS帐户。同样对于lambda或任何其他AWS资源,我们被赋予了我们应该使用的特定开发人员角色,而我在创建lambda的过程中已将其与其他所有功能成功地结合使用。如果它可以向我显示列表,那么我将选择相同的iam角色

amazon-ec2 amazon-web-services amazon-iam aws-lambda aws-step-functions

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

在localstack中创建API网关

我能够设置localstack(https://github.com/atlassian/localstack)并在其中创建lambda函数(使用create-function ...命令).但是,我找不到在localstack中创建APIGateway的方法,以便可以使用它调用lambda函数.基本上,我需要一个APIGateway(及其arn),以便使用lambda函数可以调用.

aws-lambda aws-api-gateway

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

具有步骤功能的AWS API网关

我想要一个示例将AWS API Gateway与Step Function集成.我已阅读本教程使用API​​网关创建步骤函数API但该教程需要我以格式发送请求

{    
"input": "{}",    
"name": "PostmanExecution",    
"stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:Custom" 
}
Run Code Online (Sandbox Code Playgroud)

我想发送普通请求并仅在API网关中配置此stateMachineArn,以便客户端不需要发送它.

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

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

从Aurora RDS存储过程权限问题调用AWS Lambda

我在AWS中创建了一些Lambda,并创建了Aurora RDS(公开可用)。我无法执行lambdas(通过call mysql.lambda_async)。

当我尝试得到错误时ERROR 1873: 1873: Lambda API returned error: Missing Credentials: Cannot instantiate Lambda Client。

我尝试附加一个名为aurora-lambdas的IAM角色,在其中我设置了对RDS和Lambdas的完全访问权限以及这些服务之间的可信任关系,但是在尝试了各种配置之后,我仍然遇到问题。

有人从RDS成功执行了AWS Lambda吗?谢谢 :)

amazon-web-services amazon-rds aws-lambda amazon-aurora

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

减少无服务器框架发送的节点模块zip的大小

我正在使用无服务器框架编写一些nodejs函数。该package.json文件需要一些依赖项:

{
  "name": "adam-test-sls",
  "version": "0.1.0",
  "description": "Test package to play with sls/lambda",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Adam Matan <adam@binaris.com>",
  "license": "UNLICENSED",
  "dependencies": {
    "aws-sdk": ">= 2.0.9",
    "json": "^9.0.6",
    "underscore": "^1.8.3",
    "uuid": "^3.1.0"
  },
  "devDependencies": {
    "eslint": "^4.2.0",
    "eslint-config-airbnb": "^15.0.2",
    "eslint-config-airbnb-base": "^11.2.0",
    "eslint-plugin-import": "^2.7.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

node-modules目录的大小几乎为50mb:

# du -smc node_modules
47  node_modules
47  total
Run Code Online (Sandbox Code Playgroud)

压缩时间约为9.5MB,部署时间超过35秒:

# time serverless deploy function --function hello -v …
Run Code Online (Sandbox Code Playgroud)

dependencies node.js npm aws-lambda serverless-framework

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

通过API Gateway调用AWS Step函数并等待执行结果

是否可以通过API Gateway端点调用AWS Step功能并监听响应(直到工作流完成并从结束步骤返回结果)?

目前,我能够从文档中找到步骤函数本质上是异步的,并在最后进行最终回调.我需要API调用响应从步骤函数流中获取最终结果而不进行轮询.

amazon-web-services aws-lambda aws-step-functions

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