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
posta un anno fa1553 visualizzazioni
4 Risposte
2
Risposta accettata

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
con risposta un anno fa
profile picture
ESPERTO
verificato 3 mesi fa
0

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

profile picture
ESPERTO
con risposta un anno fa
  • 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
con risposta un anno fa
  • 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
con risposta un anno fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande