이 답변 의 지침 에 따라 S3 버킷 정책을 생성합니다.
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
다음 오류가 다시 나타납니다.
작업이 문의 리소스에 적용되지 않습니다.
내 정책에서 무엇을 놓치고 있습니까?
답변
IAM의 문서에서, http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
일부 서비스에서는 개별 리소스에 대한 작업을 지정할 수 없습니다. 대신 Action 또는 NotAction 요소에 나열한 모든 작업이 해당 서비스의 모든 리소스에 적용됩니다. 이 경우 Resource 요소에 와일드 카드 *를 사용합니다.
이 정보를 통해 리소스는 다음과 같은 값을 가져야합니다.
"Resource": "arn:aws:s3:::surplace-audio/*"
답변
s3:ListBucket
권한을 제거하는 것만으로 는 나에게 충분한 해결책이 아니며 다른 많은 사람들에게도 적합하지 않을 수 있습니다.
당신이 원하는 경우 s3:ListBucket
권한을, 당신은 단지합니다 (없는 버킷의 일반 ARN이 필요합니다 /*
이 권한이 버킷 내에서 항목을 양동이 자체에 적용되지 말을).
아래와 같이, 당신은 있어야 s3:ListBucket
처럼 버킷 내에서 항목에 관한 권한과는 별도의 성명 등의 허가 s3:GetObject
및 s3:PutObject
:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Principal": {
"AWS": "[IAM ARN HERE]"
},
"Resource": "arn:aws:s3:::my-bucket-name"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Principal": {
"AWS": "[IAM ARN HERE]"
},
"Resource": "arn:aws:s3:::my-bucket-name/*"
}
]
}
답변
오류 작업이 문의 리소스에 적용되지 않습니다.
단순히 정책에 작성한 작업이 리소스에 적용되지 않음을 의미합니다. 누구나 내 버킷에서 다운로드 할 수 있도록 버킷을 공개하려고했습니다. 내 진술에서 ( “s3 : ListBucket”)을 제거 할 때까지 오류가 발생했습니다.
{
"Id": "Policyxxxx961",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxx4365",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket-name/*",
"Principal": "*"
}
]
}
목록 버킷은 버킷 내부에 적용되지 않으므로이 작업 정책을 삭제하면 제대로 작동했습니다.
답변
방금이 문제가 발생하여 동일한 정책에 ListBucket 및 GetObject를 포함하려는 사용자를위한 더 짧은 솔루션을 찾았습니다.
{
"Id": "Policyxxxx961",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxx4365",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-name",
"arn:aws:s3:::bucket-name/*"
],
"Principal": "*"
}
]
}
답변
버킷을 만드는 동안 비슷한 문제에 직면했습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mrt9949"
]
}
]
}
위의 코드를 다음과 같이 변경했습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mrt9949/*"
]
}
]
}
버킷 이름
에 / * 를 추가 하면 문제가 해결됩니다.
여기 내 버킷 이름은 mrt9949입니다.
답변
제 경우에는이 오류에 대한 해결책이 제가 적용한 일부 작업을 제거하려고했습니다. 그들 중 일부는이 리소스와 관련이 없거나이 리소스와 함께 사용할 수 없습니다. 이 경우 다음을 포함 할 수 없습니다.
GetBucketAcl ListBucket ListBucketMultipartUploads
답변
정책에 대한 Resource 태그 아래에 정의 된 arn의 패턴을 확인해야합니다.
“리소스”: “arn : aws : s3 ::: s3mybucketname / *”
끝에 “/ *”를 추가하면 버킷에 대해 퍼블릭 액세스 정책을 차단 해제 한 후에도 문제가 발생하면 문제를 해결하는 데 도움이됩니다.