AWS CDK:如何在另一个账户中访问 VPC
AWS CDK: How to access VPC in another account
我需要从我的 "tools" 账户访问我的 staging/prod 账户的 VPC 中的资源(我在两个 VPC 中都有一个 RDS 实例,并希望将架构升级自动化作为我的一部分CI/CD).
如何从 "tools" 账户的堆栈中的 staging/prod 账户导入 VPC?
Vpc.fromLookup()
不起作用,因为它会在堆栈的区域和帐户中搜索 VPC,但不会在其他 regions/accounts 中搜索。
编辑:
我想授予 "tools" 账户中的 CodeBuild 项目(CodePipeline 的一部分)访问 prod/staging 账户的 VPC 中的 RDS 实例的权限。
为了授予它访问权限,我在 CodeBuild 项目上使用 vpc
attribute。
我不确定使用 CodePipeline/CodeBuild 解决模式升级的最佳方法是什么。
理想情况下,RDS 实例应位于 private/isolated 子网中。
const dbMigrateBuild = new codebuild.PipelineProject(this, 'MigrateBuild', {
buildSpec: codebuild.BuildSpec.fromSourceFilename('buildspec-migrate.yml'),
environment: {
buildImage: codebuild.LinuxBuildImage.STANDARD_4_0,
},
environmentVariables: {
migrationBucketId: {
type: codebuild.BuildEnvironmentVariableType.PLAINTEXT,
value: sourceOutput.bucketName,
},
dbEndpoint: {
type: codebuild.BuildEnvironmentVariableType.PLAINTEXT,
value: dbEndpoint,
},
dbSecretId: {
type: codebuild.BuildEnvironmentVariableType.PLAINTEXT,
value: dbSecretId,
},
},
vpc: ec2.Vpc.fromLookup(this, 'Vpc', { vpcId }), // <-- this is not working
});
// dbMigrateBuild.connections.allowToDefaultPort(db); // how to grant permission ??
const dbMigrateAction = new codepipeline_actions.CodeBuildAction({
actionName: 'Db_Migrate',
project: dbMigrateBuild,
input: sourceOutput,
runOrder: 130,
});
为此,您需要执行以下操作之一:
- 担任 "other account" 的角色。
- 通过在 CLI 上执行 export of the variables,使用担任此角色的凭据检索您的值。
这必须在 运行 cdk 命令之前执行,使用 sts assume-role 命令。
我需要从我的 "tools" 账户访问我的 staging/prod 账户的 VPC 中的资源(我在两个 VPC 中都有一个 RDS 实例,并希望将架构升级自动化作为我的一部分CI/CD).
如何从 "tools" 账户的堆栈中的 staging/prod 账户导入 VPC?
Vpc.fromLookup()
不起作用,因为它会在堆栈的区域和帐户中搜索 VPC,但不会在其他 regions/accounts 中搜索。
编辑:
我想授予 "tools" 账户中的 CodeBuild 项目(CodePipeline 的一部分)访问 prod/staging 账户的 VPC 中的 RDS 实例的权限。
为了授予它访问权限,我在 CodeBuild 项目上使用 vpc
attribute。
我不确定使用 CodePipeline/CodeBuild 解决模式升级的最佳方法是什么。 理想情况下,RDS 实例应位于 private/isolated 子网中。
const dbMigrateBuild = new codebuild.PipelineProject(this, 'MigrateBuild', {
buildSpec: codebuild.BuildSpec.fromSourceFilename('buildspec-migrate.yml'),
environment: {
buildImage: codebuild.LinuxBuildImage.STANDARD_4_0,
},
environmentVariables: {
migrationBucketId: {
type: codebuild.BuildEnvironmentVariableType.PLAINTEXT,
value: sourceOutput.bucketName,
},
dbEndpoint: {
type: codebuild.BuildEnvironmentVariableType.PLAINTEXT,
value: dbEndpoint,
},
dbSecretId: {
type: codebuild.BuildEnvironmentVariableType.PLAINTEXT,
value: dbSecretId,
},
},
vpc: ec2.Vpc.fromLookup(this, 'Vpc', { vpcId }), // <-- this is not working
});
// dbMigrateBuild.connections.allowToDefaultPort(db); // how to grant permission ??
const dbMigrateAction = new codepipeline_actions.CodeBuildAction({
actionName: 'Db_Migrate',
project: dbMigrateBuild,
input: sourceOutput,
runOrder: 130,
});
为此,您需要执行以下操作之一:
- 担任 "other account" 的角色。
- 通过在 CLI 上执行 export of the variables,使用担任此角色的凭据检索您的值。
这必须在 运行 cdk 命令之前执行,使用 sts assume-role 命令。