Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何将分配给ec2实例的IAM角色与boto3一起使用?_Amazon Web Services_Boto3 - Fatal编程技术网

Amazon web services 如何将分配给ec2实例的IAM角色与boto3一起使用?

Amazon web services 如何将分配给ec2实例的IAM角色与boto3一起使用?,amazon-web-services,boto3,Amazon Web Services,Boto3,我试图在一个EC2实例上运行一个python脚本,该实例用于将文件上载到s3。我已经创建了一个IAM角色,该角色具有访问和更改该S3存储桶的完全权限。如果我在ec2实例上运行aws cli命令,它可以正常工作,例如: $aws s3我的桶 2020-03-03 11:00:46 4100 myfile.json 但是,当我尝试使用boto3写入存储桶时,它失败了: session=boto3.session.session() s3\u client=session.client('s3')

我试图在一个EC2实例上运行一个python脚本,该实例用于将文件上载到s3。我已经创建了一个IAM角色,该角色具有访问和更改该S3存储桶的完全权限。如果我在ec2实例上运行aws cli命令,它可以正常工作,例如:

$aws s3我的桶
2020-03-03 11:00:46 4100 myfile.json
但是,当我尝试使用boto3写入存储桶时,它失败了:

session=boto3.session.session()
s3\u client=session.client('s3')
s3_client.upload_文件(路径'my bucket','myfile.json')
我得到这个错误:

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

我如何告诉boto3使用EC2实例的IAM配置文件,该配置文件应授予其权限?

此错误是否发生在EC2实例内部?是的,此错误发生在EC2实例上。共享您的角色(无敏感信息),以便我们可以查看并帮助您。您的角色似乎给了您读权限,但没有写权限。另外,请确保您的bucket允许您在其上进行写入。很可能您正在成功地将IAM角色附加到Amazon EC2实例,并且boto可能正在使用该角色。因此,错误可能与您试图将对象放入S3存储桶,但IAM角色没有足够的权限这样做有关。您需要向我们展示IAM角色,并告诉我们您认为该角色正确的原因。顺便说一下,您不需要创建
会话()。您可以使用:
s3\u client=boto3.client('s3')