当前位置: 首页 > news >正文

aws(学习笔记第四十四课) opensearch

文章目录

  • aws(学习笔记第四十四课) opensearch
  • 学习内容:
    • 1. 整体架构
      • 1.1 代码链接
      • 1.2 整体架构
    • 2. 什么是`opensearch`
        • 2.1 `elastic search`的`aws`实现
        • 2.2 `elastic search`的数据源
        • 2.3 开始学习`elastic search`
    • 3. `opensearch`的`cdk`代码架构
      • 3.1 `cdk`代码的整体架构
      • 3.2 代码详细
        • 3.2.1 创建对`opensearch`的访问限制
        • 3.2.2 创建对`opensearch`的访问密码
        • 3.2.3 创建对`opensearch`的`capacity config`
        • 3.2.4 创建对`opensearch`的`ebs config`
        • 3.2.5 设定`opensearch`的`enable zone awareness`
        • 3.2.6 设定`encrypt setting`和用户名密码
        • 3.2.7 开始真正创建`opensearch`
        • 3.2.8 将必要的`output`进行输出
    • 4 执行`cdk`创建`opensearch`
      • 4.1 执行`cdk`的注意点
      • 4.2 执行`cdk`的错误回避对策(workaround)
      • 4.3 创建`opensearch`的花费

aws(学习笔记第四十四课) opensearch

  • aws上部署opensearch

学习内容:

  • 部署opensearch
  • 并了解什么是opensearch

1. 整体架构

1.1 代码链接

代码连接(opensearch-simple-domain)

1.2 整体架构

在这里插入图片描述
这里,

  • 会构建一个awsopensearch服务。
  • 自动生成管理员的密码,并将管理员密码报错在aws secrets manager上。
  • 这里,设定允许访问的source ip adress

2. 什么是opensearch

2.1 elastic searchaws实现

Elasticsearch 是一个强大的分布式搜索和分析引擎,基于 Apache Lucene 构建,广泛应用于全文搜索、日志分析、实时数据处理等场景。以下是它的 主要功能:

  • 全文搜索
  • 实时搜索与分析
  • 分布式架构与高可用性
  • 日志与监控分析
  • 结构化 & 非结构化数据处理
  • 机器学习与 AI 增强
  • 安全与权限管理
2.2 elastic search的数据源

Elasticsearch 可以与多种类型的数据源集成,支持从不同系统中导入数据并进行索引和搜索。以下是 Elasticsearch 主要支持的数据源类型及其集成方式:

  • 关系型数据库(MySQL、PostgreSQL、Oracle 等)
  • NoSQL 数据库(MongoDB、Cassandra 等)
  • 日志系统(Logstash、Filebeat、Fluentd)
  • 消息队列(Kafka、RabbitMQ)
  • 文件系统(CSV、JSON、日志文件)
  • 云服务(AWS S3、Google Cloud Storage)
  • 大数据组件(Hadoop、Spark、Flink)
  • API 数据(RESTful 服务、爬虫数据)
2.3 开始学习elastic search

elastic search get start

3. opensearchcdk代码架构

3.1 cdk代码的整体架构

在这里插入图片描述

3.2 代码详细

3.2.1 创建对opensearch的访问限制

这里首先执行opensearch的版本,选择最新2.19

        OPENSEARCH_VERSION = "2.19"# Add the authorized IP addresses (using CIDR format) that should# be granted access to the OpenSearch Domain.# Create an environment variable before running cdk deploy. E.g.:OPENSEARCH_ALLOWED_IP='["33.45.123.8/32"]'# allowed_ip_addresses = os.environ.get("OPENSEARCH_ALLOWED_IP", "x.x.x.x/32")allowed_ip_addresses = OPENSEARCH_ALLOWED_IP# Creating OpenSearch access policy to restrict# access to a specific list of IPs. We are allowing all# types of HTTP commands.opensearch_access_policy = cdk_iam.PolicyStatement(effect=cdk_iam.Effect.ALLOW,principals=[cdk_iam.AnyPrincipal()],actions=["es:ESHttp*"],resources=[],conditions={"IpAddress": {"aws:SourceIp": allowed_ip_addresses}})

在这里插入图片描述

3.2.2 创建对opensearch的访问密码
 # Generating a secret and storing it with AWS Secrets Manager.# https://aws.amazon.com/secrets-manager/# To list secret using CLI and jq, run:#   aws secretsmanager list-secrets | jq ".SecretList[].Name"# To retrieve a secret value using CLI and jq, run:#   aws secretsmanager get-secret-value --secret-id <secret-name>secret_opensearch_admin_password = cdk_sm.Secret(self, "OpenSearchDemoDomainAdminUser")

在这里插入图片描述

3.2.3 创建对opensearchcapacity config
# Capacity config documentation:# https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_opensearchservice/CapacityConfig.html#aws_cdk.aws_opensearchservice.CapacityConfig# Available instance types:# https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-instance-types.htmlcapacity_config = cdk_opensearch.CapacityConfig(master_nodes=3,master_node_instance_type="t3.small.search",data_nodes=3,data_node_instance_type="t3.medium.search"   

在这里插入图片描述

3.2.4 创建对opensearchebs config
        # Available EBS options# https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_opensearchservice/EbsOptions.html#aws_cdk.aws_opensearchservice.EbsOptionsebs_config = EbsOptions(volume_size=10,volume_type=cdk_ec2.EbsDeviceVolumeType.GP3)

在这里插入图片描述

3.2.5 设定opensearchenable zone awareness
        # Enabling zone awareness to allow data replication across AZ's.# https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_opensearchservice/ZoneAwarenessConfig.html#aws_cdk.aws_opensearchservice.ZoneAwarenessConfigzone_awareness_config = ZoneAwarenessConfig(availability_zone_count=3,enabled=True)

