【问题标题】:if lambda function inside a VPC can access the Elastic search in same VPC without the AWSLambdaVPCAccessExecutionRole如果 VPC 中的 lambda 函数可以在没有 AWSLambdaVPCAccessExecutionRole 的情况下访问同一 VPC 中的弹性搜索
【发布时间】:2018-12-26 10:38:33
【问题描述】:

VPC 内的 AWS lambda 服务是否可以在不应用 AWSLambdaVPCAccessExecutionRole 的情况下访问同一 VPC 内的 elasticsearch 服务?不知道有没有可能?如果有人知道,请告诉我程序。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-elasticsearch


    【解决方案1】:

    要访问您的 VPC 中的资源,您需要为您的 lambda 函数指定子网和/或安全性,如 official documentation 中所述。

    子网决定了您的函数将在其中运行的 VPC 和可用区(或至少将在其中创建其弹性网络接口 - ENI)。关联的安全组决定,您的 VPC 中其他资源的端口是否可以访问。

    关于您的 AWSLambdaVPCAccessExecutionPolicy,documentation 声明:

    AWSLambdaVPCAccessExecutionRole – 授予 Amazon 权限 用于管理弹性网络的 Elastic Compute Cloud (Amazon EC2) 操作 接口(ENI)。如果您正在编写一个 Lambda 函数来访问 Amazon Virtual Private Cloud (Amazon VPC) 中的 VPC 中的资源 服务,您可以附加此权限策略。该政策还 授予 CloudWatch Logs 操作写入日志的权限。

    我目前无权访问我的帐户,但 google 告诉我政策文件如下所示:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents",
            "ec2:CreateNetworkInterface",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DeleteNetworkInterface"
          ],
          "Resource": "*"
        }
      ]
    }
    

    这意味着该策略授予在您的 VPC 中创建上述弹性网络接口的权限,因此将是必要的,因为在 VPC 中没有网络接口您无法访问这些私有资源。

    【讨论】:

    • 我应该在哪里附上这个政策?
    • 需要将此策略添加到您的函数的 Lambda 执行角色中。
    • 所以我必须将此策略创建为 IAM 中的一个角色,然后该角色应添加到 lambda 函数中。我说的对吗?
    • 只是好奇为什么这个AWSLambdaVPCAccessExecutionRole 角色拥有ec2:CreateNetworkInterface 访问VPC 中资源的权限,这是否意味着一个lambda 函数实际上正在EC2 实例上运行?
    • @cifer 是的,或多或少 - 许多服务都建立在 EC2 实例之上。 Lambda 使用Firecracker MicroVMs 运行同一台机器,这些机器为 EC2 提供支持来托管函数。
    猜你喜欢
    • 1970-01-01
    • 2019-12-31
    • 2019-05-23
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    相关资源
    最近更新 更多