Help us understand the problem. What is going on with this article?

CloudFront+HTTPSなリソースを含むCloudFormationスタックをUpdateする際の要注意!

More than 3 years have passed since last update.

CloudFrontの設定をちょいとだけ弄るCloudFormationテンプレートの修正をしてUpdateStackをしたら UPDATE_ROLLBACK_FAILED になってしまって超焦った話。

既にサポートには勘弁してよーっていう新規ケースを投げてあるけど、他の人が同様の問題にぶち当たって途方に暮れないようにメモを共有。ていうか同じ内容をQiita用に書くのだるいのでサポートに投げた文面コピペ。

サポートに投げた内容

CloudFormationの既存スタックをUpdateStackしたらUPDATE_ROLLBACK_FAILEDな状態になってしまいました。
CloudFormationのEventsのログを見ても CloudFront encountered an internal error. Please try again. と出ているのみで最初原因が分かりませんでした。自分のせいなのかAWS側の障害なのかも不明…。

とりあえず同テンプレートをupdateではなくcreateで別スタック名で実行してみたところ The parameter ViewerCertificate The specified distribution is configured for SNI and the minimum SSL protocol version is specified as SSLv3. You cannot specify both. というエラーメッセージが表示されて失敗していたことがわかりました。このテンプレートは元々正常にCreateStack出来ていたママです。

CloudFrontリソースのViewerCertificate設定に不備があったのかと思い、確認したのですがテンプレートの当該項目は以下の様な内容であり、ドキュメントを見る限りでは特に不備は見つかりませんでした。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html

"ViewerCertificate": {
  "IamCertificateId": "XXXXXXXXXXXXXXX",
  "SslSupportMethod": "sni-only"
}

エラーメッセージからするとSSLv3が云々と出ているのでHTTPSのプロトコルバージョンに関する設定かと思いましたが上記URLのドキュメントにはそれらしい項目はありません。

ですがエラーでスタックが作れないままだと困る為、エラーメッセージに出てくるキーワードで色々検索した所、最新のAWS SDKの方には MinimumProtocolVersion というEnumが存在することを発見しました。
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloudfront/model/MinimumProtocolVersion.html
CloudFormationのテンプレートドキュメントには載っていませんが、試しに以下のように設定を追加してみた所、無事スタックを作成/更新することが出来ました。

"ViewerCertificate": {
  "IamCertificateId": "XXXXXXXXXXXXXXX",
  "SslSupportMethod": "sni-only",
  "MinimumProtocolVersion": "TLSv1"
}

大体こんな感じ。あとはアンドキュメントな設定になっちゃってて気持ち悪いのでWeb上のドキュメントの更新お願いしますとか幾つかお願い書いといたくらい。

CloudFormation便利なんだけどもうちょっと頑張って欲しい

  • 特に運用するとき怖いのが UPDATE_ROLLBACK_FAILED。これ一旦なったらどうすればいいのか分からん。サポートに問い合わせれば回復してもらえるんだろうか?
    • これの回復はサポートに連絡すれば可能な限り対応してもらえるそうです。
  • AWSの各種プロダクツは頻繁に新機能とか更新早いのは良いんだが、CloudFormationから利用できるようになるのに時間かかりすぎ。新種のリソースやら設定項目やらをいつまでもコード管理できないのは不便。現状痒いところにはCustomResourceで自前実装したりスクリプト組み合わせる逃げ道もあるけどCloudFormationだけでバシッとやりたいのが本音よね。

とりあえず不具合報告くらいなら気づいた時に頑張るので、AWSの中の人も頑張ってください。

追記 2015-04-17:公式リリースキタ

https://aws.amazon.com/about-aws/whats-new/2015/04/aws-cloudformation-updates-support-for-auto-scaling-opsworks-route-53-and-cloudfront/

今日付けでドキュメントにも載ったし、デフォルト値の問題も対応されたようだ(デフォルトでSSLv3)

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away