CloudformationでIAM Roleを作成する際のDescriptionにはpattern制約がある
CloudFormationでIAMRoleを作成しようとした際、何も考えずDescriptionに任意のStringを定義しようとした際に、スタック生成時にエラーになってしまいました。
Descriptionには、定められたPatternが存在していたので、例とPatternについて説明します。
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample cloudformation template
Resources:
SampleIamRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: "Allow"
Action: "sts:AssumeRole"
Principal:
Service:
- "cloudformation.amazonaws.com"
Description: this is the description
ManagedPolicyArns:
- 'arn:aws:iam::aws:policy/AmazonS3FullAccess'
RoleName: SampleIamRoleName
正常にIAM Roleが作成されると、下記画像のようにDescriptionが表示されます。
では、Descriptionを修正して、エラーを再現します。
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample cloudformation template
Resources:
SampleIamRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: "Allow"
Action: "sts:AssumeRole"
Principal:
Service:
- "cloudformation.amazonaws.com"
Description: this is the あいあむろーる
ManagedPolicyArns:
- 'arn:aws:iam::aws:policy/AmazonS3FullAccess'
RoleName: SampleIamRoleName
差分はDescriptionの箇所です
- Description: this is the description
+ Description: this is the あいあむろーる
このiam-role-description-failed.yml
をテンプレートファイルに指定し、スタックを更新してみます。
下記画像のようにスタック更新時にエラーになってしまいました。
Value 'this is the ???????' at 'description' failed to satisfy constraint: Member must satisfy regular expression pattern: [\u0009\u000A\u000D\u0020-\u007E\u00A1-\u00FF]*
this is the ???????
は
Description: this is the あいあむろーる
のあいあむろーるの部分を指しているように見えます。
ドキュメントにDescriptionについての言及がされていました。
Description
A description of the role that you provide.
Required: No
Type: String
Maximum: 1000
Pattern: [\p{L}\p{M}\p{Z}\p{S}\p{N}\p{P}]*
Update requires: No interruption
Patternの箇所に注目します。
[\p{L}\p{M}\p{Z}\p{S}\p{N}\p{P}]*
を参考にすると
Symbol | meaning |
---|---|
L | アルファベット (Letter) |
M | 記号 (Mark) |
Z | 区切り文字 (Separator) |
S | 記号 (Symbol) |
N | 数字 (Number) |
P | 句読記号 (Punctuation) |
上記の対応表のようになり、このPatternに適用されるものしかDescriptionには設定できないとのことです。
iam-role-description-failed.yml
に定義したあいあむろーるの部分はこのPatternに違反するため、エラーになってしまうのでした。
Discussion