在这里插入图片描述

3.2.6 设定encrypt setting和用户名密码
        # Required when FGAC is enabledencryption_config = EncryptionAtRestOptions(enabled=True)# Required when FGAC is enabledopensearch_admin_user = "admin-user"advanced_security_config = AdvancedSecurityOptions(master_user_name=opensearch_admin_user,master_user_password=secret_opensearch_admin_password.secret_value)

在这里插入图片描述

3.2.7 开始真正创建opensearch
        # Required when FGAC is enabledencryption_config = EncryptionAtRestOptions(enabled=True)# Required when FGAC is enabledopensearch_admin_user = "admin-user"advanced_security_config = AdvancedSecurityOptions(master_user_name=opensearch_admin_user,master_user_password=secret_opensearch_admin_password.secret_value)

在这里插入图片描述

3.2.8 将必要的output进行输出
  cdk.CfnOutput(self,"OpenSearchDomainEndpoint", value=aos_domain.domain_endpoint)cdk.CfnOutput(self,"OpenSearchDashboardsURL", value=(aos_domain.domain_endpoint + "/_dashboards"))cdk.CfnOutput(self,"OpenSearchPasswordSecretName", value=secret_opensearch_admin_password.secret_name)cdk.CfnOutput(self,"OpenSearchAdminUser", value=opensearch_admin_user)

在这里插入图片描述

4 执行cdk创建opensearch

4.1 执行cdk的注意点

这里,如果直接执行如下命令创建opensearch,会报错。

cdk --require-approval never deploy

错误信息如下:

OpensearchSimpleDomainStack | 4/10 | 16:31:40 | CREATE_IN_PROGRESS   | AWS::Lambda::Function          | AWS679f53fac002430cb0da5b7982bd2287 (AWS679f53fac002430cb0da5b7982bd22872D164C4C) Resource creation Initiated
OpensearchSimpleDomainStack | 4/10 | 16:31:40 | CREATE_FAILED        | AWS::Lambda::Function          | AWS679f53fac002430cb0da5b7982bd2287 (AWS679f53fac002430cb0da5b7982bd22872D164C4C) Resource handler returned message: "The runtime parameter of nodejs14.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use a supported runtime while creating or updating functions. (Service: Lambda, Status Code: 400, Request ID: c49cc9d9-f4b1-42e4-8a98-af597a4aa3f4) (SDK Attempt Count: 1)" (RequestToken: 07111475-e581-91e9-185c-ce93ab079201, HandlerErrorCode: InvalidRequest)
OpensearchSimpleDomainStack | 4/10 | 16:31:40 | CREATE_IN_PROGRESS   | AWS::Lambda::Function          | DummyLambdaRuntimeSetter (DummyLambdaRuntimeSetter4B38A37F) Resource creation Initiated
OpensearchSimpleDomainStack | 4/10 | 16:31:40 | CREATE_FAILED        | AWS::Lambda::Function          | DummyLambdaRuntimeSetter (DummyLambdaRuntimeSetter4B38A37F) Resource creation cancelled
OpensearchSimpleDomainStack | 4/10 | 16:31:40 | CREATE_FAILED        | AWS::OpenSearchService::Domain | OpensearchDemoDomain (OpensearchDemoDomainBEE1301C) Resource creation cancelled

,原因是,默认opensearch使用lambda是采用"nodejs14.x runtime,所以会报错。

4.2 执行cdk的错误回避对策(workaround)

cdk synth > template.yaml # 首先不直接部署cdk,而是将cdk输出到template.yaml
sed -i 's/nodejs14.x/nodejs18.x/g' template.yaml # 进行替换,升级到nodejs18
aws cloudformation deploy --template-file template.yaml --stack-name OpensearchSimpleDomainStack --capabilities CAPABILITY_IAM # 继续部署opensearch

4.3 创建opensearch的花费

创建了五六次opensearch,花费了$8,所以建议大家慎重测试opensearch

相关文章:

  • ShardingSphere 全面学习路径
  • 理解 package.json 中的版本控制:“nuxt“: “3.16.0“ vs “nuxt“: “^3.16.0“ 的深层差异
  • 青少年编程与数学 01-011 系统软件简介 21 杀毒软件及安全软件
  • Android 多 BaseUrl 动态切换策略(结合 ServiceManager 实现)
  • 【数据结构中哈希函数与哈希表】
  • Leetcode 刷题记录 14 —— 回溯
  • 《拖延心理学》:深度剖析与应对指南​
  • Java对象中的MarkWord
  • 解决电脑第一排按键功能失效的问题
  • 【Redis】分布式锁
  • 手动 + 自动双方案组合:Innocise 壁虎吸盘灵活适配多场景无损搬运需求
  • Redis中的set底层实现
  • 行为设计模式之State(状态)设计模式
  • ceil方法
  • WebStorm编辑器侧边栏
  • 40套精品大气黑金系列行业PPT模版分享
  • 【Bluedroid】蓝牙启动之核心模块(startProfiles )初始化与功能源码解析
  • gradle的 build时kaptDebugKotlin 处理数据库模块
  • Laravel 12 更新与之前版本结构变更清单
  • 4.查看、删除数据库
  • 做建材营销型网站/搜索引擎优化工具
  • 如何做好网站推广营销/网站排名查询工具有哪些
  • 网站建设能/站长基地
  • 学做网站论坛vip账户/seo技术是干什么的
  • 装门做特卖的网站/如何在百度推广
  • 高端的电影网站/杭州seo渠道排名