【问题标题】:How to give ec2 instance access to s3 using boto3如何使用 boto3 授予 ec2 实例对 s3 的访问权限
【发布时间】:2018-02-01 18:52:59
【问题描述】:

通过谷歌搜索,我找到了this tutorial on accessing S3 from EC2 instance without credential file。我按照它的指示获得了所需的实例。 aws web 控制台页面看起来像

但是,我不想每次都使用 Web 控制台手动执行此操作。如何使用 boto3 创建这样的 EC2 实例?

我试过了

s = boto3.Session(profile_name='dev', region_name='us-east-1')
ec2 = s.resource('ec2')
rc = ec2.create_instances(ImageId='ami-0e297018', 
                          InstanceType='t2.nano',
                          MinCount=1, 
                          MaxCount=1, 
                          KeyName='my-key', 
                          IamInstanceProfile={'Name': 'harness-worker'},
                          )

其中harness-worker 是有权访问 S3 的 IAM 角色,但仅此而已。 它还与 aws Web 控制台教程一起用于第一种方法。

然后我收到错误提示

ClientError:调用时发生错误(UnauthorizedOperation) RunInstances 操作:您无权执行此操作 操作。

我做错了什么吗?

dev 配置文件具有 AmazonEC2FullAccess。没有IamInstanceProfile={'Name': 'harness-worker'}, 行,create_instances 可以创建实例。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 boto3 amazon-iam


    【解决方案1】:

    这与您尝试分配新 EC2 实例的角色无关。您正在运行的 Python 脚本没有 RunInstances 权限。

    【讨论】:

    • 对不起,我是 boto3 和 aws 的新手。你能解释一下如何解决它吗?谢谢。
    • 如果您的 python 脚本用于与 AWS API 交互的 IAM 凭证,您将拥有某种类型的凭证。这些凭证无权创建新的 EC2 实例。这不是您的代码的问题。这是您正在使用的 IAM 帐户或配置文件的问题。
    • 开发配置文件具有 AmazonEC2FullAccess。如果没有行 IamInstanceProfile={'Name': 'harness-worker'},,create_instances 能够创建实例。
    【解决方案2】:

    要将 IAMProfile 分配给实例,AmazonEC2FullAccess 是不够的。此外,您需要以下权限才能将角色传递给实例。

    见:Granting an IAM User Permission to Pass an IAM Role to an Instance

    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "*"
    }
    

    首先,您可以授予对您的 dev 个人资料的完整 IAM 访问权限,并查看它是否有效。然后删除完整的 IAM 访问权限并仅提供 iam:PassRole 并重试。

    【讨论】:

      猜你喜欢
      • 2016-09-05
      • 2014-03-06
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多