0
0

そのエラー、予約語ですよ。

Posted at

こんにちは。
開発するにあたってエラーが出て悩む瞬間が多々あるとは思います。
私は今回そのエラー内容で無駄に悩んでしまったため、備忘録としてブログに残しておきます。

■やろうとしたこと

CloudFormation でSSMパラメータを定義する

■エラーとなったymlファイル

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  TestHogeHoge:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Description: "TestHogeHoge"
      Value: "sasaki-test"
      Name: "aws"

Outputs:
  TestHogeHoge:
    Value: !Ref TestHogeHoge

■エラー文言

Parameter name: can't be prefixed with "aws" or "ssm" (case-insensitive). (Service: AmazonSSM; Status Code: 400; Error Code: ValidationException; Request ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; Proxy: null)

エラー内容をググっても納得のいく解答が見つからなかったため
今回ブログを書こうと思った次第です。

冷静に考えればエラー内容をじっくり見ていればなんとなくエラー原因がわかりそうな気もしますが、、、
開発時はそんな冷静にいられないというのも”あるある”で、解決まで時間がかかってしまいました。

■エラー内容

タイトルでネタバレしていますが今回は予約語でエラーになっていました。

そもそも予約語とは、、、??

開発者が付ける識別名として利用できない文字列のこと。予約語に挙げられた単語やフレーズは変数名や関数名などに使用することはできない。


ということで、今回はSSMパラメータの名前”aws”っていう名前はつけられないよー!
と怒られていました。
Name: “aws” の名前を変更して無事エラー回避することができました。

ちなみに私は勉強不足で全く知らなかったのですが、
SSMパラメータ以外にもDynamoDBでの属性名にDAYや/DATA が同様の理由で使用できなかったり、
他サービスにも予約語という概念は勿論存在しますので注意が必要です。

内部的に使用できない名前はその他にもあるので、
上記のようなエラー内容が出た場合は焦らず、予約語でエラーになったんだな。。。と思い出してください。
今回は以上です。

0
0
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
0
0