如何将数据从 AWS S3 导入到 Elastic Cloud - 第 1 部分:Elastic Serverless Forwarder

作者:来自 Elastic Hemendra Singh Lodhi

这是多部分博客系列的第一部分,探讨了将数据从 AWS S3 导入 Elastic Cloud 的不同选项。

Elasticsearch 提供了多种从 AWS S3 存储桶导入数据的选项,允许客户根据其特定需求和架构策略选择最合适的方法。

这些是从 AWS S3 导入数据的主要选项:

  • Elastic Serverless Forwarder (ESF) - 我们在本博客中的重点
  • Elastic Agent - 第 2 部分
  • Elastic S3 Native Connector - 第 3 部分

选项比较

FeaturesESFElastic AgentS3 Connector
Logs✅[[^1]]
Metrics✅[[^2]]
CostMedium-Lambda,SQSLow-EC2,SQSLow-Elastic Enterprise Search
ScalingAuto - UnlimitedEC2 instance sizeEnterprise Search Node size
OperationLow - Monitor Lambda functionHigh - Manage AgentsLow
PrivateLinkNA (Pull from S3)
Primary Use CaseLogs

注 1:由于 AWS 对可触发 Lambda 函数的服务有限制,并且你无法使用 CloudWatch 指标上的订阅过滤器调用 Lambda,因此 ESF 不支持指标收集。但是,考虑到成本,可以将指标存储在 S3 中,并通过 SQS 触发提取到 Elastic。

注 2:虽然 S3 连接器可以从 S3 存储桶中提取日志和指标,但它最适合提取内容、文件、图像和其他数据类型

在本博客中,我们将重点介绍如何使用 Elastic Serverless Forwarder (ESF) 从 AWS S3 中提取数据。在接下来的部分中,我们将探索 Elastic Agent 和 Elastic S3 Native Connector 方法。

让我们开始吧。

按照以下步骤启动 Elastic Cloud 部署:

Elastic Cloud

1)如果尚未创建,请创建一个帐户,并在 AWS 中创建 Elastic 部署。

2)创建部署后,请记下 Elasticsearch 端点。可以在 Elastic Cloud 控制台的-> Manage ->  Deployments 下找到它。

Elastic Serverless Forwarder

Elastic Serverless Forwarder 是一个 AWS Lambda 函数,可将 VPC Flow 日志、WAF、Cloud Trail 等日志从 AWS 环境转发到 Elastic。它可用于将数据发送到 Elastic Cloud 以及进行自我管理部署。

功能

  • 支持多个输入
    • S3(通过 SQS 事件通知)
    • Kinesis 数据流
    • CloudWatch Logs 订阅过滤器
    • SQS 消息负载
  • 使用 “continuing queue” 和 “replay queue”(由无服务器转发器自动创建)至少传递一次
  • 支持通过 PrivateLink 进行数据传输,允许在 AWS 虚拟私有云(或 VPC)内而不是在公共网络上传输数据。
  • Lambda 函数是一种 AWS 无服务器计算托管服务,可根据代码执行请求自动扩展
  • 函数执行时间经过优化,并根据需要分配最佳内存大小
  • 按使用量付费定价,只需为 Lambda 函数执行期间的计算时间和 SQS 事件通知付费

数据流

我们将使用 S3 输入和 SQS 通知将 VPC 流日志发送到 Elastic Cloud:

  • VPC 流日志配置为写入 S3 存储桶
  • 将日志写入 S3 存储桶后,S3 事件通知 (S3:ObjectCreated) 将发送到 SQS
  • 包含事件元数据的 SQS 事件通知触发 Lambda 函数,该函数从存储桶中读取日志
  • 部署转发器时会创建连续队列(Continuing queue),并确保至少交付一次。转发器会跟踪上次发送的事件,并在转发器函数超过 15 分钟的运行时间(Lambda 最大默认值)时帮助处理待处理事件
  • 部署转发器时也会创建重放队列(Replay queue),并处理日志提取异常。转发器会跟踪失败的事件并将其写入重放队列以供以后提取。例如,在我的测试中,我输入了错误的 Elastic API 密钥,导致身份验证失败,从而填满了重放队列。你可以启用重播队列作为 ESF lambda 函数的触发器,以再次使用来自 S3 存储桶的消息。首先解决交付失败很重要;否则消息将在重放队列中累积。你可以永久设置此触发器,但可能需要根据消息失败问题删除/重新启用。要启用触发器,请转到 SQS -> elastic-serverless-forwarder-replay-queue- -> under Lambda triggers -> Configure Lambda function trigger -> Select the ESF lamnda function

