aws-cdk - 如何在卷挂载点 AWS CDK 上设置权限
问题描述
在我的 CDK 应用程序中,我有一个 ElasticSearch docker,它在 EC2 实例上启动,并且在启动时它无法写入我设置为 /mnt/data/elasticsearch/ 的主机路径的卷安装点目录,因此容器停止,原因是实例启动时目录的权限是 755。当我 SSH 进入实例并将其更改为 777 时,容器启动并继续运行而没有问题。
这就是我创建卷和挂载点的方式
import software.amazon.awscdk.services.ecs.Volume
// These two lines have no effect
auto_scaling_group.addUserData("sudo mkdir -m 777 /usr/share/elasticsearch/data);
auto_scaling_group.addUserData("sudo chmod -R 777 /usr/share/elasticsearch/data);`
Volume hostVolume = Volume.builder().name("elasticsearch").host(Host.builder()
.sourcePath(/mnt/data/elasticsearch).build()).build();
MountPoint elasticSrvrMntPt = MountPoint.builder().readOnly(false).sourceVolume(hostVolume.getName())
.containerPath("/usr/share/elasticsearch/data").build();
ElasticDef.addMountPoints(elasticSrvrMntPt);
我在 API 中找不到如何授予该容器权限或更改文件夹的权限
谢谢
解决方案
原因是因为我使用绑定挂载来挂载容器,默认情况下,卷权限设置为 0755,所有者为 root。需要在 Elastic Dockerfile 中更改权限。相反,我使用 Volume 来挂载主机目录 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bind-mounts.html
推荐阅读
- angular - Angular 弹出框自动关闭属性 - 一次仅打开 1 个弹出框
- swift - `pod spec lint` 时出错:- 错误 | [iOS] 未知:验证期间遇到未知错误(不支持的文件类型:)
- amazon-web-services - CDK Fargate:将子域映射到不同的容器端口
- docker - NextJS 和 Strapi 码头化
- python - 我们如何在 Python 中的引号内使用变量?
- image - 位图未在 kotlin 中的 58mm 热敏打印机的对齐中心打印
- python - 使用 Python 3.6 对 Lambda 函数提出 AWS Pinpoint 请求
- r - R:如何使用函数来创建新的数据框?
- postgresql - 从 postgres 14 beta 升级到 postgres 14 新版本
- android - Android SDK 28:无法获得访问 uvc usb 摄像头的 usbhost 权限