Amazon web services 在其他区域部署AWS-CDK堆栈
基本上,我有一个简单的堆栈(Amazon web services 在其他区域部署AWS-CDK堆栈,amazon-web-services,amazon-s3,amazon-cloudformation,aws-cdk,aws-regions,Amazon Web Services,Amazon S3,Amazon Cloudformation,Aws Cdk,Aws Regions,基本上,我有一个简单的堆栈(Virginia),其中包含如下资源 S3桶(数据在那里) 胶粘桌 胶水作业 现在,我想在欧洲地区部署相同的堆栈,如eu-central-1 当我尝试在eu-central-1上部署aws cdk堆栈时,收到此错误 Bucket_Name already exists Exception 部署堆栈的命令类似于cdk deploy 目标 我想在不删除现有s3存储桶的情况下将现有堆栈部署到另一个区域。 有人能提出解决方案吗?基于: AmazonS3 bucket名称是全
Virginia
),其中包含如下资源
欧洲
地区部署相同的堆栈,如eu-central-1
当我尝试在eu-central-1
上部署aws cdk堆栈时,收到此错误
Bucket_Name already exists Exception
部署堆栈的命令类似于cdk deploy
目标
我想在不删除现有s3存储桶的情况下将现有堆栈部署到另一个区域。
有人能提出解决方案吗?基于:
AmazonS3 bucket名称是全局唯一的,并且名称空间由所有AWS帐户共享。这意味着在创建bucket之后,任何AWS区域中的其他AWS帐户都不能使用该bucket的名称,除非删除该bucket
创建S3 bucket时,bucketName
是可选的。如果省略bucketName
,将为您生成一个唯一的bucket名称
cdk项目中的其他资源可以通过引用使用bucket名称
例如:
从'@aws cdk/core'导入*作为cdk;
从“@aws cdk/aws-s3”导入*作为s3;
从“@aws cdk/aws glue”导入*作为胶水;
导出类MyStack扩展了cdk.Stack{
构造函数(作用域:cdk.Construct,id:string,props?:cdk.StackProps){
超级(范围、id、道具);
//生成以cdk堆栈名称开头的随机bucket名称
const bucket=new s3.bucket(这个“MyBucket”);
const database=new glue.database(这是“MyDatabase”{
数据库名称:“我的_数据库”
});
新的glue.Table(这是“MyTable”{
数据库:数据库,
bucket:bucket,//从创建的bucket中获取详细信息
S3前缀:“我的桌子/”
//其他表格详细信息。。。
});
}
}
基于:
AmazonS3 bucket名称是全局唯一的,并且名称空间由所有AWS帐户共享。这意味着在创建bucket之后,任何AWS区域中的其他AWS帐户都不能使用该bucket的名称,除非删除该bucket
创建S3 bucket时,bucketName
是可选的。如果省略bucketName
,将为您生成一个唯一的bucket名称
cdk项目中的其他资源可以通过引用使用bucket名称
例如:
从'@aws cdk/core'导入*作为cdk;
从“@aws cdk/aws-s3”导入*作为s3;
从“@aws cdk/aws glue”导入*作为胶水;
导出类MyStack扩展了cdk.Stack{
构造函数(作用域:cdk.Construct,id:string,props?:cdk.StackProps){
超级(范围、id、道具);
//生成以cdk堆栈名称开头的随机bucket名称
const bucket=new s3.bucket(这个“MyBucket”);
const database=new glue.database(这是“MyDatabase”{
数据库名称:“我的_数据库”
});
新的glue.Table(这是“MyTable”{
数据库:数据库,
bucket:bucket,//从创建的bucket中获取详细信息
S3前缀:“我的桌子/”
//其他表格详细信息。。。
});
}
}
我会将区域名称附加到bucket的末尾,这很容易做到,因为AWS已经为此提供了一个环境变量。因此,当命名bucket apppend时,在堆栈中,类似于堆栈末尾的stack.of(this.region)
,那么bucket名称将是唯一的
下面是一个typescript CDK示例
const bucket: Bucket = new Bucket(this, "S3_bucket_name", {
bucketName: "S3_bucket_name_" + Stack.of(this).region,
});
我会将区域名称附加到bucket的末尾,这很容易做到,因为AWS已经为此提供了一个env var。因此,当命名bucket apppend时,在堆栈中,类似于堆栈末尾的
stack.of(this.region)
,那么bucket名称将是唯一的
下面是一个typescript CDK示例
const bucket: Bucket = new Bucket(this, "S3_bucket_name", {
bucketName: "S3_bucket_name_" + Stack.of(this).region,
});
我认为对于另一个地区,您应该更改cdk代码以将现有bucket_名称导入到您可以在创建S3 bucket的地方共享您的cdk代码吗?我认为对于另一个地区,您应该更改cdk代码以将现有bucket_名称导入到您可以在创建S3 bucket的地方共享您的cdk代码吗?