我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用 Terraform 部署亚马逊 OpenSearch 无服务器
这篇文章演示了如何使用 Terraform 创建、部署和清理 OpenSearch 无服务器基础架构。
解决方案概述
要使用 Terraform 创建和部署具有安全和访问策略的 OpenSearch 无服务器集合,您需要执行以下步骤:
- 初始化 Terraform 配置。
- 创建加密策略。
- 创建 OpenSearch 无服务器集合。
- 创建网络策略。
- 创建虚拟私有云 (VPC) 终端节点。
- 创建数据访问策略。
- 使用 Terraform 进行部署。
先决条件
这篇文章假设你熟悉
在本演练中,您需要以下内容:
- 一个 亚马逊云科技 账户。如果你没有账户,你可以
注册一个 。 - 访问具有设置集合
所需 最低权限 的 AWS 身份和访问管理 (IAM) 用户或角色。 - 您的工作站上安装了 Terraform 0.12 或更高版本。参见
安装 Terraform 。
初始化 Terraform 配置
示例代码位于 Terraf
此配置将帮助您开始使用 OpenSearch 无服务器。首先,将存储库克隆到您的工作站并导航到该目录:
$ git clone https://github.com/hashicorp/terraform-provider-aws.git && \
cd ./terraform-provider-aws/examples/opensearchserverless
通过运行以下命令初始化配置以安装 a w
s 提供商:
$ terraform init
Terraform 配置首先定义所需的 Terraform 版本,并将
此 Terraform 配置中使用的变量是在 变
量.tf 文件中定义的。这篇文章假设使用默认值:
创建加密策略
现在,已经安装并配置了提供程序,Terraform 配置可以继续定义 OpenSearch 无服务器安全策略。OpenSearch Serverless 使用
要创建加密策略,请使用
的 JSON 字符串 和可选描述: 名称
参数、
加密
类型
、定义策略
此加密策略名为 e xample-encryption-policy
,适用于名为 e xample-collection 的集合
,并使用 亚马逊云科技 拥有的密钥来加密数据。
创建 OpenSearch 无服务器收藏集
您可以将
使用
,该资源具有 名称
参数以及可选的描述、标签和类型:
这个集合被命名为 示例集合。
如果未指定 类型
,则会创建
s_opensearchserverless_collection 资源的 Terraform 文档中找到。OpenSearch Serverless 需要静态加密,因此在创建集合之前需要适用的加密策略。Terraform 配置使用
epends_on 元参数明确定义了这种依赖关系。如果未定义此依赖关系,则可能会出现错误。
现在已经使用亚马逊云科技拥有的KMS密钥创建了集合,Terraform配置继续定义网络和数据访问策略以配置对集合的访问权限。
创建网络策略
与加密策略类似,要创建网络策略,请使用
的 JSON 字符串和可选描述: 名称
参数、
网络
类型
、定义策略
此网络策略名为 e
此策略仅允许通过 VPC 端点访问集合的 OpenSearch 端点,但允许公众访问 OpenSearch 控制面板端点。 xample-network-policy,适用于名为 example-
collection 的集合。
您会注意到 VPC 终端节点尚未定义,但在网络策略中已对其进行了引用。Terraform 会自动确定此依赖关系,并且在创建 VPC 端点之前不会创建网络策略。
创建 VPC 终端节点
VPC 终端节点使您能够使用 亚马逊云科技 P rivateL
使用
id、subnet_id,也可以定义安全组ID:
创建 VPC 和所有必需的网络资源超出了本文的范围,但此处在单独的文件中创建了所需的最低 VPC 资源,以演示 VPC 终端节点的功能。要
创建数据访问策略
该配置定义了一个
数据访问策略是使用
的 JSON 字符串和可选描述: 名称
参数、设置为
数据的
类型
参数 、定义策略
此数据访问策略允许当前 亚马逊云科技 角色或用户对名为 e
ample-
中的索引执行与索引相关的操作
使用 Terraform 进行部署
现在您已经配置了必要的资源,请使用 terraform
apply 应用配置。 在创建资源之前,Terraform 将描述将要创建的所有资源,以便您可以验证配置:
$ terraform apply
...
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
...
Plan: 13 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ collection_enpdoint = (known after apply)
+ dashboard_endpoint = (known after apply)
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value:
如果这是你账户中的第一个 OpenSearch Serverless 集合,则应用配置可能需要 10 分钟以上的时间,因为 Terraform 会等待集合激活。
Apply complete! Resources: 13 added, 0 changed, 0 destroyed.
Outputs:
collection_enpdoint = "..."
dashboard_endpoint = "..."
您现在已经部署了 OpenSearch Serverless 时间序列集合,该集合具有配置加密和访问该集合的策略!
清理
只要资源处于运行状态,它们就会产生成本,因此请在使用完资源后清理资源。使用 terraform 销毁命令来执行此操作:
$ terraform destroy
...
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
- destroy
Terraform will perform the following actions:
...
Plan: 0 to add, 0 to change, 13 to destroy.
Changes to Outputs:
...
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value:
回答 “是”
以运行此计划并摧毁基础架构。
Destroy complete! Resources: 13 destroyed.
本演练期间创建的所有资源现已删除。
结论
在这篇文章中,你创建了一个 OpenSearch 无服务器集合。使用像 Terraform 这样的 iaC 软件可以轻松管理您的资源,例如 OpenSearch 无服务器集合、加密、网络和数据访问策略以及 VPC 端点。
尝试使用带有 Terraform 的 OpenSearch 无服务器来简化资源管理。查看亚马逊 OpenSe
作者简介
Joshua Luo 是亚马逊 OpenSearch 无服务器的软件开发工程师。他开发的系统使客户能够管理和监控其 OpenSearch 无服务器资源。在业余时间,他喜欢抱石、摄影和录像。
萨蒂什·南迪 是亚马逊 OpenSearch S ervice 的高级技术产品经理。