[英]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.