Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 无法从上下文提供程序ami检索值,因为未在堆栈级别指定帐户/区域_Typescript_Amazon Web Services_Amazon Ec2_Aws Cdk - Fatal编程技术网

Typescript 无法从上下文提供程序ami检索值,因为未在堆栈级别指定帐户/区域

Typescript 无法从上下文提供程序ami检索值,因为未在堆栈级别指定帐户/区域,typescript,amazon-web-services,amazon-ec2,aws-cdk,Typescript,Amazon Web Services,Amazon Ec2,Aws Cdk,您好,我在尝试在AWS CDK上创建堆栈时遇到问题 从'@aws cdk/core'导入*作为cdk; 导入ec2=需要(“@aws cdk/aws-ec2”); 从'@aws-cdk/aws-ec2'导入{SubnetType}; 导出类FirstDemoStack扩展了cdk.Stack{ 构造函数(作用域:cdk.Construct,id:string,props?:cdk.StackProps){ 超级(范围、id、道具); const natGatewayProvider=ec2.Na

您好,我在尝试在AWS CDK上创建堆栈时遇到问题

从'@aws cdk/core'导入*作为cdk;
导入ec2=需要(“@aws cdk/aws-ec2”);
从'@aws-cdk/aws-ec2'导入{SubnetType};
导出类FirstDemoStack扩展了cdk.Stack{
构造函数(作用域:cdk.Construct,id:string,props?:cdk.StackProps){
超级(范围、id、道具);
const natGatewayProvider=ec2.NatProvider.instance({
instanceType:new ec2.instanceType('t3.micro'))
});
const vpc=新的ec2.vpc(这是“vpc_测试”{
cidr:'10.0.0.0/26',
马克萨兹:1,
子网配置:[
{
子网类型:ec2.subnetType.PUBLIC,
名称:“入口”,
西德马克:28
},
{
cidrMask:28,
名称:“应用程序”,
子网类型:ec2.subnetType.PRIVATE
}
],
natGatewayProvider,
natGateways:2,
});
}
}
所以我得到了下一个错误

无法从上下文提供程序ami检索值,因为未在堆栈级别指定帐户/区域。在定义堆栈时,使用显式帐户和区域配置“env”,或使用环境变量“CDK_DEFAULT_account”和“CDK_DEFAULT_region”从CLI继承环境信息(不建议用于生产堆栈)

我知道我需要将区域和帐户添加到堆栈中,但我不知道在哪里

如果我们发现错误,这意味着为了为您的EC2实例找到合适的AMI,需要设置区域/帐户。有几种方法可以做到这一点

1) 建议在实例化堆栈时设置信息

index.ts
文件中,您将找到
新的FirstDemoStack(…)
调用。您需要修改它以包含一些环境变量。这是您可以设置帐户和区域的地方

new FirstDemoStack(app, 'first-demo-stack', { env: {
  account: 'your-account-number',
  region: 'us-east-1' // or whatever region you use
}});
2) 您可以在环境变量中设置它


您需要将
CDK\u DEFAULT\u账户
CDK\u DEFAULT\u区域
设置为各自的值。您可以使用它,但如果您需要使用两个区域或两个帐户,则需要对它们进行硬编码。

如果我们将错误区分开来,这意味着为了为您的EC2实例找到合适的AMI,需要设置一个区域/帐户。有几种方法可以做到这一点

1) 建议在实例化堆栈时设置信息

index.ts
文件中,您将找到
新的FirstDemoStack(…)
调用。您需要修改它以包含一些环境变量。这是您可以设置帐户和区域的地方

new FirstDemoStack(app, 'first-demo-stack', { env: {
  account: 'your-account-number',
  region: 'us-east-1' // or whatever region you use
}});
2) 您可以在环境变量中设置它


您需要将
CDK\u DEFAULT\u账户
CDK\u DEFAULT\u区域
设置为各自的值。您可以使用此选项,但如果您需要使用两个区域或两个帐户,则需要对其进行硬编码。

hmm我在运行单元测试时遇到此错误,如何模拟此上下文提供程序?我相信区域必须始终设置为有效值,但您可能会设置一个假帐号(可能在CDK_DEFAULT_account参数中)。这将允许您在没有“实际”设置的情况下进行单元测试。嗯,我在运行单元测试时遇到此错误,我们如何模拟此上下文提供程序?我相信区域必须始终设置为有效值,但您可能会设置一个假帐号(可能在CDK_DEFAULT_account参数中)。这将允许您在没有“实际”设置的情况下进行单元测试。