0

Je suis en train de créer une politique gérée par AWS CLI:erreur MalformedPolicyDocument tout en créant une politique IAM

POLICY=' 
{ 
    "Version":"2012-10-17", 
    "Statement": 
    [{ 
    "Effect":"Allow", 
    "Action": 
    [ 
     "cloudformation:*" 
    ], 
    "Resource":"*" 
    }, 
    { 
    "Effect":"Deny", 
    "Action": 
    [ 
     "cloudformation:UpdateStack", 
     "cloudformation:DeleteStack" 
    ], 
    "Resource": "'${arn}'" 
    }] 
}' 

# Create policy if not already created 
[ $(aws iam list-policies | grep -ce CloudFormation-policy-${StackName}) -eq 0 ] && (aws iam create-policy --policy-name CloudFormation-policy-${StackName} --policy-document "'${POLICY}'") 

Quand je lance le script je reçois cette erreur:

An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy. 

Je ne peux pas comprendre où est l'erreur. Une idée?

+0

Essayez-vous d'exécuter cela à partir de CLI? L'avez-vous validé dans AWS Console? Ma conjecture est que ce problème est dû à la citation simple vs guillemets. – kosa

+0

Oui c'est de CLI. Quand je fais 'echo" '$ {POLICY}' "' Je reçois le json dans des guillemets simples – Somar

+0

Sur quel OS votre CLI fonctionne? Windows ou Linux ou Mac? – kosa

Répondre

1

Chaque système d'exploitation a sa propre façon de traiter guillemet simple vs guillemet s'échapper et que par AWS CLI documentation:

When passing in large blocks of data, you might find it easier to save the JSON to a file and reference it from the command line. JSON data in a file is easier to read, edit, and share with others.

approche Quoting Strings pourrait ne pas être le meilleur choix en passant des données JSON, au lieu d'utiliser Loading parameters from file approach.