如何将文件从在 Fargate 上运行的 Docker 容器上传到 S3 存储桶?

How to upload a file from a Docker container that runs on Fargate to S3 bucket?

我有一个容器化项目,输出文件写在本地容器中(执行完成后删除),容器运行在Fargate上,我想写一个Python脚本可以调用在 Fargate 上运行并获取输出文件并将其上传到 S3 存储桶的模型,我是 AWS 的新手并且 Docker,有人可以给我发送示例或分享一些有关如何实现此目的的想法吗?

我觉得@jbleduigou 的回答让事情变得复杂了,现在我可以使用命令从容器中复制我本地机器上的文件,我只需要写一个脚本来调用模型并将这个文件复制出来然后上传到 S3,我知道这个概念但找不到 example.Anyone 可以给我一个实现这个的例子吗?

您的 python 脚本会位于 docker 容器之外吗? 如果是这样,您可能希望将 efs 卷安装到您的容器中。 将输出文件复制到容器内的该卷。

然后您可以在您的 ec2 实例中安装相同的卷 运行 脚本。

您需要执行S3 Copy command via AWS CLI or it's equivalent in BOTO3 Python client.

$aws s3 cp /localfolder/localfile.txt s3://mybucket

或 Python 中的等价物:

import boto3

client = boto3.client('s3')

response = client.put_object(
    Body='c:\HappyFace.jpg',
    Bucket='examplebucket',
    Key='HappyFace.jpg'
)

print(response)

为了让您的容器有权将文件上传到 S3,您需要设置 Task Execution Role 并将其分配给您的任务。