设置

1)创建 ​​S3 存储桶 s3-vpc-flow-logs-elastic 来存储 VPC 流日志

AWS Console -> S3 -> Create bucket.。你可以将其他设置保留为默认设置,也可以根据要求进行更改:

复制存储桶 ARN,下一步配置流日志时需要此 ARN:

2)启用 VPC Flow 日志并发送到 S3 bucket s3-vpc-flow-logs-elastic

AWS Console -> VPC -> Select VPC -> Flow logs。保留其他设置或根据要求进行更改:

提供流日志的名称,选择要应用的过滤器、聚合间隔和流日志存储的目标:

完成后,它将如下所示,以 S3 为目的地。今后,通过此 VPC 的所有流量都将存储在存储桶 s3-vpc-flow-logs-elastic 中:

3)创建 SQS 队列

注 1:在与 S3 存储桶相同的区域中创建 SQS 队列

注 2:将可 visiblity timeout 设置为 910 秒,比 AWS Lambda 函数最大运行时间 900 秒多 10 秒。

AWS Console -> Amazon SQS -> Create queue

提供队列名称并将可见性超时更新为 910 秒。Lambda 函数最多运行 900 秒(15 分钟),为可见性超时设置更高的值允许消费者 Elastic Serverless Forwarder(ESF)处理并从队列中删除消息:

更新 SQS 访问策略(高级)以允许 S3 存储桶向 SQS 队列发送通知。将 account-id 替换为你的 AWS 帐户 ID。保留其他选项的默认设置。

在这里,我们指定 S3 从 S3 存储桶向 SQS 队列 (ARN) 发送消息:

{"Version": "2012-10-17","Id": "example-ID","Statement": [{"Sid": "example-statement-ID","Effect": "Allow","Principal": {"Service": "s3.amazonaws.com"},"Action": "SQS:SendMessage","Resource": "arn:aws:sqs:ap-southeast-2:<account-id>:sqs-vpc-flow-logs-elastic-serverless-forwarder","Condition": {"StringEquals": {"aws:SourceAccount": "<account-id>"},"ArnLike": {"aws:SourceArn": "arn:aws:s3:::s3-vpc-flow-logs-elastic"}}}]
}

有关 AWS 集成的权限要求(IAM 用户)的更多详细信息,请参见此处。

在“详细信息”下的队列设置中复制 SQS ARN:

4)在 S3 存储桶中启用 VPC 流日志事件通知

AWS Console > S3. Select bucket s3-vpc-flow-logs-elastic -> Properties and Create event notification

提供名称以及你想要触发 SQS 的事件类型。我们已选择在将任何对象添加到存储桶时创建对象:

选择 destination 为  SQS queue 并选择 sqs-vpc-flow-logs-elastic-serverless-forwarder:

保存后,配置将如下所示:

创建另一个 S3 存储桶来存储 Elastic Serverless Forwarder 的配置文件:

创建一个名为 config.yaml 的文件并使用以下配置进行更新。完整选项集在此处:

inputs:- type: "s3-sqs"id: "arn:aws:sqs:ap-southeast-2:xxxxxxxxxx:sqs-vpc-flow-logs-elastic-serverless-forwarder"outputs:- type: "elasticsearch"args:# either elasticsearch_url or cloud_id, elasticsearch_url takes precedence if both are includedelasticsearch_url: "https://e286410s58ae4ad6a446c10596ked613.ap-southeast-2.aws.found.io:443"#cloud_id: "cloud_id:bG9jYWxob3N0OjkyMDAkMA=="# either api_key or username/password, username/password takes precedence if both are includedapi_key: "LlVqN3Q1RUi3TThuexxxxxxxxxx9RlJRdjniY0JubktEdm9oOUtaNU9mdw=="#username: "username"#password: "password"#es_datastream_name: "aws.vpcflow"es_dead_letter_index: "esf-dead-letter-index" # optionalbatch_max_actions: 500 # optional: default value is 500batch_max_bytes: 10485760 # optional: default value is 10485760

