通过 AWS Lambda 启动 EC2 实例

Starting an EC2 instance via AWS Lambda

我正在尝试在 AWS 上创建一个 lambda 函数来启动和停止 EC2 实例,但出现以下错误

botocore.exceptions.ClientError: An error occurred (UnauthorizedOperation) when calling the StartInstances operation: You are not authorized to perform this operation.

我应该采取什么步骤来阻止这个错误?我不是开发人员,只是想通过 EC2 运行 一些 ML 模型。我阅读了一些关于创建 IAM 角色的内容,这是我通过完整的 EC2 访问权限完成的,但我不确定如何在 lambda 函数中使用相同的角色。任何人都可以指导我吗?

创建 AWS Lambda 函数时,您为该函数分配了一个 IAM 角色

当函数进行 AWS API 调用时,它使用 IAM 角色中提供的权限来调用其他 AWS 服务。

因此,您应该:

  • 为 Lambda 函数创建一个具有足够权限的 IAM 角色(但最好不要太多权限,因为它可能会产生安全漏洞)
  • 将 IAM 角色分配给 Lambda 函数

您的函数至少需要 ec2:StartInstances 权限。它可能还需要其他权限,具体取决于启动实例时使用的设置。