由于存储桶策略,我的 AWS 生命周期策略未实施

My AWS lifecycle policy doesn't implement due to a bucket policy

我有一个 s3 存储桶,其中有一个策略可以防止任何人访问不是来自我的 VPC 的对象,但是,现在当我在存储桶上放置一个生命周期策略时,它并没有申请

这是我对存储桶的当前政策:

{
  "Version": "2012-10-17",
  "Id": "Policy1636125293921",
  "Statement": [
      {
          "Sid": "Stmt1636125292369",
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::bucketname/*",
          "Condition": {
              "StringNotEquals": {
                  "aws:SourceVPC": [
                      "vpc-0987654321",
                      "vpc-1234567890"
                  ]
              }
          }
      }
  ]
}

我已尝试添加第二条语句,使用此语句为我的用户提供完全访问权限:

{
  "Sid": "Stmt1636125292368",
  "Effect": "Allow",
  "Principal": {
      "AWS": "arn:aws:iam::123456789012:user/username"
  },
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::bucketname/*"
}

我已经尝试了第二个语句的几种不同组合,但它仍然没有 运行生命周期策略,该策略存在并且存在,但它没有 运行 .在其中一个对象的“对象管理概述”下,过期日期和过期规则保持空白,但是如果我删除拒绝策略,那么我可以看到过期日期。我需要拒绝政策来继续做它所做的事情,所以我不能删除它。我还要补充一点,我正在使用的用户具有完全管理员权限。

我没有将 Principal 作为 DENY 语句的 "*",而是将其替换为

"NotPrincipal": {
"AWS": [
    "arn:aws:iam::123456789012:user/username",
    "arn:aws:iam::123456789012:root"

该策略现在拒绝任何不是来自我的帐户的人,但它也允许通过 VPC 访问对象的匿名用户仍然可以访问。现在,这使我能够成功 运行 存储桶的生命周期策略。