Diary of a Perpetual Student

Perpetual Student: A person who remains at university far beyond the normal period

AWSのARNに日本語文字や絵文字が入ることがあるのを知っていましたか?

AWSにおいてリソースの識別子として使われるAmazonリソースネーム(ARN)というものがあります。私は、ARNには英数字と一部記号しか使えないものとばかり思っていました。

それでは以下の画像をご覧ください:

なんと、ARNに日本語どころか絵文字まで入っているではありませんか!

これはAWS Step Functionsのステートマシンです。ステートマシン名に利用できる文字種はドキュメントに以下の通り記載されており、日本語文字などの非ASCII文字を使えるのはバグではなく、意図して許可されているようです:

Names of state machines, executions, and activity tasks must not exceed 80 characters in length. These names must be unique for your account and AWS Region, and must not contain any of the following:

Whitespace

Wildcard characters (? *)

Bracket characters (< > { } [ ])

Special characters (" # % \ ^ | ~ ` $ & , ; : /)

Control characters (\u0000 - \u001f or \u007f - \u009f).

Step Functions accepts names for state machines, executions, activities, and labels that contain non-ASCII characters. Because such characters will not work with Amazon CloudWatch, we recommend using only ASCII characters so you can track metrics in CloudWatch.

https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-lambda-state-machine.html#create-state-machine-step

Step FunctionsのARNはステートマシン名を元に組み立てられるので、ステートマシン名に日本語文字を入れるとARNにも同様に日本語文字が入ることになります。

また、非ASCII文字を使う弊害として、このステートマシンについてCloudWatchによる監視ができなくなる旨が書かれています。コンソールでモニタリングタブを開いても、以下のようにエラーが表示されグラフが閲覧できません:

CloudWatchのSDKやAPIを利用してメトリックを取得しようとしても、以下のエラーで取得できません:

AWS/States ExecutionsAborted InvalidParameterValue: The value for parameter Dimensions.member.1.Value contains non-ASCII characters.

まとめ

  • ARNには非ASCII文字が入ることも許容される
  • その例として、AWS Step Functionsのステートマシンがある
  • しかし、CloudWatchによるモニタリングができなくなってしまうので推奨されない