Fn::ForEach Cloud formation template | SAM Validation Bug

1

Hello Everyone, I am trying to create resources using Fn::ForEach in Cloud formation template using YAML format. I am referring aws documentation example. with the same template I am getting AttributeError: 'list' object has no attribute 'get' error. Have tried multiple combinations of this and nothing worked.

profile picture
AGS
asked 9 months ago1166 views
4 Answers
1
Accepted Answer

Looks like SAM CLI doesn't support language extensions with sam validate. There is an open issue for the same AWS CLI ISSUE.

profile picture
AGS
answered 9 months ago
0

Hello.
There are several templates listed in the document, which one did you use?

profile picture
EXPERT
answered 9 months ago
  • Actually Tried almost everything, we can take this up:

    AWSTemplateFormatVersion: 2010-09-09
    Transform: 'AWS::LanguageExtensions'
    Resources:
      'Fn::ForEach::Tables':
        - TableName
        - [Points, Score, Name, Leaderboard]
        - 'DynamoDB${TableName}':
            Type: 'AWS::DynamoDB::Table'
            Properties:
              TableName: !Ref TableName
              AttributeDefinitions:
                - AttributeName: id
                  AttributeType: S
              KeySchema:
                - AttributeName: id
                  KeyType: HASH
              ProvisionedThroughput:
                ReadCapacityUnits: '5'
                WriteCapacityUnits: '5'
    
  • Thanks for the reply. I was able to deploy successfully on my AWS account. Deployment was done from the management console. Check to see if indentation, etc. is not broken and deploy again.

  • Thanks for the reply, Have tried from aws console, its is working. I would be requiring this to done from SAM since I wouldn't be able to access management console in all the ENVs. If I try doing SAM deployment from pipeline or SAM CLI, getting AttributeError: 'list' object has no attribute 'get' for the same template.

  • With AWS SAM I got the same error. So please use CloudFormation instead of AWS SAM. CloudFormation can also be deployed via AWS CLI. The following commands will enable deployment.

    aws cloudformation create-stack --stack-name test --template-body file://template.yml --capabilities CAPABILITY_AUTO_EXPAND
    
  • Hi Yes this was working as expected, thank you

0

Hi. Just tried with this one above and it works. Try to create yaml from scratch, copy this template and upload it via console to CloudFormation. If there is an error, please show a screen from a console.

profile picture
answered 9 months ago
  • Thanks for the reply, Have tried from aws console, its is working. I would be requiring this to done from SAM since I wouldn't be able to access management console in all the ENVs. If I try doing SAM deployment from pipeline or SAM CLI, getting AttributeError: 'list' object has no attribute 'get' for the same template.

0

I can confirm that this is an issue when using SAM. When running SAM validate I get the following error: Error: 'list' object has no attribute 'get'.

Ace
answered 9 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions