python - 无法在循环内使用条件(使用 describe_instances)
问题描述
我正在尝试学习 boto3 库并开始自己做一些实验。问题是我正在使用 describe_instances 方法,我可以获得我的实例的信息。到目前为止,我没有任何问题。但是当我提出一个条件时,如果一个实例具有特定的 IAM 角色,那么我想将此实例 ID 添加到列表中。但它返回给我一个空列表。我的错误是什么?谢谢。
ec2_client=boto3.client("ec2")
def describe_instances():
resp = ec2_client.describe_instances()
print(resp)
instance_ids=[]
for reservations in resp["Reservations"]:
for instances in reservations["Instances"]:
if instances["IamInstanceProfile"]=={'Arn': 'arn:aws:iam::723149566365:instance-profile/PublicEC2_S3Access'}:
instance_ids.append(instances["InstanceId"])
print(instance_ids)
解决方案
根据 boto3 docs,IamInstanceProfile
元素是 a dict
,其中包含 2 个键:
- Arn - 字符串
- ID - 字符串
因此,当您instances["IamInstanceProfile"]
与只有Arn
键的 dict 进行比较时,它始终是False
.
我建议您将支票更改为:
my_arn = 'arn:aws:iam::723149566365:instance-profile/PublicEC2_S3Access'
for reservations in resp["Reservations"]:
for instances in reservations["Instances"]:
if instances["IamInstanceProfile"]["Arn"] == my_arn:
instance_ids.append(instances["InstanceId"])
推荐阅读
- c# - QuickFix/n - 登录内的自定义字段
- angular - Karma - 注入 Angular InjectionToken 问题
- c# - C# 对委托类型的泛型类型推断
- angular - Angular 等待 Promise 导致变量在模板中显示
- git - 如何在 package-lock.json 文件中正确更新 mem 包
- python - python多线程中的并发性与并行性?
- mysql - 计算移动平均线作为子查询
- c# - 如何根据方向更改 Grid.RowDefinitions
- project-management - 如何为关键跟踪器创建客户状态?
- angular - 在 Angular 中发布 http://localhost:3000/auth 400(错误请求)