kei*_*ian 5 amazon-s3 amazon-web-services amazon-iam aws-sdk
我在一个配置文件中有一个来自多个账户的 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 是“毒丸”并将其删除。但是异常消息没有向我提供该信息。
问题:
小智 2
你的问题没有指定 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'])
Run Code Online (Sandbox Code Playgroud)
上述代码片段的结果是:
Invalid principal in policy: "AWS":"arn:aws:iam::42xxxxx:user/idontexist"
Run Code Online (Sandbox Code Playgroud)
然后,我执行一个简单的 RE 来提取错误的 ARN,然后尝试重新应用我的更新。如果列表中仍然存在错误的 ARN,那么我会获取列表中的下一个并将其删除。这会重复进行,直到策略被接受为止。
我正在寻找与您完全相同的东西 - “ARN 验证器”。我没有找到,所以我必须自己处理。我考虑过检查单独函数中涉及的所有 ARN,但由于很少遇到此问题,因此我不想产生开销。
我希望本文对您有所帮助。
戴夫·奥
| 归档时间: |
|
| 查看次数: |
3913 次 |
| 最近记录: |