首页 > 解决方案 > 通过 Boto3 使用 docker run 命令访问 S3 对象会引发 ProfileNotFound 异常,但在通过 python 运行时效果很好

问题描述

我正在做一个项目,我需要使用 Boto3 从 S3 存储桶中读取文本文件。然后需要 dockerize 我的应用程序。我使用 Boto3 实现了我的代码,它运行得非常好(注意:通过带有开关 -p 和 -n 的 argparser 获取两个参数)。但是当我尝试使用 Docker 运行相同的

PS **my Working Directory** > docker run --rm Image_name -p Argument1 -n Argument2

<class 'botocore.exceptions.ProfileNotFound'> Code.py 92

我在上面搜索了很多东西,我的理解是 AWS 容器目录无法找到存储在我的主目录/.aws 文件夹中的凭据文件和配置文件。

我试过的:

1.路径安装如下:

 PS **my Working Directory** > docker run --rm -it -v %userprofile%\.aws:/root/.aws 
 amazon/aws-cli
 docker: Error response from daemon: %!u(string=is not a valid Windows path)serprofile%!\ 
 (MISSING).aws.

请参阅“docker run --help”。

我完全不明白语法有什么问题。我尝试在 %userprofile% 中手动输入我的用户配置文件目录为 C:/Users/Deepak

然后奇怪的 WSL2(后端)弹出窗口说在 Windows 上使用传递容器可能效果不佳。我不确定这意味着什么。它对在 windows 环境下构建的 Docker 容器有什么影响吗?

2.我也将 Credential 和 Config 文件移到了我的工作目录中,并尝试了以下代码:

    PS my Working Directory > docker run --rm -it -v ${PWD}:/root/.aws amazon/aws-cli Image_name -p 
    Argument1 -n Argument2

标签: amazon-web-servicesdockeramazon-s3boto3windows-subsystem-for-linux

解决方案


推荐阅读