将AWS凭据传递给Python容器

2024-05-18 23:31:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我第一次使用VS代码和WSL2构建Python容器。下面是我的示例Python代码。它在VS交互模式下运行良好,因为它正在获取我的默认AWS凭据

import boto3
s3BucketName = 'test-log-files'
s3 = boto3.resource('s3')

def s3move():
    try:
        s3.Object(s3BucketName, "destination/Changes.xlsx").copy_from(CopySource=(s3BucketName + "/source/Changes.xlsx"))
        s3.Object(s3BucketName,"source/Changes.xlsx").delete()
        print("Transfer Complete")
    except:
        print("Transfer failed")

if __name__ == "__main__":
    s3move()

由VS代码生成的Dockerfile:

# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:3.8-slim-buster

# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
RUN pip install boto3

WORKDIR /app
COPY . /app

# Switching to a non-root user, please refer to https://aka.ms/vscode-docker-python-user-rights
RUN useradd appuser && chown -R appuser /app
USER appuser

# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python", "S3MoveFiles/S3MoveFiles.py"]

我想使用docker容器测试这个,似乎我必须将AWS凭据传递给容器。虽然还有其他方法,而且可能更安全,但我想通过在docker命令中装入卷作为参数来测试该方法

docker run -v ~/.aws/credentials:/appuser/home/.aws/credentials:ro image_id

我在VS代码中的终端窗口中收到“传输失败”消息。我做错了什么?检查了几篇文章,但找不到任何提示。我没有以root用户身份登录


Tags: todocker代码httpss3boto3xlsx容器

热门问题