【2018年8月9日時点の話】ACMのCloudFormationテンプレートはDNS検証を選択できない話

この記事は2018年8月9日時点の情報になります。
最新の情報をご確認下さい。

本エントリーは下記バージョンで動作確認しています。

AWS CLI 2.121.1 aws-cli/1.15.71 Python/2.7.10 Darwin/17.6.0 botocore/1.10.70

ACMのCloudFormationテンプレートでDNS検証を選択できないんですね!
いやー、初めて知りました!今後のアップデートに期待ですね!

例えば、下記のテンプレート例:

# ※よくない記述例です。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  Certificate:
    Type: AWS::CertificateManager::Certificate
    DeletionPolicy: Retain
    Properties:
      DomainName: abc.net
      DomainValidationOptions:
        - DomainName: abc.net
          ValidationDomain: DNS

上記のように記述すると、"ValidationDomain"の項目で構文エラーが起きてロールバックされます。

試しに、ValidationMethodと追記した例:

# ※動かないです。
Resources:
  Certificate:
    Type: AWS::CertificateManager::Certificate
    DeletionPolicy: Retain
    Properties:
      DomainName: abc.net
      DomainValidationOptions:
        - DomainName: abc.net
          ValidationMethod: 'DNS'

上記のように記述した場合、
"Encountered unsupported property ValidationMethod"というメッセージを残しロールバックされました!

いろいろ調べたところ、2018年8月9日時点でもサポートされていないようで。

https://forums.aws.amazon.com/thread.jspa?messageID=821952

CloudFormationで全てのリソースを管理できそうにない話

CloudFormationによるインフラストラクチャーのテンプレート化はとても気に入ってるので、
基本的にHandson環境や仕事のProduction環境はテンプレートを作成しているのですが、
テンプレートでリソースを管理できないとなると、ちょっとつらたんですね。
確か、EC2で使用するキーペアもCfnテンプレートがなかったような。

と言っても、頻繁に更新するかはリソースによりけりなんですけどね。

AWS CLIも活用する

このような場合は、AWS CLIを活用してコード化してもよさそうです。
記述例:

aws acm request-certificate --domain-name <ドメイン名> \
--validation-method DNS --region us-east-1 --profile <プロファイル名>

以上、小ネタでした!