Route 53サブドメインホストゾーンを作成したら、元のホストゾーンにNSレコードを作成する自動化
ハンズオン環境でRoute 53のホストゾーンを触ってほしい際に、サブドメインを設定する場合があります。
複数アカウントでセットアップを自動化したかったので、構築しました。
目次
動作
元のドメインがexample.comだとします。
サブドメインの123はアカウントIDを想定しています。
- アカウントBでRoute 53に123.example.comホストゾーンが作成される
- EventBridgeがイベントを検知してLambda関数を実行
- Lambda関数がアカウントAのDynamoDBテーブルにレコードを追加
- DynamoDBストリームがアカウントAのLambda関数をトリガー
- アカウントAのLambda関数がexample.comのホストゾーンにNSレコード123.example.comを作成
これで、アカウントBのRoute 53で、www.123.example.comなどを作成して、レコードセット設定のハンズオンができます。
GitHub
CloudFormationテンプレートはGitHubにあります。
Lambdaのコードもテンプレートにインラインにしています。
https://github.com/yamamanx/route53-creatensrecord
EventBridgeのルール
対象アカウントが限定的なので、ホストゾーンの作成、削除はすべて対応としています。
1 2 3 4 5 6 7 8 9 |
{ "detail-type": ["AWS API Call via CloudTrail"], "source": ["aws.route53"], "detail": { "eventSource": ["route53.amazonaws.com"], "eventName": ["CreateHostedZone", "DeleteHostedZone"] } } |
ターゲットはLambda関数です。
Lambda関数では、クロスアカウントのDynamoDBテーブルにPutItemするので、boto3で指定しているテーブル名はARNにしています。
CreateHostedZoneの際はoperation=”create”、DeleteHostedZoneの際はoperation=”delete”でPutItemのみ許可されるようにしています。
Lambda関数はCloudFormationテンプレートにあります。
DynamoDBのリソースベースポリシー
昨年DynamoDBにリソースベースのポリシーが追加されましたので、それを利用しています。
ハンズオン用のアカウントBは元のドメインを管理しているアカウントAとは同じOrganizations組織にあります。
そこで次のようなポリシーにしました。
PutItemのみを組織内のアカウントで許可されたプリンシパルから受け付けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "dynamodb:PutItem", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:PrincipalOrgID": "o-12345678" } } } ] } |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Amazon Cognito User Poolsのデモをしてみました
AWS Summit 2016 Tokyoのアップデートおっかけ会をJAWS-U …
-
-
Amazon SES, S3で受信したメールをAWS Lambda, SESで別のメールへ転送する
Amazon SESでメール受信で受信したメールを、毎回S3バケットに見に行って …
-
-
ヤマムギvol.23 Amazon RDS for MySQLとAmazon Aurora Serverlessの起動のデモをしました
ゴールデンウィーク毎朝デモ勉強会は終わったのですが、土曜日にやれるときがあれば、 …
-
-
Amazon Augmented AI (Amazon A2I) のチュートリアル
Amazon Augmented AI (Amazon A2I)を使ったことがあ …
-
-
macOSにAWS Schema Conversion Toolをインストール
環境 macOS BigSur バージョン11.5(20G71) MacBook …
-
-
IAMユーザーのマネジメントコンソールログインパスワードを変更してDynamoDBに記録するLambda(Python)
やりたいこと IAMユーザーのマネジメントコンソールへのサインインパスワードを動 …
-
-
IAMアクセス許可の境界でIAMロールの権限を制御する
IAMユーザー自身の権限はIAMポリシーで制御できますが、IAMユーザーにIAM …
-
-
Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証
Quantum Ledger Database(QLDB)を触ったことなかったの …
-
-
EC2 Ubuntu DesktopにRDP
Ubuntu Desktopが必要になりましたので、こちらのAWS EC2でデス …
-
-
S3バケットポリシーでクロスアカウントのPrincipalについて確認
確認したこと ドキュメントではこちらで確認しました。 AWS JSON ポリシー …