The following AWS IAM permission gives can be added to a user to give them access to a read a specific directory in an S3 bucket.  Make sure you replace bucket-name  and directory-name  with your actual bucket and directory name.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "readf",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/directory-name/*"
            ]
        },
        {
            "Sid": "listf",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::bucket-name",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "directory-name/*"
                    ]
                }
            }
        }
    ]
}

If you want to grant access to read and write, you can issue the following:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "readf",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/directory-name/*"
            ]
        },
        {
            "Sid": "listf",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::bucket-name",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "directory-name/*"
                    ]
                }
            }
        },
        {
            "Sid": "writef",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/directory-name/*"
            ]
        }
    ]
}

If you would like to grant access to the entire S3 bucket, you can use the following snippet


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "readf",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/*"
            ]
        },
        {
            "Sid": "listf",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::bucket-name",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "*"
                    ]
                }
            }
        },
        {
            "Sid": "writef",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}
Did this answer your question?