输入类型:s3-sqs。我们使用带有 SQS 通知选项的 S3

输出:

  • elasticsearch_url:来自上述 Elastic Cloud 部署创建部分的 elasticsearch 端点
  • api_key:使用此处的说明创建 Elasticsearch API 密钥(用户 API 密钥)
  • es_datastream_name:转发器支持自动路由 aws.cloudtrail、aws.cloudwatch_logs、aws.elb_logs、aws.firewall_logs、aws.vpcflow 和 aws.waf 日志。对于其他日志类型,你可以将其设置为所需的命名约定。

将其他选项保留为默认值。

将 config.yaml 上传到 s3 存储桶 s3-vpc-flow-logs-serverless-forwarder-config 中:

6)安装 AWS 集成资产

Elastic 集成预先打包了资产,可简化收集、解析、索引和可视化。集成使用具有特定索引命名约定的数据流,这有助于入门。转发器也可以写入任何其他流名称。

按照步骤安装 Elastic AWS 集成。

Kibana -> Management -> Integrations,搜索 AWS:

7)部署 Elastic Serverless Forwarder

有几种方法可以从 SAR(Serverless Application Repository)部署 Elastic Serverless Forwarder:

  • 使用 AWS 控制台
  • 使用 AWS Cloudformation
  • 使用 Terraform
  • 直接部署可提供更多自定义选项

我们将使用 AWS 控制台选项来部署 ESF。

注意:直接使用 AWS 控制台时,每个区域只允许部署一次。

AWS Console -> Lambda -> Application -> Create Application,搜索 elastic-serverless-forwarder:

在应用程序设置下提供以下详细信息:

  • Application name - elastic-serverless-forwarder
  • ElasticServerlessForwarderS3Buckets - s3-vpc-flow-logs-elastic
  • ElasticServerlessForwarderS3ConfigFile - s3://s3-vpc-flow-logs-serverless-forwarder-config/config.yaml
  • ElasticServerlessForwarderS3SQSEvent - arn:aws:sqs:ap-southeast-2:xxxxxxxxxxx:sqs-vpc-flow-logs-elastic-serverless-forwarder

部署成功后,Lambda 部署的状态应为 “Create Complete”:

以下是成功部署 ESF 后自动创建的 SQS 队列:

一切设置正确后,S3 存储桶 s3-vpc-flow-logs-elastic 中发布的流日志将向 SQS 发送通知,你将看到队列 sqs-vpc-flow-logs-elastic-serverless-forwarder 中可供 ESF 使用的消息。

如果出现诸如 SQS 消息数持续增加等问题,请检查 Lambda 执行日志 Lambda -> Application -> serverlessrepo-elastic-serverless-forwarder-ElasticServerlessForwarderApplication* -> Monitoring -> Cloudwatch Log Insights。单击 LogStream 获取详细信息:

有关故障排除的更多信息,请参见此处。

8)在 Kibana Discover 和仪表板中验证 VPC 流日志

Kibana -> Discover 。这将显示 VPC 流日志:

Kibana -> Dashboards。查找 VPC VPC Flow log Overview 表板:

更多仪表板!

如前所述,除了其他资产外,AWS 集成还提供预构建的仪表板。我们可以使用 Elastic 代理提取方法监控我们设置中涉及的 AWS 服务,我们将在本系列的第 2 部分中介绍该方法。这将有助于跟踪使用情况并有助于优化。

结论

Elasticsearch 提供了多种选项来将数据从 AWS S3 同步到 Elasticsearch 部署中。在本演练中,我们证明了实现 Elastic Serverless Forwarder (ESF) 提取选项以从 AWS S3 提取数据并利用 Elastic 业界领先的搜索和分析功能相对容易。

