AWS CloudFormation カスタムリソースと Amazon SNS を使用して Infoblox オブジェクトを作成します。 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CloudFormation カスタムリソースと Amazon SNS を使用して Infoblox オブジェクトを作成します。

ティム・サットン (AWS) によって作成された

概要

注意: AWS Cloud9 は新規顧客には利用できなくなりました。の既存のお客様は、通常どおりサービスを AWS Cloud9 引き続き使用できます。詳細はこちら

Infoblox ドメインネームシステム (DNS)、Dynamic Host Configuration Protocol (DHCP)、IP アドレス管理 (Infoblox DDI) により、複雑なハイブリッド環境を一元化し、効率的に制御できます。Infoblox DDIを使用すると、すべてのネットワーク資産を検出して1つの信頼できるIPアドレス管理(IPAM)データベースに記録できます。また、同じアプライアンスを使用してオンプレミスとAmazon Web Services(AWS)クラウドでDNSを管理できます。

このパターンでは、AWS CloudFormation カスタムリソースを使用して Infoblox WAPI API を呼び出して Infoblox オブジェクト (DNS レコードや IP アドレス管理オブジェクトなど) を作成する方法を説明します。Infoblox WAPI の詳細については、Infoblox ドキュメントの「WAPI ドキュメント」を参照してください。

このパターンのアプローチを使用すると、レコードを作成してネットワークをプロビジョニングする手動プロセスを排除できるだけでなく、AWS 環境とオンプレミス環境のDNSレコードとIPAM構成を一元的に把握できます。このパターンのアプローチは、以下のユースケースに使用できます。

  • Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを作成した後で A レコードを追加する 

  • Application Load Balancer の作成後の CNAME レコードの追加

  • 仮想プライベートクラウド (VPC) 作成後のネットワークオブジェクトの追加

  • 次のネットワーク範囲を指定し、その範囲を使用してサブネットを作成する

このパターンを拡張して、さまざまな DNS レコードタイプの追加や Infoblox vDiscovery の設定など、Infoblox デバイスの他の機能を使用することもできます。 

このパターンでは、ハブが AWS クラウドまたはオンプレミスの Infoblox アプライアンスへの接続を必要とし、AWS Lambda を使用して Infoblox API を呼び出すハブアンドスポーク設計を採用しています。スポークは AWS Organizationsの同じまたは別のアカウントにあり、AWS CloudFormation カスタムリソースを使用して Lambda 関数を呼び出します。

前提条件と制限

前提条件

  • AWS クラウド、オンプレミス、またはその両方にインストールされ、IPAM と DNS アクションを管理できる管理者ユーザーで構成された既存の Infoblox アプライアンスまたはグリッド。詳細については、Infoblox ドキュメントの「管理者アカウントについて」を参照してください。 

  • Infoblox アプライアンスにレコードを追加したい既存の DNS 権限ゾーン。詳細については、Infoblox ドキュメントの「権限のあるゾーンの設定」を参照してください。 

  • AWS Organizations 内の 2 つのアクティブな AWS アカウント。1 つのアカウントはハブアカウントで、もう 1 つのアカウントはスポークアカウントです。

  • このハブとスポークアカウントは同じ AWS リージョンに存在する必要があります。 

  • ハブアカウントの VPC は、たとえば AWS Transit Gateway や VPC ピアリングを使用して Infoblox アプライアンスに接続する必要があります。

  • AWS サーバーレスアプリケーションモデル (AWS SAM)」を、ローカルにインストールし、AWS Cloud9 または AWS CloudShell で設定します。

  • Infoblox-Hub.zipおよびClientTest.yamlファイル(添付)は、AWS SAM を含むローカル環境にダウンロードされます。

機能制限

  • AWS CloudFormation カスタムリソースのサービストークンは、作成しているスタックと同じリージョンのものである必要があります。あるリージョンで Amazon Simple Notification Service (Amazon SNS) トピックを作成し、別のリージョンで Lambda 関数を呼び出す代わりに、各リージョンでハブアカウントを使用することをお勧めします。

製品バージョン

  • Infoblox API バージョン 2.7

アーキテクチャ

以下の図表に、このパターンのワークフローを示しています。 

AWS CloudFormation カスタムリソースと Amazon SNS を使用した Infoblox オブジェクトの作成。

