LoginSignup
6
1

More than 3 years have passed since last update.

cloud-initに日本語が含まれるとインスタンスが正常に起動しない

Last updated at Posted at 2019-11-13

概要

AWSが提供するECSのAMIバージョンami-06c98c6fe6f20c437 (2.0.20191031 x86_64 ECS HVM GP2)、ami-0064e711cbc7a825e (2.0.20191024.3 x86_64 HVM gp2) において、cloud-initスクリプト内に日本語が含まれるとインスタンスが正常に起動しない不具合が見つかってます。
再現の検証は行ってませんが、最新のAmazon Linux 2 AMIイメージでも同様の現象が発生するとAWSより回答が得られました。

現象

AWSのリソースはTerraformで管理しており、スケールアウト時は常に最新のイメージを取得する仕組みを作ってました。


data "aws_ami" "this" {
  most_recent = true

  filter {
    name   = "architecture"
    values = ["x86_64"]
  }

  filter {
    name   = "name"
    values = ["amzn2-ami-ecs-hvm-*"]
  }

  owners = ["amazon"]
}

先日スケールアウトを実施したところ、AMIがami-06c98c6fe6f20c437 (2.0.20191031 x86_64 ECS HVM GP2) に更新されていたのですが、このバージョンを利用するとコンテナインスタンスにSSHで接続できない、ECSクラスタに正しくマッピングされず、defaultクラスタが作成されるといった障害が起きました。

原因を調べたところ、userdata経由でcloud-initを実行していたのですが、スクリプト内に日本語が含まれると正しくインスタンスが起動しない問題と判明。
システムログでも対象AMIでエンコーディングに関するエラーが出ていました。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 429-431: ordinal not in range(128)

問題のcloud-init。

cloud-init.cfg
#cloud-config
repo_update: true
...
# 日本語のコメントがあるとインスタンスが正常に起動しない

ちなみにシステムログはマネージメントコンソールだとEC2のInstance Settingsから確認することができます。

Screen Shot 2019-11-13 at 13.49.56.png

サポートに問い合わせたところ、Amazon ECS-optimized AMIAmazon Linux 2 AMIのいずれも同様の現象が再現され、cloud-initの挙動に関する不具合と回答を得られました。
AMIが改修されるまでの間は、一時的な回避策として日本語のコメントを外すか、不具合の起きないami-057631c6a4834e06d(2.0.20191014 x86_64 ECS HVM GP2)を利用するのが良さそうです。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1