0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クロスリージョン参照(CDK)

Last updated at Posted at 2023-06-27

概要

従来CDKでクロスリージョン参照といえば、cdk-remote-stackを使用する事が主流でしたが、どうやらCDK 2.50.0以降からCDKネイティブでクロスリージョンのリソース受け渡し(スタック間参照)が可能になったとの事(もっと早く知っていれば...)

サンプルコード

以下のサンプルコードは、"ap-northeast-1"のCloudFrontスタックから"us-east-1"のWebACLのARNを参照する例です。

bin/main.ts

bin/main.ts
#!/usr/bin/env node

import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { Environment } from 'aws-cdk-lib';
import { WebACLStack } from '../lib/WebACL/WebACLStack';
import { CloudFrontStack } from '../lib/CloudFront/CloudFrontStack';

if (process.env['NODE_ENV'] == null || process.env['NODE_ENV'] === '') {
    throw new Error('NODE_ENV is not set');
}
if (process.env['AWS_PROFILE'] == null || process.env['AWS_PROFILE'] === '') {
    throw new Error('AWS_PROFILE is not set');
}

const app = new cdk.App();

const env: Environment = {
    account: '<AWSアカウント番号>',
    region: 'ap-northeast-1',
};

const webAcl = new WebACLStack(app, {
    env: {
        ...env,
        region: 'us-east-1',
    },
    crossRegionReferences: true, // クロスリージョン参照を有効化
});

new CloudFrontStack(app, {
    env: env,
    webAclArn: webAcl.outputs.webAclArn, // WebACLのARNを渡す
    crossRegionReferences: true, // クロスリージョン参照を有効化
});

関連する2つのスタック両方に「crossRegionReferences: true」を1行追加させるだけで、簡単にクロスリージョン参照をさせる事が出来ました。
※裏側でAWS Lambdaとパラメータストアのリソースが自動で作成される模様。

WebACLStack.tsに依存してしまうのは少し残念な所ではありますが、クロスリージョン参照がこんな簡単に実装出来るなら痛くも痒くもありません。 

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?