Hi Team ,
While trying the following code for policy attachment to new user
resource “aws_iam_user” “admin_user” {
name = “Arjun”
tags = {
Description = “Technical Team Leader”
}
}
resource “aws_iam_policy” “adminuser” {
name   = “AdminUser”
policy =  <<EOF
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “",
“Resource”: "”
}
]
}
EOF
}
resource “aws_iam_policy_attachment” “arjun-admin-access” {
user       = aws_iam_user.admin_user.name
policy_arn = aws_iam_policy.adminuser.arn
}
It says that Policy contains an invalid json policy : leading space characters are not allowed
Can you please help it seems to be with policy =  <<EOF  tried similar to Chapter video
Thanks in advance
         
        
          
        
           
           
           
         
         
            
            
          
       
      
        
        
          There’s an empty line between policy = <<EOF and the { bracket; if you remove it, Terraform will complain about some errors that should be easy to fix.
A suggestion: when you copy a piece of code, use the button </>; this will keep the formatting and make it easier to read.
Example:
resource "aws_iam_policy" "adminuser" {
  name   = "AdminUser"
  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
    "Effect": "Allow",
    "Action": "",
    "Resource": ""
    }
  ]
}
EOF
}
         
        
        
           
           
           1 Like
         
         
            
            
          
       
      
        
        
          Thanks a ton …sure will try and pick your suggestion as well @Matteo-Marchelli
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          You’re welcome!
Let me know if you have trouble with the other errors.
One other thing: I moved from the heredoc syntax (<<EOF) where possible, using jsonencode.
The resource above would be:
resource "aws_iam_policy" "adminuser" {
  name = "AdminUser"
  policy = jsonencode({
    "Version" : "2012-10-17",
    "Statement" : [
      {
        "Effect" : "Allow",
        "Action" : "",
        "Resource" : ""
      }
    ]
  })
}
This is because with terraform fmt, I can format the code automatically and/or see if there’s an error like a missing comma.
I hope it’s useful