【发布时间】:2018-12-26 10:38:33
【问题描述】:
VPC 内的 AWS lambda 服务是否可以在不应用 AWSLambdaVPCAccessExecutionRole 的情况下访问同一 VPC 内的 elasticsearch 服务?不知道有没有可能?如果有人知道,请告诉我程序。
【问题讨论】:
标签: amazon-web-services aws-lambda aws-elasticsearch
VPC 内的 AWS lambda 服务是否可以在不应用 AWSLambdaVPCAccessExecutionRole 的情况下访问同一 VPC 内的 elasticsearch 服务?不知道有没有可能?如果有人知道,请告诉我程序。
【问题讨论】:
标签: amazon-web-services aws-lambda aws-elasticsearch
要访问您的 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 中没有网络接口您无法访问这些私有资源。
【讨论】:
AWSLambdaVPCAccessExecutionRole 角色拥有ec2:CreateNetworkInterface 访问VPC 中资源的权限,这是否意味着一个lambda 函数实际上正在EC2 实例上运行?