ec2.Vpc.from_lookup で account/region が指定されていない対処方法

0

スタックは次の通りです。

import aws_cdk as cdk
import aws_cdk.aws_ec2 as ec2
from constructs import Construct

class ExistsVpcDeploy(cdk.Stack):
    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)
        
        environment_type = self.node.try_get_context("environmentType")
        environment_context = self.node.try_get_context(environment_type)
        region = environment_context["region"]
        account = self.node.try_get_context("account")

        vpcid = self.node.try_get_context("vpcid")

        vpc = ec2.Vpc.from_lookup(self,"VPC",vpc_id=vpcid)

app.py は次の通りです。

environment = Environment(
     account = account,
     region = region
)

PipelineStack(
    app,
    "test-stack",
    env = environment

ec2.Vpc.from_lookup の箇所で次のエラーになる原因と修正方法がご存じの方がいらっしゃれば教えて下さい。

RuntimeError: Error: Cannot retrieve value from context provider vpc-provider since account/region are not specified at the stack level. Configure "env" with an account and region when you define your stack.See https://docs.aws.amazon.com/cdk/latest/guide/environments.html for more details.

naomaro
gefragt vor 8 Monaten445 Aufrufe
1 Antwort
0

こんにちは!

この問題については、次のことを確認できます。

  1. 正しいスタックを呼び出しています: PipelineStack ==> ExistsVpcDeploy
  2. デフォルト VPC をインポートしない場合は、「ec2.Vpc.from_lookup()」関数で「is_default=False」を明示的に設定します。

参照: https://stackoverflow.com/questions/59301265/how-to-import-existing-vpc-in-aws-cdk

これで問題が解決したかどうかお知らせください。

profile picture
beantwortet vor 8 Monaten
    1. aws_cdk.pipelines を利用した別スタックで、PipelineStackを利用しているので私が記述した内容に間違えはありません。Pipeline の deploy ステージで ExistsVpcDeploy を実行しています。

    2. ec2.Vpc.from_lookup() で既存の VPC を呼び出したいため、is_default=False を利用するのは違うようです。実際に is_default=False を入れても同じエラーです。

  • 申し訳ございませんが、提供された情報に基づいて最善を尽くしてお手伝いしております。また、問題に対するさらなるコンテキストを提供いただき、ありがとうございます。

    現在の状況では、環境を設定するためのコードは問題なさそうです。"ExistsVpcDeploy" を作成するコードスニペットを共有いただけますか?これにより、問題をさらに理解するのに役立つかと思います。

    さらに、以下の点をチェックしてみてもいいかもしれません:

    すべてのスタックに "env" があるか確認してください。これは、直接propsとして渡すか、親から継承することができます。

    参考: https://github.com/aws/aws-cdk/issues/3130

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen