Typescript 无法从上下文提供程序ami检索值,因为未在堆栈级别指定帐户/区域
您好,我在尝试在AWS CDK上创建堆栈时遇到问题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/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参数中)。这将允许您在没有“实际”设置的情况下进行单元测试。