amazon-web-services - 如何确保所有 EMR 核心节点始终包含一个 keystore 文件?
问题描述
我需要 EMR 上的所有核心节点在 /usr/local/spark/conf/ 目录中包含一个密钥库文件。当核心节点调整大小继续进行时,这尤其具有挑战性,因为任何新启动的核心节点都没有密钥库文件,甚至没有 /usr/local/spark/conf/ 目录。我需要在任何新启动的核心节点上自动使用密钥库文件填充此目录的过程。
我创建了一个 shell 脚本来创建 /usr/local/spark/conf 目录,然后通过从 Amazon S3 获取密钥库文件来填充它。问题是让这个 shell 脚本在任何新启动的 EMR 核心节点上自动运行。
mkdir -p /usr/local/spark/conf/
cd /usr/local/spark/conf/
aws s3 cp s3://my_bucket/certs/cacerts .
aws s3 cp s3://my_bucket/certs/keystore.jks .
解决方案
是的,您可以使用引导操作功能从 S3 运行预定义脚本:
您可以使用引导操作来安装其他软件或自定义集群实例的配置。引导操作是在 Amazon EMR 使用 Amazon Linux Amazon 系统映像 (AMI) 启动实例后在集群上运行的脚本。引导操作在 Amazon EMR 安装您在创建集群时指定的应用程序之前以及集群节点开始处理数据之前运行。如果您将节点添加到正在运行的集群,引导操作也会以相同的方式在这些节点上运行。您可以创建自定义引导操作并在创建集群时指定它们。
请参阅https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html
推荐阅读
- ajax - 我需要通过 ajax 更新购物车中的 wc_price 它仅在刷新 wordpress 页面时更新?
- angular - 如何从函数中以编程方式调用 mat-options?
- go - Golang - 离线导入/模组初始化
- windows - 用户注销时运行文件
- typescript - 在 vue + typescript 中使用 mapState
- python - 为 DB2 中的表生成散列值时出错
- jquery - 如何使用 jQuery 中的滑块更改样式的值
- javascript - 如何将大小值字符串更改为数字
- python - 如何在预提交时运行具有本地存根目录的 mypy?
- java - 如何允许 Apache Camel 中的所有 ssl 服务?