首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python的AWS CDK -创建VPCs的基础

使用Python的AWS CDK -创建VPCs的基础
EN

Stack Overflow用户
提问于 2019-12-04 18:06:50
回答 1查看 528关注 0票数 0

我已经开始学习AWS,下面的代码示例从Python的CDK参考页面复制时有一个问题:https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_ec2.README.html#vpc。这是我第一次尝试写一些比复制教程更好的东西,但我找不到我犯了什么错误。非常感谢你帮助我。

配置:

代码语言:javascript
复制
source .env/bin/activate
pip3 install -r requirements.txt
pip3 install aws_cdk.aws_ec2

我的代码:

代码语言:javascript
复制
from aws_cdk import (
    aws_ec2 as ec2,
    core
)


class CdkStack(core.Stack):

    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        vpc = ec2.Vpc(self, "VPC",
            cidr="10.100.0.0/16",
            max_azs=3,
            subnet_configuration=[{
                "subnet_type": ec2.SubnetType.PUBLIC,
                "name": "public1",
                "cidr_mask": 24
            }, {
                "cidr_mask": 24,
                "name": "private1",
                "subnet_type": ec2.SubnetType.PRIVATE
            }
            ]
        )

由"cdk synth“命令引发的错误消息:

代码语言:javascript
复制
(.env) [robert@fedora1 cdk]$ cdk synth
jsii.errors.JavaScriptError: 
  Error: Missing required properties for @aws-cdk/aws-ec2.SubnetConfiguration: subnetType
      at validateRequiredProps (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7161:15)
      at Object.deserialize (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:6835:21)
      at Kernel._toSandbox (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8111:61)
      at /home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:6731:40
      at Array.map (<anonymous>)
      at Object.deserialize (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:6731:26)
      at Kernel._toSandbox (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8111:61)
      at /home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:6841:29
      at mapValues (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7101:27)
      at Kernel._wrapSandboxCode (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8205:19)
      at Kernel._create (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7749:26)
      at Kernel.create (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7503:21)
      at KernelHost.processRequest (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7293:28)
      at KernelHost.run (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7233:14)
      at Immediate._onImmediate (/home/robert/Documents/local/cdk/.env/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7236:37)
      at processImmediate (internal/timers.js:439:21)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "app.py", line 9, in <module>
    CdkStack(app, "cdk")
  File "/home/robert/Documents/local/cdk/.env/lib64/python3.7/site-packages/jsii/_runtime.py", line 66, in __call__
    inst = super().__call__(*args, **kwargs)
  File "/home/robert/Documents/local/cdk/cdk/cdk_stack.py", line 22, in __init__
    "subnet_type": ec2.SubnetType.PRIVATE
  File "/home/robert/Documents/local/cdk/.env/lib64/python3.7/site-packages/jsii/_runtime.py", line 66, in __call__
    inst = super().__call__(*args, **kwargs)
  File "/home/robert/Documents/local/cdk/.env/lib64/python3.7/site-packages/aws_cdk/aws_ec2/__init__.py", line 23226, in __init__
    jsii.create(Vpc, self, [scope, id, props])
  File "/home/robert/Documents/local/cdk/.env/lib64/python3.7/site-packages/jsii/_kernel/__init__.py", line 223, in create
    interfaces=[iface.__jsii_type__ for iface in getattr(klass, "__jsii_ifaces__", [])],
  File "/home/robert/Documents/local/cdk/.env/lib64/python3.7/site-packages/jsii/_kernel/providers/process.py", line 333, in create
    return self._process.send(request, CreateResponse)
  File "/home/robert/Documents/local/cdk/.env/lib64/python3.7/site-packages/jsii/_kernel/providers/process.py", line 318, in send
    raise JSIIError(resp.error) from JavaScriptError(resp.stack)
jsii.errors.JSIIError: Missing required properties for @aws-cdk/aws-ec2.SubnetConfiguration: subnetType
Subprocess exited with error 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 19:08:53

您提供了一个字典列表,但它需要一个SubnetConfiguration对象列表。

subnet_configuration (

Optional[ListSubnetConfiguration])

代码语言:javascript
复制
subnet_configuration=[
    ec2.SubnetConfiguration(
        cidr_mask=24,
        name='public1',
        subnet_type=ec2.SubnetType.PUBLIC
    ),
    ec2.SubnetConfiguration(
        cidr_mask=24,
        name='private1',
        subnet_type=ec2.SubnetType.PRIVATE
    )

]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59182287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档