在 CDKPipeline SynthAction 中配置运行时版本

sno*_*iow 1 aws-cdk

我们正在通过 CDKPipeline 构造部署 Go Lambda,并且需要编译 Go 代码作为合成步骤的一部分。

现在我们想要更新到 1.15,这只有使用新的 Codebuild Standard 5.0 才有可能。Codebuild Image 本身可通过 SimpleSynthOptions 字段进行配置environment。但似乎没有直接的方法来传递运行时版本。这是引入的一个字段,它是在install:key下定义的。( https://docs.aws.amazon.com/codebuild/latest/userguide/sample-runtime-versions.html ),但安装步骤在类中完全不可配置SimpleSynthAction

我目前看到的唯一方法是重写类bind中的函数SimpleSynthAction。从我所见,似乎也没有办法在 Synth 步骤之前引入单独的 Codebuild 步骤?

我是否忽略了任何选择,或者这真的是唯一的方法吗?如果是这样,是否值得提出功能请求来将运行时版本配置为合成动作的一部分?

小智 7

在最新的 CdkPipeline API 中,您可以自定义构建规范:https://docs.aws.amazon.com/cdk/api/latest/docs/pipelines-readme.html#customizing-codebuild-projects

例如,使用synthCodeBuildDefaults指定nodejs 14:

const pipeline = new CodePipeline(this, 'Pipeline', {
    synth: new ShellStep('Synth', {
        input: CodePipelineSource.codeCommit(repo, "mainline"),
        commands: [
            "npm ci",
            "npm run build",
            "cd packages/infrastructure",
            "npx cdk synth",
        ],
        primaryOutputDirectory: "packages/infrastructure/cdk.out",
    }),
    synthCodeBuildDefaults: {
        partialBuildSpec: BuildSpec.fromObject({
            phases: {
                install: {
                    "runtime-versions": {
                        nodejs: "14"
                    }
                }
            }
        })
    }
});
Run Code Online (Sandbox Code Playgroud)