在本系列的第 2 部分中,我们将深入研究使用 Elastic Agent 作为提取 AWS S3 数据的另一种选择。

你可以使用来自任何来源的数据构建搜索。查看此网络研讨会以了解 Elasticsearch 支持的不同连接器和来源。

准备好自己尝试一下了吗?开始免费试用。

原文:https://www.elastic.co/search-labs/blog/ingest-aws-s3-data-elastic-cloud-elastic-serverless-forwarder

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1557149.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql锁机制解读(敲详细)

目录 锁的概念 全局锁 表级锁 表锁 元数据锁 意向锁 锁的概念 全局锁 表级锁 表锁 元数据锁 主要是对未提交事务&#xff0c;修改表结构造成表结构混乱&#xff0c;进行控制。 在不涉及表结构变化的情况下,元素锁可以忽略。 意向锁 避免有行级锁影响加表级锁&#xff0…

YoloV9改进策略:BackBone改进|CAFormer在YoloV9中的创新应用,显著提升目标检测性能

摘要 在目标检测领域,模型性能的提升一直是研究者和开发者们关注的重点。近期,我们尝试将CAFormer模块引入YoloV9模型中,以替换其原有的主干网络,这一创新性的改进带来了显著的性能提升。 CAFormer,作为MetaFormer框架下的一个变体,结合了深度可分离卷积和普通自注意力…

​.NET一款反序列化执行命令的白名单工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

Unity_Obfuscator Pro代码混淆工具_学习日志

Unity_Obfuscator Pro代码混淆工具_学习日志 切勿将密码或 API 密钥存储在您附带的应用程序内。 混淆后的热更新暂时没有想到怎么办 Obfuscator 文档 https://docs.guardingpearsoftware.com/manual/Obfuscator/Description.html商店链接Obfuscator Pro&#xff08;大约$70&a…

sqli-labs靶场第三关less-3

sqli-labs靶场第三关less-3 1、确定注入点 http://192.168.128.3/sq/Less-3/?id1 http://192.168.128.3/sq/Less-3/?id2 有不同回显&#xff0c;判断可能存在注入&#xff0c; 2、判断注入类型 输入 http://192.168.128.3/sq/Less-3/?id1 and 11 http://192.168.128.3/sq/L…

Nginx07-静态资源访问

零、文章目录 Nginx07-静态资源访问 1、Nginx解决跨域问题 &#xff08;1&#xff09;同源策略 同源策略&#xff08;Same-Origin Policy&#xff09;是一个关键的网络安全概念&#xff0c;由Netscape公司在1995年引入&#xff0c;现在被所有现代浏览器所采用。它限制了从一…

每日一题|871. 最低加油次数|动态规划、内层逆序遍历

题目分析&#xff1a;找到第一个能够实现当前油量能够行驶的最大距离大于等于目标距离&#xff0c;且加油次数最小的加油站和加油次数。 每次加油之后能够行驶的最大距离都是由上一次加油的距离决定的&#xff0c;因此使用dp。 1、dp数组定义 dp[i]是一个一维数组&#xff0…

毕业设计项目 深度学习安全帽佩戴检测(源码+论文)

文章目录 0 前言1 项目运行效果2 设计概要3 最后 0 前言 &#x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师…

keras yolo8目标检测

是从coco数据集提取其中的veh_ids[3,6,8,10] labels[car,bus,truck,traffic light]来做目标检测,分别表示汽车,公交车&#xff0c;卡车&#xff0c;交通灯,用的backbone keras_cv.models.YOLOV8Backbone.from_preset( "yolo_v8_m_backbone_coco" ),不用预训练…

JVM 内存区域 堆

堆是JVM中相当核心的内容&#xff0c;因为堆是JVM中管理的最大一块内存区域&#xff0c;大部分的GC也发生在堆区&#xff0c;那接下来就让深入地探究一下JVM中的堆结构。 需要明确&#xff0c;一个JVM实例只存在一个堆内存&#xff0c;堆区在JVM启动的时候就被创建&#xff0c…

