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
已提问 8 个月前462 查看次数
1 回答
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
已回答 8 个月前
    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

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则