我可以在CloudFormation中创建一个lambda函数,该函数运行aws cli命令来更新已注册域的名称服务器吗?

问题描述

我在Route53中注册一个域example.com,现在我创建了一个CloudFormation堆栈,该堆栈创建了一个名为example53的托管区域,一个A记录example.com将流量路由到我的ALB和应验证example.com的ACM资源域。

问题是,如果名称服务器错误,它将永远不会验证域,并且在ACM资源之前,我需要使用NS记录在托管区域中拥有的名称服务器来更新在Route53中注册的域的名称服务器。

没有CloudFormation域资源操纵,但是有一个AWS CLI命令可以更改域的名称服务器,是否可以通过CloudFormation中创建的Lambda资源运行该AWS CLI命令?

我使用Makefile运行堆栈,Makefile可以运行AWS CLI命令并实现诸如首次创建HostedZone时的条件。

解决方法

您可以在CloudFormation上创建custom resource。资源将采用 lambda函数的形式。该功能将使用AWS开发工具包,例如boto3对所需的R53资源执行操作。

由于该功能是由您自己开发的,而不是由AWS提供的,因此自定义资源可以执行您想要执行的任何操作。它不受常规CloudFormation缺点的限制。