boto3无法从以AWS Batch运行的Docker容器连接到S3

时间:2019-05-02 23:45:54

标签: amazon-web-services boto amazon-ecs aws-batch amazon-ecr

我正在尝试将存储在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映像,并且一切正常。

1 个答案:

答案 0 :(得分:0)

您提到了计算环境和计算资源。您是否已按照here的要求将此S3策略添加到Job Role

  

创建角色并将策略附加到该角色后,可以运行承担该角色的任务。您可以通过以下几种方法执行此操作:

     
      
  1. 在任务定义中为您的任务指定IAM角色。您可以创建新的任务定义或现有任务定义的新修订版,并指定以前创建的角色。如果您使用控制台创建任务定义,请在“任务角色”字段中选择您的IAM角色。如果您使用AWS CLI或SDK,请使用taskRoleArn参数指定任务角色ARN。有关更多信息,请参见创建任务定义。

  2.   
  3. 在运行任务时指定IAM任务角色替代。您可以在运行任务时指定IAM任务角色替代。如果您使用控制台运行任务,请选择“高级选项”,然后在“任务角色”字段中选择您的IAM角色。如果使用AWS CLI或SDK,请使用覆盖JSON对象中的taskRoleArn参数指定任务角色ARN。有关更多信息,请参阅运行任务。

  4.