amazon-web-services - boto3 无法从在 AWS 批处理中运行的 Docker 容器连接到 S3
问题描述
我正在尝试将存储在 ECR 中的 Docker 容器作为 AWS 批处理作业启动。此容器的入口点 python 脚本尝试连接到 S3 并下载文件。我AmazonS3FullAccess
在计算环境中为 AWSBatchServiceRole 附加了一个角色,我还AmazonS3FullAccess
为计算资源附加了一个角色。
这是正在记录的以下错误:botocore.exceptions.ConnectTimeoutError: Connect timeout on endpoint URL: "https://s3.amazonaws.com/"
这些实例有可能在自定义 VPC 中启动,而不是在默认 VPC 中启动。我不确定这会有所不同,但也许这是问题的一部分。我没有适当的权限进行检查。我已经在同一个 VPC 中启动的 EC2 实例上测试了这个 Docker 映像,一切都按预期工作。
解决方案
您提到了计算环境和计算资源。您是否将此 S3 策略添加到此处Job Role
提到的?
创建角色并将策略附加到该角色后,您可以运行代入该角色的任务。你有几个选项可以做到这一点:
在任务定义中为您的任务指定 IAM 角色。您可以创建新任务定义或现有任务定义的新修订版,并指定您之前创建的角色。如果您使用控制台创建任务定义,请在任务角色字段中选择您的 IAM 角色。如果您使用 AWS CLI 或开发工具包,请使用 taskRoleArn 参数指定您的任务角色 ARN。有关详细信息,请参阅创建任务定义。
在运行任务时指定 IAM 任务角色覆盖。您可以在运行任务时指定 IAM 任务角色覆盖。如果您使用控制台运行任务,请选择高级选项,然后在任务角色字段中选择您的 IAM 角色。如果您使用 AWS CLI 或开发工具包,请使用覆盖 JSON 对象中的 taskRoleArn 参数指定您的任务角色 ARN。有关详细信息,请参阅运行任务。
推荐阅读
- angular - PrimeNG,p-tabView 在标签行上放置额外的内容
- linux - Git:隐藏的更改但仍然无法拉取
- excel - 获取文本形式的时间平均值
- selenium - 如何在硒的桌子上进行鼠标悬停和滚动
- stm32 - STM32 同步 ADC 仅从 ADC 1 读取值
- nginx - 如何在 Nginx 中将 https://www 重定向到非 www https 版本
- linux - 如何在 FunctionFS 中扩展 BOS 描述符?
- python - elif a=="no": ^ SyntaxError: 无效语法
- ifttt - 与 IFTTT 的用户交互
- r - 停止 ggplot2 中的标签重叠