如何在AWS CDK with Java中设置文本JSON值?

nbnkbykc  于 2023-02-20  发布在  Java
关注(0)|答案(1)|浏览(98)

我必须设置一个文本JSON值来定义基于Java的CDK定义中用户的主目录Map:

CfnUser user1 = CfnUser.Builder.create(this, "user1 ")
        .userName("user1")
        .serverId(transferServer.getAttrServerId())
        .homeDirectoryType("PATH")
        .homeDirectory("/path/to/home")
        .homeDirectoryMappings(List.of("Entry:/", "Target:/path/to/home"))
        .role(role.getRoleArn())
        .build();

上面的代码失败了,因为传递给homeDirectoryMappings()List不是software.amazon.awscdk.IResolvable,我必须创建一个IResolvable来表示这个JSON:

[
   {
      "Entry":"/",
      "Target":"/bucket3/customized-reports/"
   }
]

我搜索了IResolvable的实现,但没有找到合适的类。
那么,如何将JSON文本传递给接受IResolvable的方法呢?

elcex8rz

elcex8rz1#

再次阅读错误消息后,我注意到homeDirectoryMappings()方法接受HomeDirectoryMapEntryProperty示例的List,所以实际上不需要IResolvable
正确的代码如下所示:

CfnUser user1 = CfnUser.Builder.create(this, "user1 ")
        .userName("user1 ")
        .serverId(transferServer.getAttrServerId())
        .homeDirectoryType("LOGICAL")
        .homeDirectoryMappings(List.of(new HomeDirectoryMapEntryProperty.Builder()
            .entry("/")
            .target("/s3-bucket/home/${transfer:UserName}")
            .build())
        )
        .role(dlRole.getRoleArn())
        .build();

相关问题