我目前正在开发跨帐户部署管道。
我使用 4 个不同的堆栈:
- 后端管道堆栈
- 通用基础设施堆栈
- Assets 部署堆栈
- BusinessAssetAPIStack
最后 2 个堆栈都有 props
,其中包括生成的 Layer
和构建的 JS 文件(针对不同的 Lambda)。
我的cdk.ts
看起来像这样:
import * as cdk from "@aws-cdk/core"
import { BackendPipelineStack } from "../lib/backend-pipeline"
import { BusinessAssetAPIStack } from "../lib/business-asset-api-stack"
import { projectConfig } from "../config/config"
import { AssetDeploymentStack } from "../lib/asset-deployment-stack"
import { CommonInfrastructureStack } from "../lib/common-infrastructure-stack"
const app = new cdk.App()
const commonInfraStack = new CommonInfrastructureStack(app, "CommonInfrastructureStack", {
stackName: `${projectConfig.resourcePrefix}-common-infrastructure-stack`,
})
const apiStack = new BusinessAssetAPIStack(app, "BusinessAssetAPIStack", {
stackName: `${projectConfig.resourcePrefix}-business-asset-api-stack`,
...,
installationUserEmailIndexName: commonInfraStack.installationTechnicalAssetUserEmailIndexName,
})
const deploymentStack = new AssetDeploymentStack(app, "AssetDeploymentStack", {
stackName: `${projectConfig.resourcePrefix}-asset-deployment-stack`,
...,
installationAccountRegionIndexName: commonInfraStack.installationAccountRegionIndexName,
})
new BackendPipelineStack(app, "BackendPipelineStack", {
nonProdAccountId: "nonProdAccountId",
apiStack,
commonInfraStack,
deploymentStack,
})
我的BackendPipelineStack
堆栈是生成codepipeline.Artifact
的堆栈,它存储构建的JS文件和Layer
。
//backend-pipeline.ts
export class BackendPipelineStack extends Stack {
...
const lambdaBuildOutput = new Artifact("DistArtifact")
const lambdaLayer = new Artifact("LayerArtifact")
...
我希望能够将两个Artifacts
传递到通过PipelineStack构造函数传递的其他堆栈。
有办法做到这一点吗?
最佳答案
我为那些和我遇到同样情况的人找到了答案。
查看管道操作,有一个名为 CloudFormationCreateOrUpdateStack
的操作,它允许通过 CfnParametersCode
(here's a python example) 覆盖 Lambda Stack 中提供的参数。 .
关于node.js - AWS-CDK:需要将管道中生成的资源传递到创建的堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70940592/