--- title: "手动创建lambda函数" draft: false chapter: false hidden: true --- ## é…ç½® Lambda Execution Role 1. [点击æ¤å¤„打开IAM 控制å°](https://console.aws.amazon.com/iam/home?region=us-east-1#/roles), 选择 **Roles** 1. 点击 **Create Role** 1. 在 Choose the service that will use this role ä¸, 选择 **Lambda** 1. 点击 **Next: Permissions**, **Next: Tags**, **Next: Review** 1. 在 Review 页é¢, 对于**Role name** 输入 `alexa-lambda-role`, 并且点击 **Create role** 1. 选择刚æ‰åˆ›å»ºçš„ `alexa-lambda-role`, 在 **Permissions** ä¸, 选择 **Add inline policy** 1. 在 Create Policy 页é¢, 选择 **JSON**, å¤åˆ¶å¹¶é»è´´å¦‚下的 Policy. 请务必更改 `<device-table-name>`. 到 DynamoDB 的控制å°ä¸ç¡®è®¤è¡¨çš„åç§°. 如何您按照[创建设备绑定程åº]({{< ref "1.build-device-ui.zh.md" >}})执行, 一个 DynamoDB 表已ç»è¢«åˆ›å»º. 以下的 Policy æŽˆæƒ Lambda å¯ä»¥è¯»å–设备表ä¸çš„æ•°æ®ï¼Œå¹¶ä¸”å°†è¿è¡Œæ—¶äº§ç”Ÿçš„æ—¥å¿—ä¿¡æ¯è¾“出到 CloudWatch Logs. ```json { "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "dynamodb:Query" ], "Resource": [ "arn:aws:dynamodb:*:*:table/<device-table-name>/index/ByUsernameThingName" ], "Effect": "Allow" }, { "Action": [ "iot:UpdateThingShadow" ], "Resource": [ "*" ], "Effect": "Allow" } ] } ``` 1. 点击 **Review Policy** 1. 在 **Name** å—æ®µ, 输入一个åç§° 1. 点击 **Create Policy** ## 创建 Lambda 1. 打开 [Lambda 控制å°](https://console.aws.amazon.com/lambda/home?region=us-east-1), 点击 **Create function** 1. 选择 **Select Author from scratch**, 并且输入以下信æ¯: - Name: Lambda 方法的åç§° - Runtime: **Node.js 10.x** - Role: 选择在[é…ç½® Lambda Execution Role](#é…ç½®-lambda-execution-role)ä¸åˆ›å»ºçš„角色  1. 点击 **Create Function**. Lambda 方法已ç»åˆ›å»ºï¼Œå¹¶ä¸”会被自动导航到 **Configuration** 1. 在 **Configuration** designer ä¸, 在 **Add triggers** 下, 选择 **Alexa Smart Home trigger** 1. 在 **Configure triggers** ä¸, 输入 **Skill ID**,这个 Skill ID å¯ä»¥åœ¨ Alexa Developer 控制å°ä¸æ‰¾åˆ°ã€‚ 1. ä¿æŒ **Enable trigger** 选ä¸. 这个选项,让 Lambda å¯ä»¥æŽ¥å—æ¥è‡ª Amazon Alexa 的指令。如果您关é—这个选项,Lambda å°†æ— æ³•æ”¶åˆ°æŒ‡ä»¤ã€‚ 1. 点击 **Add**,然åŽé€‰æ‹© **Save** ## æ‰“åŒ…ä¸Šä¼ ä»£ç 1. 首先,您需è¦ä¸‹è½½è¿™ä¸ª [GitHub Repo](https://github.com/aws-samples/aws-alexa-workshop-smarthome), 进入您的 Cloud9 çŽ¯å¢ƒæ ¹ç›®å½•, 在 terminal ä¸è¾“å…¥ ```shell git clone https://github.com/aws-samples/aws-alexa-workshop-smarthome cd aws-alexa-workshop-smarthome ``` 1. 编辑 `config.json` 文件, 您å¯ä»¥åœ¨ AWS 控制å°ï¼Œå’Œ Alexa Developer 控制å°ä¸æ‰¾åˆ°ç›¸å…³çš„ä¿¡æ¯ 1. è¿è¡Œ `npm install --production` 安装ä¾èµ– 1. å°† `index.js`, `auth.js`, `config.json`, `alexa/` and `node_modules/` 进行打包 这些文件/文件夹必须ä½äºŽ ZIP æ–‡ä»¶çš„æ ¹ç›®å½•ä¸‹ ``` zip -q -r lambda.zip index.js auth.js config.json alexa/ node_modules/ ```  1. 将这个 ZIP 文件下载到本地 1. 打开 AWS Lambda 控制å°ï¼Œé€‰æ‹©åˆšæ‰åˆ›å»ºçš„ Lambda 方法 1. 在 **Function Code** ä¸ï¼Œåœ¨ **Code entry type** ä¸é€‰æ‹© **Upload a .zip file** 1. 选择 **Upload** æ¥ä¸Šä¼ ZIP 文件 1. 点击å³ä¸Šè§’çš„ **Save** 按钮