CloudFromationのyaml作成時に出た構文エラーについてまとめてみました。
構文エラー1
エラー例1
Property vaildation failure: [Value of property {該当箇所} does not match type {Array}, THe property {/Tags/0/Value} is required, The property {/Tags/1/Key} is required}
対処方法:下記のようにSecurityGroupIds部分を修正することで解決しました。
コード修正前
RedshiftServerlessWorkGroup:
Type: AWS::RedshiftServerless::Workgroup
Properties:
SecurityGroupIds: !Ref RedshiftServerlessSecurityGroup
コード修正後
RedshiftServerlessWorkGroup:
Type: AWS::RedshiftServerless::Workgroup
Properties:
SecurityGroupIds:
- !Ref RedshiftServerlessSecurityGroup
構文エラー2
エラー例2
Resource <リソース名> must be in ARN format or "*". (Service: AmazonIdentityManagement; Status Code: 400; Error Code: MalformedPolicyDocument; Request ID: XXX; Proxy: null)
対処方法:下記のようにResource部分を修正することで解決しました。
コード修正前
RedshiftServerlessPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
Statement:
-Effect: Allow
Action:
- 省略
Resource: !Ref RedshiftServerlessBucket
コード修正後
RedshiftServerlessPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
Statement:
-Effect: Allow
Action:
- 省略
Resource: !GetAtt RedshiftServerlessBucket.Arn
構文エラー3
エラー例3
Properties validation failed for resource <論理名> with message: #/IamRoles: expected type: JSONArray, found: String
対処方法:下記のようにIamRoles部分を修正することで解決しました。
コード修正前
RedshiftServerlessNamespace:
Type: AWS::RedshiftServerless::Namespace
Properties:
IamRoles: !GetAtt RedshiftServerlessRole.Arn
コード修正後
RedshiftServerlessNamespace:
Type: AWS::RedshiftServerless::Namespace
Properties:
IamRoles:
- !GetAtt RedshiftServerlessRole.Arn
最後に
上記のような構文エラーが出た際は、公式ドキュメントを参照したり、エラー文を検索することで解決できることが多いかと思います。
どなたかのお役に立てれば幸いです。