在 Python 脚本中传递 AWS 凭证

Passing AWS Credentials in Python Script

我有一个 python 脚本被 PHP 调用。调用此 php 脚本的用户是 apache,因此 python 文件也被 apache 调用。所以,它给出 "Unable to locate credentials "。我已经通过 awscli 设置了默认凭据,当我以 root 身份调用 python 脚本时,它起作用了。

这是我的代码行:

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

但是,这会产生 "Invalid Syntax" 错误。所以,我尝试了这个:

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

给出与上面相同的错误。奇怪的是,同样的东西是mentioned in the documentation。虽然不推荐,但应该可以。

有人可以帮我解决这个问题吗?

你有没有解决这个问题?以下是我在 Python 脚本中连接到 boto3 的方式:

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