CDK (python) throws an error while I provision a Network Load Balancer, the code used and and error as follows,

0
from aws_cdk import (
    aws_elasticloadbalancingv2 as elbv2,
    aws_ec2 as ec2,
    core
)

class MyStack(core.Stack):

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

        vpc = ec2.Vpc(self, 'MyVpc')

        nlb = elbv2.NetworkLoadBalancer(self, 'MyNlb',
            vpc=vpc,
            internet_facing=True
        )

        # Add a listener to the load balancer
        nlb.add_listener('MyListener',
            port=80,
            open=True
        )

ERROR: ImportError: cannot import name 'core' from 'aws_cdk' (/home/gowtham/cdk_workshop/.venv/lib/python3.10/site-packages/aws_cdk/init.py)

  • Kindly suggest

Gowtham
posta 3 mesi fa255 visualizzazioni
1 Risposta
0

Hello.

I think it's probably because I'm using version 2 of CDK.
https://aws.amazon.com/jp/blogs/developer/experimental-construct-libraries-are-now-available-in-aws-cdk-v2/

I think the error occurred because the core module disappeared in CDK version 2.
https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html

AWS CDK v2 consolidates the stable parts of the AWS Construct Library, including the core library, into a single package, aws-cdk-lib. Developers no longer need to install additional packages for the individual AWS services they use. This single-package approach also means that you don't have to synchronize the versions of the various CDK library packages.

So I think you need to do something like this:

from aws_cdk import (
    aws_elasticloadbalancingv2 as elbv2,
    aws_ec2 as ec2
)
from constructs import Construct
profile picture
ESPERTO
con risposta 3 mesi fa
profile pictureAWS
ESPERTO
verificato 3 mesi fa
  • could you help me with the complete code as I have provided above? I am a bit confused here.

  • I think it will look something like this.

    from aws_cdk import (
        aws_elasticloadbalancingv2 as elbv2,
        aws_ec2 as ec2
    )
    from constructs import Construct
    
    class MyStack(core.Stack):
    
        def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
            super().__init__(scope, id, **kwargs)
    
            vpc = ec2.Vpc(self, 'MyVpc')
    
            nlb = elbv2.NetworkLoadBalancer(self, 'MyNlb',
                vpc=vpc,
                internet_facing=True
            )
    
            # Add a listener to the load balancer
            nlb.add_listener('MyListener',
                port=80,
                open=True
            )
    
  • Traceback (most recent call last): File "/home/gowtham/cdk_workshop/app.py", line 5, in <module> from cdk_workshop.cdk_workshop_stack import CdkWorkshopStack File "/home/gowtham/cdk_workshop/cdk_workshop/cdk_workshop_stack.py", line 7, in <module> class MyStack(core.Stack): NameError: name 'core' is not defined Thanks for looking into it.

  • Will it work if I change it like below?

    class MyStack(Stack):
    
  • I will try now

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande