0

尝试部署 Alexa Skill。我之前使用过node.js来部署技能,但从来没有使用过python。我使用 Flask-ASK 框架开发代码并使用 HTTPS enpoint 和 ngrok 进行测试。测试代码是成功的,所以我正在尝试部署。我按照 AWS 的说明将 python 文件和依赖项压缩到同一个根文件夹中,并且只压缩内容,而不是文件夹本身。.zip 文件太大,我无法直接上传到 lamda(16.1 MB - 尝试上传超时),所以我尝试使用 Amazon S3 云服务。这是非常直截了当的,所以我认为我在这方面没有犯任何错误。创建了我的存储桶并上传了我的 zip。将路径输入 lambda。下一步是我不确定什么是对/错的地方。我必须定义 lambda_handler。我唯一编辑和创建的 python 脚本的标题是main .py --> main .lambda_handler 我假设 {如何将 python 库添加到 Alexa 的 AWS lambda 函数?}。Alexa Developer Portal 已正确配置为 lambda 函数 ID。我保存它,构建函数,切换到测试,调用技能,然后我得到“出现问题......等等”。回复。

显示 zip 的根目录(文件夹刚刚解压缩以显示内容预览)-.py 文件和依赖项位于同一文件夹级别 显示 zip 的根目录(文件夹刚刚解压缩以显示内容预览)- __main__.py 文件和依赖项位于同一文件夹级别

显示 S3 路径和上传名称(实际上是上传的 - 我只是在上传新版本之前抓取了图片) 显示开发者控制台设置[![][2]

显示开发者控制台设置 显示 S3 路径和上传名称(实际上是上传的 - 我只是在上传新版本之前抓取了图片)[![][3]

4

1 回答 1

1

问题在于权限。很难找到,但 IAM 角色需要从 S3 读取的权限(我刚刚授予它完全 S3 访问权限,但您可以限制读取)

  1. 导航到 console.aws.amazon.com -> 登录
  2. 滚动到安全、身份和合规性
  3. 选择 IAM -> 角色(在窗口左侧)
  4. 创建角色 -> 选择 Lambda 作为将使用该角色的 AWS 服务
  5. 附加 S3 的权限 -> Add 和 AWSLambdaExecute 以及以下之一:AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess
  6. 为角色命名
  7. 切换到 Lambda 控制台并将此角色用于 lambda 函数

自从我这样做以来已经有几个月了。因此,如果这对您不起作用,请告诉我,稍后我将深入研究文档。但据我记得,这应该是你需要的。

于 2018-07-30T16:06:47.933 回答