【发布时间】:2019-07-27 05:38:32
【问题描述】:
以下是我使用生成的 Policy json:
{
"Id": "Policy1564102281945",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S1001",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<>/*",
"Principal": {
**"AWS": [
"arn:aws:iam::<>:root"
]**
}
}
]
}
但是,当我使用适用于 C# 的 AWS 开发工具包并调用以下 API 时
client.GetBucketPolicy(bucketName)
我得到以下 Json 响应。
{
"Version": "2012-10-17",
"Id": "Policy1564102281945",
"Statement": [{
"Sid": "S1001",
"Effect": "Allow",
"Principal": {
**"AWS": "arn:aws:iam::185160002363:root"**
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mcafee-mvision-epo-dev-girish-cda/*"
}
]
}
注意“AWS”对象的 JSON 模式。在 S3 的“Bucket Policy”中点击“AWS”实际上是一个数组。但在 API 响应中,它作为对象嵌入“主体”中。
仅当列表中添加了一个 ARN 时才会发生这种情况。如果至少有 2 个元素,则 API 会以“AWS”对象的数组进行响应。
这种不一致有什么原因吗? 当使用任何库转换为 JSON 时,是否期望客户端使用对象类型检查来处理此问题?
【问题讨论】:
标签: c# amazon-web-services aws-sdk amazon-iam