我在配置文件中有来自多个帐户的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是“毒丸”并将其删除。但是异常消息不会向我提供该信息。
问题:
最佳答案
您的问题未指定ruby,所以我将向您展示如何使用Python Boto3库处理此问题(很可疑)。
尝试使用多个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,但是由于很少遇到此问题,因此我不想增加开销。
希望您会发现其中的一些帮助。
戴夫·奥
关于amazon-web-services - 在应用AWS策略之前如何验证ARN?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34419905/