[英]AWS CDK Java - File Upload to S3
我正在使用 AWS CDK (Java) 使用以下代码将我的 lambdas 上传到 S3。 我不希望 CDK 解压缩我的 jar 文件。 这似乎是实现这一目标的唯一方法(它确实有效),但它在 AssetOptions.builder().exclude() 上使用了已弃用的代码。 在 Java 中是否有更好的方法可以在不使用已弃用代码的情况下执行此操作?
List<ISource> lambdaSources = new ArrayList<>();
for(String lambda: lambdas) {
AssetOptions assetOptions = AssetOptions.builder().exclude(
Arrays.asList("**", "!" + lambda + "-" + VERSION + SUFFIX)).build();
lambdaSources.add(Source.asset("../" + lambda + "/build/libs/", assetOptions));
}
我想我可能已经找到了一种更好的方法,它将代码上传与 lambda 创建相结合。 如果有更好的方法,我仍然对 CDK 专家的想法感兴趣。
顺便说一句,“lambda”只是我创建的一个实体,用于保存我拥有的各种功能的相关属性。
Function.Builder fnBuilder = Function.Builder.create(this, "Builder");
fnBuilder.code(lambda.getCode())
.functionName(lambda.getName())
.handler(lambda.getHandler())
.memorySize(lambda.getSize())
.role(lambda.constructRole(this))
.runtime(LambdaDetails.RUNTIME)
.timeout(lambda.duration())
.securityGroups(Arrays.asList(lambda.constructSecurityGroup(this)))
.vpcSubnets(lambda.constructSubnets(this))
.build();
我不是 CDK 团队的成员,也不是 CDK 专家,也没有具体的 Java 代码可提供。 但是,我在使用 TypeScript CDK 时发现了有关弃用警告的其他上下文,这可能会有所帮助。
TLDR:我选择忽略弃用。 原因如下:
AWS CDK 源码使用 TypeScript 编写, jsii用于为其他支持的语言(Java、.NET、ZA7F5F35426B927411FC9231B56382173 等)生成 AWS CDK Construct 库。 我在下面描述的内容应该仍然与 Java 的 CDK 相关。
我同意,一般来说,避免弃用的代码是一种很好的做法。 但是,该特定的弃用警告似乎至少部分是某些 CDK 重构的误导性结果(见下文)。 我称之为“误导”,因为它导致像我这样的一些开发人员(错误地)将其解释为将来不再支持exclude
。 由于没有提供明确的替代方案,因此非常令人担忧。
但是,在阅读了 github 存储库的更多内容后, exclude
功能看起来仍然可用并受支持,尽管确切的语法可能会改变。
在阅读 aws-cdk 源代码、拉取请求7708和12700(仅 10 天前)以及相关问题9447和10125之后,从实际的角度来看,似乎exclude
并没有真正被弃用。 一些评论直接指出了误解。 在 TypeScript 源代码中, exclude
正在从assets
模块中的AssetOptions
(不推荐使用的属性)移动到core
模块中的CopyOptions
(通过FileOptions
)(不推荐使用)。
这里有一个关键点:因为assets.AssetOptions
继承自core.CopyOptions
—— 而 core.CopyOptions 又继承自copy.FileOptions
—— exclude
仍然有效地保留在AssetOptions
接口上……至少对于 CDK V1!
对于 V2,有人说他们想要弃用整个资产模块,而不仅仅是将一些共享类型移动到核心。 我找不到关于最终 V2 更改的明确参考,但我将我所发现的精神解释为我可以安全地继续使用带exclude
的 glob 模式来自定义 S3 部署。 如果资产模块在 V2 中执行 go ,我希望所需的代码更新很小 - 甚至可能像导入和/或类型名称更改或两个一样简单(当然是 YMMV)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.