Amazon web services 如何将分配给ec2实例的IAM角色与boto3一起使用?
我试图在一个EC2实例上运行一个python脚本,该实例用于将文件上载到s3。我已经创建了一个IAM角色,该角色具有访问和更改该S3存储桶的完全权限。如果我在ec2实例上运行aws cli命令,它可以正常工作,例如: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')
$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')