JetBrains Space 部署到 AWS Lambda
JetBrains Space Deploy to AWS Lambda
我们正在试验 Jetbrains Space 作为我们的代码库和 CI/CD。我们正在尝试找到一种方法来设置 .space.kts
文件以部署到 AWS Lambda。
我们希望 develop
分支发布到 Lambda $Latest
,当我们从 develop
分支合并到 main
分支时,我们希望它发布一个新的 Lambda 版本和 link 别名 pro
.
的那个版本
我环顾四周,但没有发现任何迹象表明存在用于控制 AWS Lambda 的预构建解决方案,所以我目前的想法是这样的:
job("Publish to Lambda Latest") {
startOn {
gitPush {
branchFilter {
+"refs/heads/develop"
}
}
}
container(displayName = "AWS Lambda CLI", image = "amazon/aws-cli") {
// Space Packages repository
env["REPOSITORY_URL"] = "https://..."
shellScript {
content = """
echo Deploying to Lambda Latest...
...
"""
}
}
}
我不相信使用 shell 脚本是一种非常可靠的方法来执行此操作,因为我需要将变量从一个命令传递到另一个命令。有更好的方法吗?
没有用于与 AWS 交互的内置 DSL。
如果你想要一个比普通 shellScript
更类型安全的解决方案,并且可能在多次调用之间重用数据等,你仍然可以直接使用 Kotlin 代码(在 kotlinScript
块中shellScript
).
您 can specify maven dependencies for your .space.kts
script 通过 @DependsOn
注释,您可以使用它从 AWS Java SDK 添加模块:
// you can add other module artifacts like "s3", "ec2", etc.
@file:DependsOn("software.amazon.awssdk:lambda:2.13.7")
import software.amazon.awssdk.services.lambda.*
import software.amazon.awssdk.services.lambda.model.*
job("Publish to Lambda Latest") {
startOn {
gitPush {
branchFilter {
+"refs/heads/develop"
}
}
}
container(displayName = "AWS Lambda", image = "openjdk:11") {
kotlinScript { spaceApi ->
// use AWS SDK classes here, for instance:
val client = LambdaClient.builder().build()
val updateFunctionCodeRequest = UpdateFunctionCodeRequest.builder()
.functionName("name")
.s3Bucket("bucket")
.s3Key("key")
.publish(true)
.build()
client.updateFunctionCode(updateFunctionCodeRequest)
client.close()
}
}
}
此处显示的这段代码只是为了示例(以表明您可以使用 AWS SDK 类 和方法),它不是关于如何发布 lambda 的完整示例。
我们正在试验 Jetbrains Space 作为我们的代码库和 CI/CD。我们正在尝试找到一种方法来设置 .space.kts
文件以部署到 AWS Lambda。
我们希望 develop
分支发布到 Lambda $Latest
,当我们从 develop
分支合并到 main
分支时,我们希望它发布一个新的 Lambda 版本和 link 别名 pro
.
我环顾四周,但没有发现任何迹象表明存在用于控制 AWS Lambda 的预构建解决方案,所以我目前的想法是这样的:
job("Publish to Lambda Latest") {
startOn {
gitPush {
branchFilter {
+"refs/heads/develop"
}
}
}
container(displayName = "AWS Lambda CLI", image = "amazon/aws-cli") {
// Space Packages repository
env["REPOSITORY_URL"] = "https://..."
shellScript {
content = """
echo Deploying to Lambda Latest...
...
"""
}
}
}
我不相信使用 shell 脚本是一种非常可靠的方法来执行此操作,因为我需要将变量从一个命令传递到另一个命令。有更好的方法吗?
没有用于与 AWS 交互的内置 DSL。
如果你想要一个比普通 shellScript
更类型安全的解决方案,并且可能在多次调用之间重用数据等,你仍然可以直接使用 Kotlin 代码(在 kotlinScript
块中shellScript
).
您 can specify maven dependencies for your .space.kts
script 通过 @DependsOn
注释,您可以使用它从 AWS Java SDK 添加模块:
// you can add other module artifacts like "s3", "ec2", etc.
@file:DependsOn("software.amazon.awssdk:lambda:2.13.7")
import software.amazon.awssdk.services.lambda.*
import software.amazon.awssdk.services.lambda.model.*
job("Publish to Lambda Latest") {
startOn {
gitPush {
branchFilter {
+"refs/heads/develop"
}
}
}
container(displayName = "AWS Lambda", image = "openjdk:11") {
kotlinScript { spaceApi ->
// use AWS SDK classes here, for instance:
val client = LambdaClient.builder().build()
val updateFunctionCodeRequest = UpdateFunctionCodeRequest.builder()
.functionName("name")
.s3Bucket("bucket")
.s3Key("key")
.publish(true)
.build()
client.updateFunctionCode(updateFunctionCodeRequest)
client.close()
}
}
}
此处显示的这段代码只是为了示例(以表明您可以使用 AWS SDK 类 和方法),它不是关于如何发布 lambda 的完整示例。