我在配置文件中有来自多个帐户的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是“毒丸”并将其删除。但是异常消息不会向我提供该信息。

问题:

  • 是否有更好的方法来管理我无法控制的大量跨帐户ARN?
  • 在将ARN应用于S3存储桶策略之前,是否有办法验证其存在?
  • 最佳答案

    您的问题未指定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/

    10-12 18:59