我有一个配置文件中来自众多帐户的ARN列表,然后我将其构建为S3存储桶策略。但是,如果其中一个ARN无效,请说arn:aws:iam::12345679012:user/foo-bar
,那么在尝试应用包含该ARN的策略时,我将收到以下异常:
lib/aws/core/client.rb:375:in `return_or_raise': Invalid principal in policy (AWS::S3::Errors::MalformedPolicy)
如果我的文件中的任何ARN被删除,这似乎会导致问题。然后,我无法附加现有政策。我必须找出哪个ARN是“毒丸”并将其删除。但是异常消息并没有向我提供这些信息。
问题:
答案 0 :(得分:1)
你的问题没有指定ruby,所以我将告诉你我是如何用Python Boto3库处理这个(我很怀疑)。
在尝试使用多个ARN更新假设策略时,一个或多个ARN无效。这是产生错误的boto调用:
try:
iamClient.update_assume_role_policy(RoleName=curated_role_name, PolicyDocument=json.dumps(assume_role_policy_document))
except botocore.exceptions.ClientError as e:
print (e.response['Error']['Message'])
以上代码段的结果是:
Invalid principal in policy: "AWS":"arn:aws:iam::42xxxxx:user/idontexist"
然后我做一个简单的RE来提取坏的ARN,然后尝试重新应用我的更新。如果列表中仍然存在错误的ARN,那么我将获取列表中的下一个ARN并将其删除。直到政策被接受为止。
我正在寻找与你完全相同的东西 - 一个“ARN验证器”。我没有找到它,所以我必须自己处理它。我考虑检查所有涉及单独功能的ARN,但由于我很少遇到问题,我不想承担开销。
我希望你能找到一些有用的东西。
Dave O