适用于初学者的AWS Lambda

AWS Lambda是Amazon的计算服务。 它使部署和配置非常简单,并且非常适合基于微服务的体系结构。 您可以在此处找到有关AWS Lambda的更多信息。 当前支持的平台是JVM,Node JS和Python。

lambda的编程模型包括Handler,Context Object,Logging和Exceptions 。 这些在这里描述。 Lambda不能保持状态,因为它们会根据需要进行调高和复制。 持久状态应存储在lambda生命周期之外的服务中,例如Amazon DynamoDB,S3等。

首先,请按照此处的说明设置AWS账户和AWS命令行界面,并记下您的账户ID。

步骤1:代码

最基本的lambda在Python中如下所示:

def lambda_handler(event, context):
  return "Hello World!"

或类似于Java中的以下内容:

package example;

import com.amazonaws.services.lambda.runtime.Context; 

public class Hello {
    public String lambdaHandler(String event, Context context) {
        return "Hello World!";
    }
}

您可以按照此处的冗长说明来部署此功能……但这并不好玩! 让我们尽情发挥风格吧;)

将上面的Python代码粘贴到名为helloworld.py的文件中。 如果要使用Java版本,请按照此处的说明构建Lambda并使用Maven创建部署程序包。

步骤2:角色

创建一个trust.json文件。 信任使我们的职能可以承担AWS Lambda的角色

trust.json我们允许函数承担lambda.amazonaws.com服务的角色,否则基础结构将不允许我们的函数运行。

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "",
    "Effect": "Allow",
    "Principal": {
      "Service": "lambda.amazonaws.com"
    },
    "Action": "sts:AssumeRole"
  }]
}

步骤3:部署

创建以下脚本( deploy.sh )。 注意:该脚本假定您已设置AWS_ACCOUNT_ID环境变量。

#!/bin/bash

### Create the lambda package
zip -j helloworld.zip *.py

### Create the role for the lambda to assume
role="helloworld_exec_role"
trust="trust.json"
aws iam create-role --role-name $role --assume-role-policy-document file://$trust
aws iam update-assume-role-policy --role-name $role --policy-document file://$trust

### Create the lambda function
function_name="helloworld"
handler_name="helloworld.lambda_handler"
package_file=helloworld.zip
runtime=python2.7
aws lambda create-function \
  --function-name $function_name \
  --handler $handler_name \
  --runtime $runtime \
  --memory 512 \
  --timeout 60 \
  --role arn:aws:iam::${AWS_ACCOUNT_ID}:role/$role \
  --zip-file fileb://$package_file

或对于Java:

#!/bin/bash

### Create the lambda package
mvn package

### Create the role for the lambda to assume
role="helloworld_exec_role"
trust="trust.json"
aws iam create-role --role-name $role --assume-role-policy-document file://$trust
aws iam update-assume-role-policy --role-name $role --policy-document file://$trust

### Create the lambda function
function_name="helloworld"
handler_name="example.Hello::lambdaHandler"
package_file="target/lambda-java-example-1.0-SNAPSHOT.jar"
runtime="java8"
aws lambda create-function \
  --function-name $function_name \
  --handler $handler_name \
  --runtime $runtime \
  --memory 512 \
  --timeout 60 \
  --role arn:aws:iam::${AWS_ACCOUNT_ID}:role/$role \
  --zip-file fileb://${package_file}

使脚本可执行文件chmod +x deploy.sh并部署lambda ./deploy.sh 。 您可能会收到以下错误:“ Lambda无法承担为函数定义的角色。” 这是因为该角色尚未在亚马逊基础设施中复制。 只需再次运行部署脚本。 它将抱怨该角色已经存在,但是这次lambda创建应该通过。 将来,我们将检查状态,以确保在部署功能之前已完全创建角色。

步骤5:执行!

使用以下命令调用您的lambda。 您应该在名为output.txt的文件中看到结果

aws lambda invoke --invocation-type RequestResponse --function-name helloworld --payload '[""]' output.txt

步骤6:清理

要删除lambda函数,然后将该角色粘贴到delete.sh

#!/bin/bash
role="helloworld_exec_role"
function_name="helloworld"
aws lambda delete-function --function-name $function_name
aws iam delete-role --role-name $role

然后使脚本可执行文件chmod +x delete.sh并执行./delete.sh

第7步:放松……您已经到达;)

…,等待有关AWS frolics的下一篇文章

翻译自: https://www.javacodegeeks.com/2016/05/aws-lambda-beginners.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值