aws python lambda_尝试 AWS Lambda for Python

十月的 AWS 大会发布了 AWS Lambda 对 Python 的支持,正好手头有个小任务适合这个场景。任务的需求很简单,如果给定 receipt 和 shared password,访问 Apple In-App Purchase Validation Sandbox 来验证。

Lambda function 本身当然很简单:

# lambda_function.py

import itunesiap

def lambda_handler(event, context):

receipt = event['receipt-data']

password = event.get('password')

with itunesiap.env.sandbox:

r = itunesiap.verify(receipt, password)._

return r

麻烦在于使用了一个 itunes-iap 模块, 需要按照 AWS 官方文档创建个部署包。

具体步骤是:

实现 lambda function 的文件叫 lambda_function.py,而且此文件得存在于 文件夹的根

pip install itunes-iap -t

cd ; zip -r ../r01.zip *

然后把打包生成的 r01.zip 通过 Lambda Console 上传发布即可。

通常你不会去注意 site-packages 下都安装了哪些依赖包,所以如果你看到 文件夹里的内容,也许会吓你一跳。我们只用了一个依赖,居然实际引入了这么多包。

r01.zip 里的内容

为了运行不到十行代码,最终得上传将近 5MB 的压缩包。如果你的网络上传到 S3 也不够快的话,建议在 EC2 instance 上用 s3 copy 等手段来快速上传。

完成效果如下:

» http POST https://u0m4f1nca2.execute-api.us-west-2.amazonaws.com/sandbox/test_iap < test.json

HTTP/1.1 200 OK

Connection: keep-alive

Content-Length: 626

Content-Type: application/json

Date: Mon, 28 Dec 2015 15:02:24 GMT

Via: 1.1 b84e1462f13daaeb732c61ea2aa9b852.cloudfront.net (CloudFront)

X-Amz-Cf-Id: XWSIdlbxL6Y32aTNrkQ79AZ6VafoV5WgTDsw4oa1zAAc38Iwg6A0iQ==

X-Cache: Miss from cloudfront

x-amzn-RequestId: ff58ec27-ad73-11e5-9c46-f75ab4034ce2

{

"receipt": {

"bid": "com.vanillabreeze.igunbattle",

"bvrs": "1.0",

"item_id": "554499305",

"original_purchase_date": "2012-09-21 01:31:38 Etc/GMT",

"original_purchase_date_ms": "1348191098192",

"original_purchase_date_pst": "2012-09-20 18:31:38 America/Los_Angeles",

"original_transaction_id": "1000000056161764",

"product_id": "BattleGold50",

"purchase_date": "2012-09-21 01:31:38 Etc/GMT",

"purchase_date_ms": "1348191098192",

"purchase_date_pst": "2012-09-20 18:31:38 America/Los_Angeles",

"quantity": "1",

"transaction_id": "1000000056161764",

"unique_identifier": "42c1b3d45563820dd9a59c79a75641001fc85e39"

},

"status": 0

}

其他:

还好这段代码的依赖树中都是纯 Python 包。如果是有 C 模块的依赖,步骤就要更为复杂些了。

原来叫 JAWS,现在改名为 serverless 的项目,也正在加入对 Python 的支持。等这个项目再完善些,开发和使用 AWS Lambda 就能有更好的工具和框架支持。

参考:

Serverless (formerly JAWS): The serverless application framework – Use bleeding-edge AWS services to redefine how to build massively scalable (and cheap) apps!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值