跳转到主要内容

AWS Lambda开发者CLI工具

项目描述

https://travis-ci.org/garnaat/kappa.svg?branch=develop https://landscape.io/github/garnaat/kappa/develop/landscape.svg

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,之后可以随时更新。

为了修改以供您使用,您只需在环境部分中输入正确的profileregion值即可。您还可以更改环境名称,但名称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 (30.4 KB 查看散列值

上传时间

构建分发

kappa-0.7.0-py2-none-any.whl (37.9 kB 查看哈希值)

上传时间 Python 2

支持