Cloudformation - Check if S3 folder exists and apply policy to the specific folder

0

Hello: I am writing a cloudformation template to create an S3 bucket. This S3 bucket can have multiple folders created programmatically. So I want to apply a bucket policy that checks if a specific folder exists and allow only specific file types. For ex, if there is an S3 bucket called 'my-test-s3' with nested folders /folder1/folder2/pdf, I want to check if the folder 'pdf' exists. If it does, only allow for file types of *.pdf in this folder. How do I write the bucket policy for this using cloudformation template? I tried this below. However, this prevents creation of any folders inside my 'S3Bucket'. I am looking for some guidance on this.

Sid: Stmt1631632005699 Effect: Deny Principal: AWS: !Sub 'arn:aws:iam::${AWS::AccountId}:root/' Action: - 's3:PutObject' NotResource: - !Sub arn:aws:s3:::${S3Bucket}///pdf/*.pdf

已提問 2 年前檢視次數 787 次
1 個回答
0
已接受的答案

Something like this:

{
  "Id": "Policy1649706507409",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1649706435908",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucket/*.pdf",
      "Condition": {
        "StringLike": {
          "s3:prefix": "pdf/"
        }
      },
      "Principal": "*"
    },
    {
      "Sid": "Stmt1649706506153",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "NotResource": "arn:aws:s3:::mybucket/*.pdf",
      "Condition": {
        "StringLike": {
          "s3:prefix": "pdf/"
        }
      },
      "Principal": "*"
    }
  ]
}
profile pictureAWS
專家
kentrad
已回答 2 年前
profile picture
專家
已審閱 1 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南