この図は、このパターンのソリューションを構成する以下のコンポーネントを示しています。

  1. AWS CloudFormation カスタムリソースを使用すると、テンプレートにカスタムのプロビジョニングロジックを記述し、ユーザーがスタックを作成、更新、削除するたびに AWS CloudFormation がそれを実行します。スタックを作成するときに、AWS CloudFormation によって、EC2 インスタンスで実行しているアプリケーションが監視する SNS トピックに create リクエストを送信できます。

  2. AWS CloudFormation カスタムリソースからの Amazon SNS 通知は、特定の AWS Key Management Service (AWS KMS) キーによって暗号化され、アクセスはOrganizations 内の組織内のアカウントに制限されます。SNS トピックは、Infoblox WAPI API を呼び出すLambda リソースを開始します。

  3. Amazon SNS は、Infoblox WAPI URL、ユーザー名、およびパスワード AWS Secrets Manager Amazon リソースネーム (ARN) を環境変数として使用する次の Lambda 関数を呼び出します。 

    • dnsapi.lambda_handler— AWS CloudFormation カスタムリソースからDNSNameDNSTypeDNSValueの値を受け取り、それらを使用して DNS A レコードと CNAME を作成します。

    • ipaddr.lambda_handler— AWS CloudFormation カスタムリソースからVPCCIDRTypeSubnetPrefixNetwork Nameの値を受け取り、それらを使用してネットワークデータを Infoblox IP アドレス管理データベースに追加したり、新しいサブネットの作成に使用できる次に使用可能なネットワークをカスタムリソースに提供したりします。

    • describeprefixes.lambda_handler"com.amazonaws."+Region+".s3"フィルタを使用してdescribe_managed_prefix_lists AWS API を呼び出し、必要なprefix IDを取得します。

    重要

    これらの Lambda 関数は Python で記述され、互いに似ていますが、異なる APIs。

  4. Infoblox グリッドは、物理、仮想、またはクラウドベースのネットワークアプライアンスとしてデプロイできます。 オンプレミスで導入することも、VMware ESXi、Microsoft Hyper-V、Linux KVM、Xenなどのさまざまなハイパーバイザーを使用して仮想アプライアンスとして導入することもできます。Amazon マシンイメージ (AMI) を使用して Infoblox グリッドを AWS クラウドにデプロイすることもできます。

  5. この図は、AWS クラウドとオンプレミスのリソースに DNS と IPAM を提供する Infoblox グリッドのハイブリッドソリューションを示しています。

テクノロジースタック

  • AWS CloudFormation

  • IAM

  • AWS KMS

  • AWS Lambda

  • AWS SAM

  • AWS Secrets Manager

  • Amazon SNS

  • Amazon VPC 

ツール

  • AWS CloudFormation を使用すると、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングを行い、AWS アカウントとリージョン全体でライフサイクル全体にわたってリソースを管理できます。

  • AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。

  • AWS Key Management Service (AWS KMS) は、データの保護に役立つ暗号キーを作成および管理する上で役立ちます。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

  • AWS Organizations」は、複数の AWS アカウントを 1 つの組織に統合し、作成と一元管理するためのアカウント管理サービスです。

  • AWS Secrets Manager は、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得する上で役立ちます。

  • AWS サーバーレスアプリケーションモデル (AWS SAM)」 は、 AWS クラウドのサーバーレスアプリケーションを構築するために支援するオープンソースフレームワークです。

  • Amazon Simple Notification Service (Amazon SNS)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。

  • Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。

コード

ClientTest.yamlサンプル AWS CloudFormation テンプレート (添付) を使用して Infoblox ハブをテストできます。AWS CloudFormation テンプレートをカスタマイズして、次の表のカスタムリソースを含めることができます。

Infoblox スポークカスタムリソースを使用して A レコードを作成します。

戻り値: 

infobloxref — Infoblox のリファレンス

リソースの例

ARECORDCustomResource: Type: "Custom::InfobloxAPI" Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxDNSFunction DNSName: 'arecordtest.company.com' DNSType: 'ARecord' DNSValue: '10.0.0.1'

Infoblox スポークカスタムリソースを使用して CNAME レコードを作成します。

戻り値: 

infobloxref — Infoblox のリファレンス

リソースの例

