ヤマムギ

growing hard days.

*

Route 53サブドメインホストゾーンを作成したら、元のホストゾーンにNSレコードを作成する自動化

   

ハンズオン環境でRoute 53のホストゾーンを触ってほしい際に、サブドメインを設定する場合があります。
複数アカウントでセットアップを自動化したかったので、構築しました。

動作

元のドメインがexample.comだとします。
サブドメインの123はアカウントIDを想定しています。

  1. アカウントBでRoute 53に123.example.comホストゾーンが作成される
  2. EventBridgeがイベントを検知してLambda関数を実行
  3. Lambda関数がアカウントAのDynamoDBテーブルにレコードを追加
  4. DynamoDBストリームがアカウントAのLambda関数をトリガー
  5. アカウント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のルール

対象アカウントが限定的なので、ホストゾーンの作成、削除はすべて対応としています。

ターゲットはLambda関数です。
Lambda関数では、クロスアカウントのDynamoDBテーブルにPutItemするので、boto3で指定しているテーブル名はARNにしています。
CreateHostedZoneの際はoperation=”create”、DeleteHostedZoneの際はoperation=”delete”でPutItemのみ許可されるようにしています。
Lambda関数はCloudFormationテンプレートにあります。

DynamoDBのリソースベースポリシー

昨年DynamoDBにリソースベースのポリシーが追加されましたので、それを利用しています。
ハンズオン用のアカウントBは元のドメインを管理しているアカウントAとは同じOrganizations組織にあります。

そこで次のようなポリシーにしました。
PutItemのみを組織内のアカウントで許可されたプリンシパルから受け付けます。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

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

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

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

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

 - AWS , ,

ad

ad

  関連記事

API Gateway 作成済REST APIの定義をSwaggerの形式でエクスポート

SAMで似たようなAPIを作りたくて、エクスポートしました。 Swaggerは、 …

AWSエンコードされたエラーメッセージをデコードするコマンドのメモ

Stdout: couldn’t create ENI: Unaut …

EC2 VyOSで/etc/resolv.confを設定しました

EC2でVyOSを起動してSSHで接続して確認していたところ、どうもVyOSから …

EC2 Auto ScalingカスタムメトリクスのモニタリングにCloudWatch検索式が便利でした

EC2 Auto Scalingで起動したインスタンスのカスタムメトリクス この …

AWS Systems Manager Session ManagerでLinuxインスタンスのRun Asサポートを有効にする

AWS Systems Manager Session Managerの設定画面 …

Microsoft TeamsのIncoming Webhooksを使ってAWS Lambda(Python)からFeedlyの記事を自動投稿する

Microsoft Teamsの検証を始めましたので、Slackで自動化している …

WordPressをAmazon CloudFrontで配信してついでにACM(AWS Certificate Manager)を使って常時SSL化する

当サイトの500と502の発生状況がドイヒーであるとの苦情をいただきまして、Am …

LMA(amazon-transcribe-live-meeting-assistant)を海外とのインタビューミーティングで使ってみました

amazon-transcribe-live-meeting-assistant …

AWS CloudWatch LogsエージェントでAmazon EC2上のNginxのaccess.log , error.log , php-fpm error.log , Linuxのmessages , secureログを収集する

参考ページ クイックスタート: 実行中の EC2 インスタンスに CloudWa …

AWS CDK とにかくサンプルでやってみる

Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …