下面的Docker文件中是代码,当使用AWS Cloud Formation&Pipeline执行我的Python代码时,它将创建一个.txt file (abc.txt) under /proj
。
FROM python:3
WORKDIR /proj
当Python作业执行完成时,Docker会话终止。因此,在完成Python作业之前,我想将abc.txt(来自Docker)文件复制到AWS S3存储桶。这可能吗?我该怎么做到。
已经尝试过
RUN aws s3 COPY /proj/ s3://filepath_on_s3
我的Docker文件的前2行:
FROM python:3
WORKDIR /proj
解决方案:现在,使用下面的代码行,我可以将文件(在docer vm中)传输到S3存储桶。之后需要在docker上设置awscli,然后在上载的PY代码中使用boto3来使用upload_file命令。
####Docker file
RUN apt-get update && apt-get install -y awscli
ENV AWS_ACCESS_KEY_ID=ABBXXXXXXXXXXXXXXX
ENV AWS_SECRET_ACCESS_KEY=XARXXXXXXXXXXXXXXx
ENV AWS_DEFAULT_REGION=us-west-2
###Python code
s3 = boto3.resource('s3')
s3.Bucket('Mybucket').upload_file('/proj/'+logfile, 'Logs/'+logfile)