【发布时间】:2018-10-18 03:22:32
【问题描述】:
我的团队在 AWS 中工作,我们有一些 python 脚本可以将文件从 S3 存储桶移动到 EC2 实例。我想用我们正在使用的脚本作为开头,当直接从 ec2 实例运行时,并且仅在作为 EMR 步骤运行时才发出。 (尝试自动化)这里是一些手动运行但不是在步骤定义中的代码的 sn-ps。
1:创建记录器
import os, sys, boto3
import logging, datetime
import Configuration as cfg
# setup logger for this module
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter(cfg.logFormatterStr)
logFileName = os.path.splitext(os.path.basename(__file__))[0] + '_' + \
datetime.datetime.now().strftime('%Y%m%d_%H%M%S.log')
file_handler = logging.FileHandler(logFileName)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
2:我们下载对象。
for pre in prefixes:
for obj in SB.objects.filter(Prefix=pre):
if '.' in obj.key:
temp = obj.key.split('/')
objList.append((obj.key,temp[-1]))
for item in objList:
SB.download_file(item[0],os.getenv("HOME") + '/' + item[1])
logger.info('Downloaded - %s' % item[0])
objList[:] = []
3:然后我们尝试使用 os.system 来执行 chmod 命令以及 mkdir 和 mv
os.system('chmod 775 *.py')
# Move HQL files to a subfolder
os.system('mkdir -p hive')
os.system('mv -f *.hql hive')
第 2 步有效。文件被下载到 ec2 实例。 由于某种原因,永远不会写入或创建日志文件。我们得到所有 os.system 命令的错误。
chmod: cannot access ‘*.py’: No such file or directory
mv: cannot stat ‘*.hql’: No such file or directory
(我们很确定 *.hql 和 *.py 周围的不寻常字符是亚马逊记录报价的一些问题。
【问题讨论】:
-
既然可以使用
os.chmod和shutil.move,为什么还要使用os.system?
标签: python amazon-web-services amazon-emr