【问题标题】:Get Instance 'Name' Tag via Python script once IMDSv2 is enabled启用 IMDSv2 后,通过 Python 脚本获取实例​​“名称”标签
【发布时间】:2021-08-30 17:33:43
【问题描述】:

我想了解一旦实例元数据服务的版本 2 在版本 1 上实施后如何获取 EC2 的“名称”标签值。

当我尝试通过 boto3 在 ec2 客户端下 describe_instances 时,我的请求返回访问被拒绝。

我创建了以下代码来访问 EC2 的元数据:

        http_headers = { 'X-aws-ec2-metadata-token-ttl-seconds': 600, "content-type": "application/json"}
        instance_details = None

        connection = httplib.HTTPConnection('http://169.254.169.254')
        connection.request('PUT', '/latest/api/token', None, http_headers)

        response = connection.getresponse()
        auth_token = response.read()

        http_headers = {'X-aws-ec2-metadata-token': auth_token, "content-type": "application/json"}

        connection.request('GET', '/2016-06-30/dynamic/instance-identity/document/', None, http_headers)
        response = connection.getresponse()

        instance_details = response.read()

这当然可以让我获得实例 ID、区域等,但我需要一种方法来获取与实例关联的一组标签。

我还没有看到将令牌添加到 boto3 客户端的方法。如果有人知道解决方法,请告诉我。

谢谢!

【问题讨论】:

  • ec2:DescribeInstances附加到与EC2关联的IAM角色

标签: python amazon-web-services amazon-ec2 boto3


【解决方案1】:

Access Denied 错误表示 AWS 已拒绝您对 DescribeInstances() 的调用。

如果已将 IAM 角色分配给实例,则将 ec2:DescribeInstances 权限添加到 IAM 角色。 Amazon EC2 实例元数据服务将用于检索 IAM 角色的凭证。

如果您使用来自 IAM 用户的凭证,请将权限添加到该 IAM 用户。

实例元数据服务不提供标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2021-08-19
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2012-07-15
    相关资源
    最近更新 更多