AWS CDK类型脚本环境变量值验证



我需要在CDK堆栈下部署到AWS的每个资源上添加deployment_env标记,其可能值为dev,testprod,除此之外,所有资源都应该具有相同的属性。我试图使用DEPLOYMENT_ENV的环境变量,这是很好的工作,除非任何值以外的可能值仍然通过和CDK仍然可以合成和部署任何提供的值。不仅如此,当没有定义环境变量时,typescript编译器不会验证undefinednull的值,并且在将值赋给Tag must have a value的标记时收到错误,这预计会提前失败。下面是代码

#!/usr/bin/env node
import { App, Tags } from 'aws-cdk-lib';
import { EnvInitStack } from '../lib/foo-stack';
const deploymentEnv : 'dev' | 'test' | 'prod' = process.env.DEPLOYMENT_ENV as 'dev' | 'test' | 'prod';
const app = new App();
const fooStack = new FooStack(app, 'FooStack', {});
Tags.of(envInitStack).add('deployment_env', deploymentEnv as string);
  1. 使用DEPLOYMENT_ENV=foo cdk synth命令成功地合成并部署了cdk
  2. 使用cdk synth命令收到Error: Tag must have a value错误

你需要通过js代码而不是类型脚本定义来验证你的值'deploymentEnv'。尝试添加:

if (!['dev','test','prod'].includes(deploymentEnv))
throw ('invalid deploymentEnv tag');

相关内容

  • 没有找到相关文章

最新更新