在 AWS 上承担 elasticsearch 的角色
Assume role for elasticsearch on AWS
我有一些 lambda 函数将日志从 AWS 发送到我的 Elastic 搜索集群,它运行良好。
Lambda 函数具有以下作用:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
},
{
"Effect": "Allow",
"Action": "es:ESHttpPost",
"Resource": "arn:aws:es:*:<ACCOUNT_ID>:*"
}
]
}
但现在我想在 ec2 实例上设置我自己的弹性搜索 运行,这样我就可以安装 X-Pack 和 Kibana。
如何让我的 lambda 函数将日志发布到我的自定义弹性搜索?
非常感谢
由于您将 运行在 ec2 机器上安装自己的 elasticsearch 实例,并且您希望启用来自 lambda 的访问,因此您不需要任何 IAM 访问策略。
如果您的 lambda 函数在默认配置中是 运行ning,(无 VPC),它可以访问互联网。所以它必须访问的任何 URL 必须是 public。您必须为您的 EC2 实例分配一个 public IP,并通过您的安全组公开端口 9200 或任何端口。
我不推荐这种方法,因为它会将您的 elasticsearch 暴露给全世界。
您需要从 VPC 运行 您的 lambda 函数,并为您的子网的 CIDR 范围启用对 elasticsearch 集群的访问,其中 lambda 将是 运行ning。
要使 Kibana 正常工作,您需要在安全组中添加另一条规则,以允许从 select 个 IP 地址访问端口 9200,例如。你的工作场所。
我有一些 lambda 函数将日志从 AWS 发送到我的 Elastic 搜索集群,它运行良好。 Lambda 函数具有以下作用:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
},
{
"Effect": "Allow",
"Action": "es:ESHttpPost",
"Resource": "arn:aws:es:*:<ACCOUNT_ID>:*"
}
]
}
但现在我想在 ec2 实例上设置我自己的弹性搜索 运行,这样我就可以安装 X-Pack 和 Kibana。
如何让我的 lambda 函数将日志发布到我的自定义弹性搜索?
非常感谢
由于您将 运行在 ec2 机器上安装自己的 elasticsearch 实例,并且您希望启用来自 lambda 的访问,因此您不需要任何 IAM 访问策略。
如果您的 lambda 函数在默认配置中是 运行ning,(无 VPC),它可以访问互联网。所以它必须访问的任何 URL 必须是 public。您必须为您的 EC2 实例分配一个 public IP,并通过您的安全组公开端口 9200 或任何端口。
我不推荐这种方法,因为它会将您的 elasticsearch 暴露给全世界。
您需要从 VPC 运行 您的 lambda 函数,并为您的子网的 CIDR 范围启用对 elasticsearch 集群的访问,其中 lambda 将是 运行ning。
要使 Kibana 正常工作,您需要在安全组中添加另一条规则,以允许从 select 个 IP 地址访问端口 9200,例如。你的工作场所。