CNAMECustomResource: Type: "Custom::InfobloxAPI" Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfoblox DNSFunction DNSName: 'cnametest.company.com' DNSType: 'cname' DNSValue: 'aws.amazon.com'

Infoblox スポークカスタムリソースを使用してネットワークオブジェクトを作成します。

戻り値

infobloxref — Infoblox のリファレンス

network— ネットワーク範囲 (と同じ) VPCCIDR

リソースの例

VPCCustomResource: Type: 'Custom::InfobloxAPI' Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction VPCCIDR: !Ref VpcCIDR Type: VPC NetworkName: My-VPC

Infoblox スポークカスタムリソースを使用して、次に使用可能なサブネットを取得します。

戻り値

infobloxref— Infoblox のリファレンス

network — サブネットのネットワーク範囲

リソースの例

Subnet1CustomResource: Type: 'Custom::InfobloxAPI' DependsOn: VPCCustomResource Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction VPCCIDR: !Ref VpcCIDR Type: Subnet SubnetPrefix: !Ref SubnetPrefix NetworkName: My-Subnet

エピック

タスク説明必要なスキル

Infoblox アプライアンスに接続する VPC を作成します。

ハブアカウントの AWS マネジメントコンソールにサインインし、AWS クイックスタートの「AWS クラウドクイックスタートリファレンスデプロイの Amazon VPC 」の手順に従って VPC を作成します。

重要

VPC には Infoblox アプライアンスへの HTTPS 接続が必要です。この接続にはプライベートサブネットを使用することをお勧めします。

ネットワーク管理者、システム管理者

(オプション) プライベートサブネット用の VPC エンドポイントを作成します。

VPC エンドポイントは、プライベートサブネットのパブリックサービスへの接続を提供します。次のエンドポイントが必要です。

  • Lambda が AWS CloudFormation と通信できるようにする Amazon Simple Storage Service (Amazon S3) のゲートウェイエンドポイント

  • Secrets Manager との接続を有効にするSecrets Manager のインターフェースエンドポイント

  • SNS トピックと Secrets Manager シークレットの暗号化を可能にする AWS KMS のインターフェイスエンドポイント

プライベートサブネット用のエンドポイント作成の詳細については、Amazon VPC ドキュメントの「VPC エンドポイント」を参照してください。

ネットワーク管理者、システム管理者
タスク説明必要なスキル

AWS SAM テンプレートをビルドします。

  1. AWS SAM を含む環境でunzip Infoblox-Hub.zipコマンドを実行します。

  2. cd Hub/コマンドを実行して、ディレクトリをHubディレクトリに変更します。

  3. sam build コマンドは、 AWS SAM テンプレートファイル、アプリケーションコード、および該当する言語固有のファイルと依存関係を処理します。このsam buildコマンドは、ワークフローの続きに期待される形式と場所へのビルドアーティファクトのコピーも実行します。

開発者、システム管理者

AWS SAM テンプレートをデプロイします。

sam deployコマンドは、必要なパラメータを取得してsamconfig.tomlファイルに保存し、AWS CloudFormation テンプレートと Lambda 関数を S3 バケットに保存し、次に AWS CloudFormation テンプレートをハブアカウントにデプロイします。 

次のサンプルコードは、AWS SAM テンプレートをデプロイする方法を示しています。

$ sam deploy --guided Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [Infoblox-Hub]: AWS Region [eu-west-1]: Parameter InfobloxUsername: Parameter InfobloxPassword: Parameter InfobloxIPAddress [xxx.xxx.xx.xxx]: Parameter AWSOrganisationID [o-xxxxxxxxx]: Parameter VPCID [vpc-xxxxxxxxx]: Parameter VPCCIDR [xxx.xxx.xxx.xxx/16]: Parameter VPCSubnetID1 [subnet-xxx]: Parameter VPCSubnetID2 [subnet-xxx]: Parameter VPCSubnetID3 [subnet-xxx]: Parameter VPCSubnetID4 []: #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]: y #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: n Capabilities [['CAPABILITY_NAMED_IAM']]: Save arguments to configuration file [Y/n]: y SAM configuration file [samconfig.toml]: SAM configuration environment [default]:
重要

Infoblox サインイン認証情報は samconfig.toml ファイルに保存されないため、毎回 --guidedオプションを使用する必要があります。

開発者、システム管理者

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip