amazon-web-services - AWS CDK Java - 模板格式错误:映射元素计数 0 应大于 0
问题描述
我想将 AWS CDK 与 Java 一起使用来创建一个简单的 VPC,其中包含一个公共子网、一个安全组和一个 EC2 实例。Java类如下,很简单:
public class CDKStack extends Stack {
public CDKStack(final Construct scope, final String id) {
this(scope, id, null);
}
public CDKStack(final Construct scope, final String id, final StackProps props) {
super(scope, id, props);
// Create public subnet
SubnetConfiguration publicSubnet = SubnetConfiguration.builder()
.name("public-subnet")
.subnetType(SubnetType.PUBLIC)
.cidrMask(24)
.build();
List<SubnetConfiguration> subnetList = new ArrayList<>();
subnetList.add(publicSubnet);
// Create VPC with subnet above
Vpc vpc = new Vpc(this, "vpc-from-ckd", VpcProps.builder()
.cidr("10.0.0.0/16")
.maxAzs(1)
.subnetConfiguration(subnetList)
.build());
// Create the Security Group inside the VPC
SecurityGroup securityGroup = new SecurityGroup(this, "sg-cdk-java", SecurityGroupProps.builder()
.vpc(vpc)
.allowAllOutbound(true)
.build());
// Create image and EC2 instance
final GenericLinuxImage genericLinuxImage = new GenericLinuxImage(Collections.emptyMap());
Instance.Builder.create(this, "EC2 from CDK")
.instanceType(new InstanceType("t2.micro"))
.machineImage(genericLinuxImage)
.securityGroup(securityGroup)
.vpc(vpc)
.build();
}
}
但是,当我cdk deploy
(在 Windows 10 上)运行时,我收到以下我不理解的错误:
CDKStack: deploying...
CDKStack: creating CloudFormation changeset...
❌ CDKStack failed: Error [ValidationError]: Template format error: Mappings element count 0 should be greater than 0
任何可以澄清我做错了什么的帮助都将不胜感激,因为我正在浏览示例和 API 文档,但我无法弄清楚。
解决方案
经过一番搜索,我更加注意错误消息,并意识到Mappings指的是Cloudformation Mappings(现在想想听起来很明显,但从错误消息中完全不清楚,它似乎更像是一个动词句子)并且从他们在官方文档中的示例中,我认为它可能与环境变量有关。因此,我在 Java 类中明确设置它们,现在它可以工作了:
.env(Environment.builder()
.account("1234567890")
.region("aws-region-name")
.build())
推荐阅读
- php - 我有一个登录 php 文件给我这个错误“mysqli_stmt_close() 期望参数 1 是 mysqli_stmt,布尔值”
- python - 无法解释python中打印语句的输出
- linux - 如何创建能够让我查看、修改和附加它创建的文本文件的 Shell 脚本
- html - 为什么 _POST 不从 HTML 表单中收集数据?
- r - 通过矢量化加速 R 中的三重嵌套 For 循环
- php - 尝试加载 laravel 项目时,如何解决服务器端的“在此服务器上找不到请求的 URL /登录”问题?
- php - 如何将后输入数据ajax发送到控制器?
- javascript - AWS API Gateway Web Socket Api - 向所有连接的客户端广播消息
- image - 我的基于照片的应用程序是否应该存储两个不同大小版本的上传图像?
- macos - OpenGL 中的 CGLFlushDrawable 不等待 OS X 10.13 和 10.14 上的监视器刷新