title: "Invalid credentials" error when accessing Redshift from Python
body: <p>I am trying to write a Python script to access Amazon Redshift to create a table in Redshift and copy data from S3 to the Redshift table.</p>
  
  <p>My code is:</p>
  
  <pre><code>import psycopg2
  import os
  #import pandas as pd
  import requests
  requests.packages.urllib3.disable_warnings()
  
  redshift_endpoint = os.getenv("END-point")
  redshift_user = os.getenv("user")
  redshift_pass = os.getenv("PASSWORD")
  port = 5439
  dbname = 'DBNAME'
  conn = psycopg2.connect(
      host="", 
      user='', 
      port=5439, 
      password='', 
      dbname='')
  cur = conn.cursor()
  aws_key = os.getenv("access_key") # needed to access S3 Sample Data
  aws_secret = os.getenv("secret_key")
  #aws_iam_role= os.getenv('iam_role') #tried using this too
  
  base_copy_string= """copy %s from 's3://mypath/%s'.csv 
  credentials 'aws_access_key_id= %s aws_access_secrect_key= %s'
  delimiter '%s';""" # the base COPY string that we'll be using
  
  #easily generate each table that we'll need to COPY data from
  tables = ["employee"]
  data_files = ["test"]
  delimiters = [","]
  #the generated COPY statements we'll be using to load data;
  copy_statements = []
  for tab, f, delim in zip(tables, data_files, delimiters):
      copy_statements.append(base_copy_string % (tab, f, aws_key, aws_secret, delim)%)
  #create Table
  cur.execute(""" create table employee(empname varchar(30),empno integer,phoneno integer,email varchar(30))""")
  for copy_statement in copy_statements: # execute each COPY statement
      cur.execute(copy_statement)
  conn.commit()
  for table in tables + ["employee"]:
      cur.execute("select count(*) from %s;" % (table,))    
      print(cur.fetchone())
  conn.commit() # make sure data went through and commit our statements permanently.
  </code></pre>
  
  <p>When I run this command I getting an Error at cur.execute(copy_statement)</p>
  
  <pre><code>**Error:**   error:  Invalid credentials. Must be of the format: credentials 'aws_iam_role=...' or 'aws_access_key_id=...;aws_secre
  t_access_key=...[;token=...]'
    code:      8001
    context:
    query:     582
    location:  aws_credentials_parser.cpp:114
    process:   padbmaster [pid=18692]
  </code></pre>
  
  <p>Is there a problem in my code? Or is it is an AWS access_key problem?</p>
  
  <p>I even tried using an <strong>iam_role</strong> but I get an error:</p>
  
  <blockquote>
    <p>IAM role cannot assume role even in Redshift</p>
  </blockquote>
  
  <p>I have a managed IAM role permission by attaching <strong>S3FullAccess</strong> policy.</p>