(贪心) 反悔贪心之反悔堆

文章目录 ⭐例题&#x1f6a9;题意与思路 ⭐返回贪心&#x1f6a9;原理&#xff08;反悔池&#xff09;&#x1f6a9;落实到题&#x1f6a9;AC code ⭐练习题⭐END&#x1f31f;交流方式 ⭐例题 经典例题&#xff1a; 871. 最低加油次数 &#x1f6a9;题意与思路 题意&#xf…

MATLAB与R语言在建模中的合作与应用(下篇)

目录 目录 模型训练的协同使用 1. 使用 R 语言进行统计建模 2. 使用 MATLAB 进行机器学习建模 模型评估与调优 1. 在 R 中评估模型性能 2. 在 MATLAB 中进行模型优化 实战示例&#xff1a;MATLAB 与 R 的协同建模 总结 在上篇文章中&#xff0c;我们介绍了 MATLAB 和 R…

2024兴国专转本长期集训产品发布!

9月13日&#xff0c;兴国教育2024长期集训产品发布会在江苏南京顺利召开。 成立于2002年的兴国品牌&#xff0c;时至今日&#xff0c;已经走过了二十二年。兴国新媒体发言人祁老师在发布会上&#xff0c;为大家介绍了兴国这二十年来的变化。 截至2024年8月&#xff0c;兴国在全…

论文阅读:Split-Aperture 2-in-1 Computational Cameras (二)

Split-Aperture 2-in-1 Computational Cameras (一) Coded Optics for High Dynamic Range Imaging 接下来&#xff0c;文章介绍了二合一相机在几种场景下的应用&#xff0c;首先是高动态范围成像&#xff0c;现有的快照高动态范围&#xff08;HDR&#xff09;成像工作已经证…

ctf.bugku - 本地管理员

题目来源&#xff1a;本地管理员 - Bugku CTF 访问页面 页面的最后返回一个字符串&#xff1b; 结尾 应该是base64 编码&#xff1b; 解码得到 test123 同时&#xff0c;提示信息还有 IP禁止访问&#xff0c;本地管理员登陆&#xff1b; 所以&#xff0c;请求头添加&#x…

【AI知识点】残差网络(ResNet,Residual Networks)

残差网络&#xff08;ResNet&#xff0c;Residual Networks&#xff09; 是由微软研究院的何凯明等人在 2015 年提出的一种深度神经网络架构&#xff0c;在深度学习领域取得了巨大的成功。它通过引入残差连接&#xff08;Residual Connection&#xff09; 解决了深层神经网络中…

基于图像的3D动物重建与生成

一、背景与目标 3D-Fauna 是一款用于基于图像和视频进行四足动物3D重建与生成的开源方案。自然界展示了复杂的相似性与多样性,该方法通过学习来自网上图片的四足动物的3D形态,能够从单张图片生成可动画化的带有纹理的3D网格模型。其最终目标是通过大量扩展现有的解决方案,实…

【网络篇】计算机网络——运输层详述(笔记)

目录 一、运输层 1. 概述 2. 运输层和网络层的关系 3. 运输层协议概述 二、多路复用和多路分解 1. 综述 2. 无连接的多路复用与多路分解&#xff08;UDP&#xff09; 3. 面向连接的多路复用与多路分解&#xff08;TCP&#xff09; 4. Web 服务器与TCP 三、UDP&#x…

Django学习笔记十三:优秀案例学习

Django CMS 是一个基于 Django 框架的开源内容管理系统&#xff0c;它允许开发者轻松地创建和管理网站内容。Django CMS 提供了一个易于使用的界面来实现动态网站的快速开发&#xff0c;并且具有丰富的内容管理功能和多种插件扩展。以下是 Django CMS 的一些核心特性和如何开始…

力扣之1336.每次访问的交易次数

题目&#xff1a; sql建表语句&#xff1a; Create table If Not Exists Visits (user_id int, visit_date date); Create table If Not Exists Transactions (user_id int, transaction_date date, amount int); Truncate table Visits; insert into Visits (user_id,…