AWS CDK:如何使用另一个帐户访问VPC

时间:2020-05-25 07:08:13

标签: amazon-web-services aws-cdk

我需要从我的“工具”帐户访问暂存/生产帐户的VPC中的资源(我在两个VPC的每一个中都有一个RDS实例,并且希望作为我的CI / CD的一部分自动进行模式升级)。 / p>

如何从“工具”帐户中的堆栈中的暂存/生产帐户导入VPC?

Vpc.fromLookup()不起作用,因为它在堆栈的区域和帐户中搜索VPC,但不在其他区域/帐户中搜索。

编辑:

我想授予“工具”帐户中的CodeBuild项目(CodePipeline的一部分)访问产品/暂存帐户的VPC中的RDS实例的权限。 要授予它访问权限,我在CodeBuild项目上使用vpc attribute

我不确定使用CodePipeline / CodeBuild解决架构升级的最佳方法是什么。 理想情况下,RDS实例应位于专用/隔离的子网中。

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,
});

1 个答案:

答案 0 :(得分:0)

为此,您需要执行以下一项操作:

  • 从“其他帐户”承担角色。
  • 通过在CLI上执行export of the variables,使用承担此角色的凭据来检索您的值。

必须在使用sts assume-role命令运行cdk命令之前执行此操作。