在AWS IAM自定义策略中,键中的复合值不起作用。这是因为IAM策略中的条件键(condition keys)只能匹配简单的字符串值,而不能匹配复合值。然而,你可以使用AWS的条件函数(condition functions)来解决这个问题。
下面是一个示例解决方法,其中使用了AWS的条件函数来匹配复合值:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3GetObject",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example-bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/Department": "HR",
          "aws:PrincipalTag/Location": "Office"
        }
      }
    }
  ]
}
在上述示例中,我们使用了StringEquals条件函数来匹配复合值。条件键的格式为aws:PrincipalTag/,其中Department标签的值为"HR",并且匹配Location标签的值为"Office"。
请注意,你需要确保你的用户、组或角色的标签已正确配置,并且IAM策略已授予了ec2:DescribeTags权限,以便IAM可以获取标签信息并进行匹配。
这是一个使用AWS条件函数解决IAM策略中复合值不起作用的示例方法。根据你的具体需求,你可以使用不同的条件函数来匹配不同的复合值。