2017-07-20 1 views
0

J'ai un script python qui est appelé par un PHP. L'utilisateur qui appelle ce script php est apache et, par conséquent, le fichier python est également appelé par apache. Ainsi, il donne "Impossible de localiser les informations d'identification". J'ai défini les informations d'identification par défaut via awscli et lorsque j'appelle le script python en tant que root, cela fonctionne.Passer des informations d'identification AWS dans un script Python

C'est ma ligne de code:

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

Mais, cela donne erreur "Syntaxe non valide". Donc, j'ai essayé ceci:

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') 

Donne la même erreur que ci-dessus. Chose étrange est que cette même chose est mentioned in the documentation. Même si ce n'est pas recommandé, cela devrait fonctionner.

Quelqu'un peut-il m'aider à résoudre ce problème?

+0

Pourriez-vous montrer la trace réelle que vous obtenez? Le premier appel que vous montrez pour créer le client m'a l'air ok. – garnaat

Répondre

0

Avez-vous déjà résolu ce problème? Voici comment je me connecte à boto3 dans mes scripts Python:

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()