S3 버킷 정책을 사용하여 버킷에 일반 액세스를 제공하는 동시에 역할 정책을 사용하여 특정 역할에 액세스를 허용하려고합니다. 역할은 람다 함수가 버킷의 객체를 처리하는 데 사용됩니다. 첫 번째 장애물에서 멈추고 있습니다 - 롤 정책에서 허용되지만 접두사 정책에서 명시 적으로 거부되지는 않았지만 접두사 "incoming /"이있는 항목을 얻을 수 없습니다.S3 버킷 정책과 IAM 역할이 충돌 함
역할 정책 :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBucketPut",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::bucket-name/*"
},
{
"Sid": "AllowIncomingGetDelete",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": "incoming/*"
}
}
}
]
}
참고 : ": AWS : * S3 ::: 버킷 이름/수신 ARN"만 방법을 변경 듯 나는 또한 조건을 제거하고 자원을 변경하려 정책 시뮬레이터가 작동했습니다. 또 다른 참고 사항 : "incoming/*"접두사가있는 버킷에서 GET하면 시뮬레이터에서 작동하지만 실제로는 그렇지 않습니다.
나는 무엇이 관련이 있을지 모르므로 아래의 버킷 정책에서 어떠한 진술도 삭제하지 않았습니다. IP 주소가 생략되었습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPublicList",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": "public*"
}
}
},
{
"Sid": "AllowPublicGet",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/public*"
},
{
"Sid": "AllowPrivateList",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": "private*"
},
"IpAddress": {
"aws:SourceIp": [
"..."
]
}
}
},
{
"Sid": "AllowPrivateGet",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/private*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"..."
]
}
}
},
{
"Sid": "AllowIncomingPut",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket-name/incoming*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"..."
]
}
}
}
]
}
텍스트의 벽에 사과드립니다.
내 역할이 접두사 "수신 /"으로 된 개체를 가져올 수없는 이유를 모르겠습니다. 할 때
람다 기능은 403 액세스가 거부지고 다음
S3.download_file(bucket, key, localfile)
설명해 주셔서 대단히 감사드립니다. 게시물에서 언급했듯이, 당신이 묘사하는 것처럼 리소스를 지정하는 것과 동일한 동작을 얻습니다. 나는 그 문제를 알아 냈다. 나는 직장에 갈 때 갱신 할 것이다. – unclemeat