Search code examples
pythonamazon-web-servicesboto3amazon-ses

Passing AWS Credentials in Python Script


I have a python script that gets called by a PHP. The user that invokes this php script is apache and hence, the python file also gets invoked by apache. So, it gives "Unable to locate credentials ". I've set the default credentials via awscli and when I invoke the python script as root, it works.

This is my line of code :

client = boto3.client('ses', region_name=awsregion, aws_access_key_id='AJHHJHJHJ', aws_secret_access_key='asdasd/asdasd/asd')

But, this gives "Invalid Syntax" Error. So, I tried this :

client = boto3.Session(aws_access_key_id='ASDASD', aws_secret_access_key='asd/asdasd/asdasd')
client = boto3.client('ses', region_name=awsregion, aws_access_key_id='ASDASD', aws_secret_access_key='asd/asdasd/asdasd')

Gives the same error as above. Weird thing is that this same thing is mentioned in the documentation. Even though it's not recommended, it should work.

Can somebody help me in fixing this?


Solution

  • Did you ever get this resolved? Here is how I connect to boto3 in my Python scripts:

    import boto3
    from botocore.exceptions import ClientError
    import re
    from io import BytesIO
    import gzip
    import datetime
    import dateutil.parser as dparser
    from datetime import datetime
    import tarfile
    import requests
    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.job import Job
    
    ## Needed glue stuff
    sc = SparkContext()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)
    
    ## 
    ## currently this will run for everything that is in the staging directory     of omniture
    
    # set needed parms
    myProfileName = 'MyDataLake'
    dhiBucket = 'data-lake'
    #create boto3 session
    try:    
        session = boto3.Session(aws_access_key_id='aaaaaaaaaaaa',     aws_secret_access_key='abcdefghijklmnopqrstuvwxyz', region_name='us-east-1')aws_session_token=None, region_name=None, botocore_session=None
        s3 = session.resource('s3') #establish connection to s3
    except Exception as conne:
        print ("Unable to connect:  " + str(conne))
        errtxt = requests.post("https://errorcapturesite", data={'message':'Unable to connect to : ' + myProfileName, 'notify':True,'color':'red'})
        print(errtxt.text) 
        exit()