[CDK] Vpc.fromLookup()でエラー 「Cannot retrieve value from context provider vpc-provider since account/region are not specified at the stack level」が出る

カテゴリ: aws | タグ: , , ,

エラー内容

AWSのリソースをCDK経由で生成しようとしたが、デフォルトVPC情報を取得しようとして下記のコードを書いたがエラーが発生した。(使用言語はTypeScript)

lib/cdk-stack.ts

export class CdkStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const vpc = ec2.Vpc.fromLookup(this, 'VPC', {isDefault: true});   // ここでエラーが出る
    ....

発生したエラー

cdk deploy 

.../node_modules/aws-cdk-lib/core/lib/context-provider.ts:91
      throw new Error(`Cannot retrieve value from context provider ${options.provider} since account/region ` +
            ^
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.

エラー内容(日本語)

エラー: スタックレベルでaccount/regionが指定されていないためコンテキストプロバイダvpc-providerから値を取得できません。スタックを定義するときにaccountとregionを含めたenvを指定してください。この件についての詳細情報はhttps://docs.aws.amazon.com/cdk/latest/guide/environments.htmlにもあります。

原因

  • Vpc.fromLookupはルックアップを行うときにリージョンの指定が必要となる。

  • リージョンの指定はCdkStack.constructor()の第三引数にあるpropsのprops.env.regionから指定できる。

  • だが、props.envを指定していなかった。

    • CdkStackbin/cdk.tsでnewされているので、ここで指定できる。

対応

今回はbin/cdk.tsに対して、下記の対応を行った。

CdkStackの第三引数にenvを指定している。

bin/cdk.ts

new CdkStack(app, 'CdkStack', {
  env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION },
});

上記の例だと環境変数から値を取得しているが、以下のように固定の値を指定しても良い。

env: {account: '123456789012', region: 'ap-northeast-1'},

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

One thought on “[CDK] Vpc.fromLookup()でエラー 「Cannot retrieve value from context provider vpc-provider since account/region are not specified at the stack level」が出る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です