首页 > 解决方案 > 试图确定一个值是否是列表的一部分

问题描述

我有一个我正在迭代的 AWS arns 列表。

我试图捕捉 arn 是否在列表中:

user_name = 'bluethundr'
for policy_arn in policy_arn_list:
    print("Policy ARN: ", policy_arn)
    if policy_arn == ('pol-aws-secrets-manager-' + user_name):
        policy_exists = True
        print("Policy exists is true.")

但是if测试并没有发现 ARN 已经存在的事实。这是我的输出:

Policy ARN:  arn:aws:iam::849355752309:policy/pol-iam
Policy ARN:  arn:aws:iam::849355752309:policy/pol-rds
Policy ARN:  arn:aws:iam::849355752309:policy/pol-s3
Policy ARN:  arn:aws:iam::849355752309:policy/pol-aws-secrets-manager-bluethundr

我正在寻找的 ARN 是:

arn:aws:iam::849355752309:policy/pol-aws-secrets-manager-bluethundr

我可以验证 cli 上是否存在该 ARN:

aws iam list-policies --scope Local --profile=jf-dev | jq -r '.Policies[].PolicyName' | grep bluethundr
pol-aws-secrets-manager-bluethundr

这是的内容policy_arn_list

['arn:aws:iam::849355752309:policy/pol-aws-secrets-manager-user2',
 'arn:aws:iam::849355752309:policy/pol-aws-secrets-manager-user4',
 'arn:aws:iam::849355752309:policy/pol-aws-secrets-manager-bluethundr',
 'arn:aws:iam::849355752309:policy/pol-s3',
 'arn:aws:iam::849355752309:policy/pol-ec2',
 'arn:aws:iam::849355752309:policy/pol-rds',
 'arn:aws:iam::849355752309:policy/pol-iam',
 'arn:aws:iam::849355752309:policy/pol-aws-secrets-manager-user1',
 'arn:aws:iam::849355752309:policy/pol-aws-secrets-manager-user3']

我究竟做错了什么?为什么 if 测试没有看到我正在寻找的 ARN 已经在列表中?

标签: python

解决方案


你能试一下吗

if ('pol-aws-secrets-manager-' + user_name) in str(policy_arn):

在我看来 1)policy_arn 可能不是字符串(不知道),并且 2)可能有更多的字符,而不仅仅是('pol-aws-secrets-manager-' + user_name)。如果其中任何一个是唯一的问题,那么我的解决方案应该有效。


推荐阅读