首页 > 解决方案 > 如何在卷挂载点 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 中找不到如何授予该容器权限或更改文件夹的权限

谢谢

标签: aws-cdk

解决方案


原因是因为我使用绑定挂载来挂载容器,默认情况下,卷权限设置为 0755,所有者为 root。需要在 Elastic Dockerfile 中更改权限。相反,我使用 Volume 来挂载主机目录 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bind-mounts.html


推荐阅读