Shallow Dive by Dozono

AWS CDK によるマルチリージョンのスタック展開

Posted : 25 Jun 2020

AWS CDK を用いたマルチリージョンのスタック展開でハマったので備忘録。

環境

  • AWS CDK 1.46.0
  • TypeScript

やりたいこと

AWS CDKを使って、一部のリソースをバージニア北部(us-east-1)、その他のリソースを東京(ap-northeast-1)に展開したい。

トラブル

環境変数を設定し、

1
2
export CDK_DEFAULT_ACCOUNT=123456789012
export CDK_DEFAULT_REGION=ap-northeast-1

次の様にbin/*.tsファイルにリージョンを指定しても、Stack1が東京リージョン(ap-northeast-1)に作成される。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from '@aws-cdk/core';
import { stack1 } from '../lib/stack1';
import { stack2 } from '../lib/stack2';

const app = new cdk.App();

const stack1 = new Stack1(app, 'stack1', {
  env: {
    account: process.env.CDK_DEFAULT_ACCOUNT,
    region: 'us-east-1'  // こいつが働かない💢
  }
});

new Stack2(app, 'stack2', {
  env: {
    account: process.env.CDK_DEFAULT_ACCOUNT,
    region: process.env.CDK_DEFAULT_REGION
  }
}).addDependency(stack1);

原因

想定外のファイルが原因だった。
~/.aws/configで以下のようにregionを指定していた。cdk deployコマンドでは、Stack作成時に指定するenvよりも~/.aws/configの内容が優先される動作の様だ。

[default]
region = ap-northeast-1
output = json

対応

~/.aws/configからregionの指定を削除した。

[default]
output = json

aws cli実行時には都度Regionを指定する弊害がありそう。

以上