【发布时间】:2021-01-08 14:46:53
【问题描述】:
我正在使用 aws-cdk 中的新 pipelines 模块来构建多帐户代码管道,将 Spring Boot 应用程序部署到 beanstalk。
我遵循了这个tutorial 并实现了我自己的Cdk.Stage 子类。
这个阶段类创建一个新的后端堆栈:
export class BackendStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, artifact: Artifact, props?: cdk.StackProps) {
super(scope, id, props);
const image = new DockerImageAsset(this, 'backend-image', {
directory: path.join(__dirname, '..', '..', '..', 'backend'),
buildArgs: {
'JAR_FILE': './target/app.jar'
},
})
const dockerRunFile = {
"AWSEBDockerrunVersion": "1",
"Ports": [
{
"ContainerPort": 8080,
"HostPort": 8080
}
],
"Image": {
"Name": image.imageUri
}
}
fs.writeFileSync(path.join(__dirname, 'Dockerrun.aws.json'), JSON.stringify(dockerRunFile));
const versionAsset = new Asset(this, 'version-asset', {
path: path.join(__dirname, 'Dockerrun.aws.json')
})
const appVersionProps = new CfnApplicationVersion(this, 'backend-app-version', {
applicationName: appName,
sourceBundle: {
s3Bucket: versionAsset.bucket.bucketName,
s3Key: versionAsset.s3ObjectKey
}
});
}
...
}
不幸的是,image.imageUri 解析为Token[TOKEN.219],而不是正确的图像 URI。
我认为这与 Cloudformation 令牌的解析有关。
在我看来,我必须推迟 Dockerrun.aws.json 的创建,但我不知道如何实现。
还有其他方法可以将 Dockerrun.aws.json 文件等资产传递到后端堆栈吗?
我需要它来正确部署 beanstalk 应用程序。
【问题讨论】:
标签: amazon-web-services aws-codepipeline aws-cdk