AWS Lambda开发者CLI工具
项目描述
Kappa 是一个命令行工具,希望它可以让部署、更新和测试AWS Lambda函数变得更加容易。
开发Lambda函数涉及到很多步骤。你需要
编写函数本身
创建Lambda函数所需的IAM角色(执行角色),以便它能够访问执行任务所需的任何资源
如果Lambda函数将用于推模式(例如S3、SNS)而不是拉模式,则需要为Lambda函数添加额外的权限。
将函数及其依赖项压缩,然后上传到AWS Lambda
使用模拟数据测试函数
从CloudWatch日志中检索函数的输出
向函数添加事件源
查看实时函数的输出
卡帕(Kappa)试图帮助您完成部分工作。它根据您告诉它需要访问的资源,为您创建所有IAM策略。它为您创建IAM执行角色,并将策略与之关联。卡帕会将函数及其任何依赖项压缩,并上传到AWS Lambda。它还会向上传的函数发送测试数据,并查找相关的CloudWatch日志流并显示日志事件。最后,它将事件源添加到您的函数中,以将其打开。
如果您需要做出更改,卡帕将允许您轻松地使用新代码更新您的Lambda函数或根据需要更新事件源。
安装
获取卡帕的最快方式是通过pip安装最新稳定版本
pip install kappa
或开发版本
pip install git+https://github.com/garnaat/kappa.git
快速入门
为了了解卡帕的工作方式,让我们看一下卡帕发行包中的samples/simple目录中的一个非常简单的示例。这个示例实际上非常简单,几乎什么都没做。它只是一个小的Lambda函数(用Python编写),接受一些JSON输入,将输入记录到CloudWatch日志中,并返回一个JSON文档。
目录结构如下
simple/ ├── _src │ ├── README.md │ ├── requirements.txt │ ├── setup.cfg │ └── simple.py ├── _tests │ └── test_one.json └── kappa.yml.sample
在目录中我们看到
kappa.yml.sample,这是项目的示例YAML配置文件
_src,这是一个包含Lambda函数源代码的目录
_test,这是一个包含一些测试数据的目录
第一步是复制示例配置文件
cd simple
cp kappa.yml.sample kappa.yml
现在您需要编辑kappa.yml以适应您的使用。文件看起来像这样
---
name: kappa-simple
environments:
dev:
profile: <your profile here>
region: <your region here>
environment_variables:
<key 1>: <value 1>
<key 2>: <value 2>
policy:
resources:
- arn: arn:aws:logs:*:*:*
actions:
- "*"
prod:
profile: <your profile here>
region: <your region here>
policy:
resources:
- arn: arn:aws:logs:*:*:*
actions:
- "*"
lambda:
description: A very simple Kappa example
handler: simple.handler
runtime: python2.7
memory_size: 128
timeout: 3
顶部的name只是一个用于此Lambda函数以及与此Lambda函数相关的其他事物(例如角色、策略等)的名称。
environments部分是我们定义希望部署此Lambda函数的不同环境的地方。每个环境由一个profile(如AWS CLI和其他AWS工具中使用)和一个region标识。您可以定义任意多的环境,但每次调用kappa都将处理单个环境。环境可以包含可选的环境变量,作为键值对。每个环境部分还包括一个policy部分。这是我们告诉卡帕我们的Lambda函数需要访问哪些AWS资源以及它需要的访问类型的地方。例如,您的Lambda函数可能需要从SNS主题中读取或向DynamoDB表写入,您就会在这里提供标识这些资源的ARN(Amazon Resource Name)。由于这是一个非常简单的示例,这里列出的唯一资源是为了CloudWatch日志,这样我们的Lambda函数就能够写入AWS Lambda将为我们自动创建的CloudWatch日志组。
lambda部分包含关于我们的Lambda函数的配置信息。这些值在创建函数时传递给Lambda,之后可以随时更新。
为了修改以供您使用,您只需在环境部分中输入正确的profile和region值即可。您还可以更改环境名称,但名称dev是kappa默认使用值,所以避免输入是很方便的。
一旦您完成了必要的修改,您就应该准备好将Lambda函数部署到AWS Lambda服务。要这样做,只需这样做
kappa deploy
这假设您想部署默认的环境dev,并且您的配置文件名为kappa.yml。如果您的环境名为test,配置文件名为foo.yml,您将这样做
kappa --env test --config foo.yml deploy
在任何情况下,您都应该看到类似以下输出的内容
kappa deploy
# deploying
# ...deploying policy kappa-simple-dev
# ...creating function kappa-simple-dev
# done
所以,kappa所做的就是它创建了一个新的管理策略kappa-simple-dev,该策略允许访问CloudWatch日志服务。它还创建了一个名为kappa-simple-dev的IAM角色,该角色使用该策略。最后,它将我们的Python代码打包,并在AWS Lambda中创建了一个名为kappa-simple-dev的函数。
要测试一下,试试这个
kappa invoke _tests/test_one.json
# invoking
# START RequestId: 0f2f9ecf-9df7-11e5-ae87-858fbfb8e85f Version: $LATEST
# [DEBUG] 2015-12-08T22:00:15.363Z 0f2f9ecf-9df7-11e5-ae87-858fbfb8e85f {u'foo': u'bar', u'fie': u'baz'}
# END RequestId: 0f2f9ecf-9df7-11e5-ae87-858fbfb8e85f
# REPORT RequestId: 0f2f9ecf-9df7-11e5-ae87-858fbfb8e85f Duration: 0.40 ms Billed Duration: 100 ms Memory Size: 256 MB Max Memory Used: 23 MB
#
# Response:
# {"status": "success"}
# done
我们刚刚调用了我们的Lambda函数,将文件_tests/test_one.json的内容作为函数的输入。我们可以看到调用CloudWatch日志的输出,我们可以在Python函数中看到日志调用,该函数打印出传递给函数的event(数据)。最后,我们可以看到函数的响应,目前,它只是函数返回的硬编码数据结构。
需要更改您的函数、资源列表或函数配置?只需进行更改,然后重新运行deploy命令
kappa deploy
Kappa会找出发生了什么变化,并为您做出必要的更新。
这就是对kappa的快速概述。要了解更多信息,我建议您查看教程。
策略
举手谁喜欢编写IAM策略。是的,我想这就是您想的。使用Kappa,有了一种编写策略并授予Lambda函数所需权限的简化方法。
简化版本允许您在kappa.yml文件中指定您想要访问的资源ARN,然后指定您想要允许的API方法列表。例如
policy:
resources:
- arn: arn:aws:logs:*:*:*
actions:
- "*"
要使用官方IAM策略格式表达这一点,您可以使用以下语句代替
policy:
statements:
- Effect: Allow
Resource: "*"
Action:
- "logs:*"
这两者都做了同样的事情。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
kappa-0.7.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 029ac70d6e58e619b38adc72f8caafade4047776176ec9c242fa4b0f2c101d3f |
|
MD5 | 07ed91b5ee0d663597b33df85c7d0ea4 |
|
BLAKE2b-256 | 9e67c064a0b48f3aaee38aa810e09e6c3c97857e9c9a69cb2e6f79da650ec054 |
kappa-0.7.0-py2-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2c654f2a171c97ed7f1d0d20b09d6bdf9e66526ceb4e08624e821fac1b4c91b |
|
MD5 | 5e7aef15acd68e9da6b1121aa38adbca |
|
BLAKE2b-256 | 1d3e11acb27e111b9c2c36e729f0cd6af16a904cd77bf376618e224ae2f4ecf5 |