■ はじめに
https://dk521123.hatenablog.com/entry/2022/05/25/220037
などで、CloudFormation を使った際に 発生したトラブルについて、メモしておく
目次
【1】エラー「Service: Amazon S3; Status Code: 400・・・」発生 【2】エラー「Stack name must contain only letters, numbers, dashes」が表示 【3】エラー「Template format error: Output Xxx is malformed.」が表示
【1】エラー「Service: Amazon S3; Status Code: 400・・・」発生
CloudFormation で、NotificationConfiguration を指定したS3バケットを 作ろうとした際に、以下「エラー内容」が表示されてしまう
テンプレートファイル (YAML形式)
NotificationConfiguration: TopicConfigurations: - Topic: 'arn:aws:sns:us-east-1:123456789012:TestTopic' Event: 's3:ObjectCreated:*'
エラー内容
Unable to validate the following destination configuration (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: XXXX; S3 Extended Request ID: xxxxx; Proxy: null)
原因
* SNS の Topic の アクセスポリシーで制限を掛けていたため。
Topic の アクセスポリシー
{ "Sid": "S3Event", "Effect": "Allow", "Principal": { "Service": "s3.amazon.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-west-1:123456789012:TestTopic", "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:s3::::xxxxxxxx", <= ここで制限を掛けていた "arn:aws:s3::::yyyyyyy", ] } } }
対応案
* SNS の Topic の アクセスポリシーのaws:SourceArnに 該当するS3のArnを追加する (例えば「arn:aws:s3:::zzzzzzzzz」を作ろうとしてたら、これを追加)
【3】エラー「Stack name must contain only letters, numbers, dashes」が表示
CloudFormation のスタック作成時に スタック名「xxx_xxxx」を指定したら、以下「エラー内容」が表示。
エラー内容
Stack name must contain only letters, numbers, dashes. Must start with a letter.
原因
エラー内容のままで スタック名は、半角文字(A-Z, a-z)、半角数字(0-9) と ハイフン(-)のみ 始めは、半角文字。 => 「_」は、禁止文字。 * 詳細は、以下の公式ドキュメントを参照。
対応案
* 「_」の代わりに「-」を使用 (「xxx-xxxx」とする)
【4】エラー「Template format error: Output Xxx is malformed.」が表示
CloudFormation で KMS 作成しようとした際に、 スタック作成したら、以下「エラー内容」が表示。
テンプレートファイル (YAML形式)
Parameters: Param: Description: Input param Type: String Outputs: Xxx: Value: !GetAtt Xxx.Arn Description: KMS key output Export: # ${Param}には「xxx_xxxx」が入力 Name: !Sub xxx-${Param}-xxx
エラー内容
Template format error: Output Xxx is malformed. The Name field of every Export member must be specified and consist only of alphanumeric characters, colons, or hyphens.
原因
エラー内容のままで スタック名は、半角英数字(A-Z, a-z, 0-9) と コロン(:)、ハイフン(-)のみ => 「_」は、禁止文字。 * 詳細は、以下の公式ドキュメントを参照。
対応案
* 「_」の代わりに「-」を使用 (「xxx-xxxx」とする)
関連記事
CloudFormation ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/26/224812
CloudFormation ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/12/01/170326