如何在AWS CDK(Java)中设置JSON字面量值?
Java CDK 中为CfnUser生成HomeDirectoryMappings的IResolvable实例
要解决这个问题,你可以使用CDK提供的CfnJson类来构建符合要求的IResolvable结构,它专门用于生成JSON字面量并实现了IResolvable接口。同时需要注意,使用homeDirectoryMappings时必须将homeDirectoryType设置为LOGICAL(PATH类型不支持目录映射)。
具体代码实现如下:
// 构建单个目录映射的键值对 Map<String, String> dirMapping = Map.of( "Entry", "/", "Target", "/bucket3/customized-reports/" ); // 将映射列表包装为IResolvable类型的CfnJson对象 CfnJson homeDirMappings = CfnJson.Builder.create(this, "HomeDirMappings") .value(List.of(dirMapping)) .build(); // 正确构建CfnUser实例 CfnUser user1 = CfnUser.Builder.create(this, "user1") .userName("user1") .serverId(transferServer.getAttrServerId()) .homeDirectoryType("LOGICAL") // 必须设置为LOGICAL才能使用目录映射 .homeDirectoryMappings(homeDirMappings) .role(role.getRoleArn()) .build();
关键说明
CfnJson是CDK官方提供的工具类,能直接将Java集合转换为CloudFormation需要的JSON结构,同时满足IResolvable类型要求- 必须将
homeDirectoryType改为LOGICAL,否则即使传入正确的映射,CloudFormation也会报错(PATH类型仅支持单一路径,不支持映射规则)
内容的提问来源于stack exchange,提问作者BetaRide
相关产品推荐
相关产品推荐

