나는 얻고있다:
ListObjects 오퍼레이션을 호출 할 때 오류 (AccessDenied)가 발생했습니다. 액세스 거부
S3 버킷에서 폴더를 가져 오려고 할 때
이 명령을 사용하여 :
aws s3 cp s3://bucket-name/data/all-data/ . --recursive
버킷에 대한 IAM 권한은 다음과 같습니다.
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketname/*"
]
}
] }
나는 할 수 있도록 변화해야 할 사항은 무엇 copy
과 ls
성공적으로?
답변
S3 버킷 내부의 객체에 대한 명령을 수행 할 권한이 있지만 버킷 자체에 대한 작업을 수행 할 권한이 없습니다.
정책을 약간 수정하면 다음과 같습니다.
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketname",
"arn:aws:s3:::bucketname/*"
]
}
]
}
그러나 이것은 아마도 필요한 것보다 더 많은 권한을 부여 할 것입니다. 최소 권한 부여에 대한 AWS IAM 모범 사례를 따르면 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucketname"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucketname/*"
]
}
]
}
답변
언급 한 “aws s3 cp s3 : // bucket-name / data / all-data /. –recursive”명령을 사용하여 모든 s3 버킷 객체를 복사하려면 다음을 수행하는 것이 안전하고 최소한의 정책입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket-name"
],
"Condition": {
"StringLike": {
"s3:prefix": "data/all-data/*"
}
}
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucket-name/data/all-data/*"
]
}
]
}
이 정책의 첫 번째 문은 특정 버킷의 하위 디렉토리 내에 객체를 나열 할 수있게합니다. 리소스는 S3 버킷의 영역이어야하며 해당 버킷의 하위 디렉토리로만 목록을 제한하려면 “s3 : prefix”값을 편집 할 수 있습니다.
이 정책의 두 번째 문장은 버킷 내의 객체를 특정 하위 디렉토리로 가져올 수 있도록합니다. 이것은 “s3 : // bucket-name / data / all-data /”경로 안에 복사 할 수있는 모든 항목을 의미합니다. 이렇게하면 “s3 : // bucket-name / data /”와 같은 상위 경로에서 복사 할 수 없습니다.
이 솔루션은 AWS CLI 명령에 대한 사용을 제한하기위한 것입니다. AWS 콘솔 또는 API를 통한 S3 액세스를 제한해야하는 경우 더 많은 정책이 필요합니다. https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/을 살펴보십시오 .
이와 비슷한 문제가 여기에서 발견되어 내가 제공하는 솔루션으로 이끌었습니다.
https://github.com/aws/aws-cli/issues/2408
도움이 되었기를 바랍니다!
답변
“arn : aws : 3 ::: bucketname”또는 “arn : aws : 3 ::: bucketname *”을 통해 버킷의 리소스를 지정해야합니다. 후자는 버킷 객체를 조작 할 수 있기 때문에 선호됩니다. 슬래시가 없습니다!
객체 나열은 버킷 작업입니다. 따라서 “s3 : ListBucket”조치가 필요합니다. 버킷에 객체를 추가하는 것은 객체에 대한 작업입니다. 따라서 “s3 : PutObject”작업이 필요합니다. 물론 필요에 따라 다른 작업을 추가 할 수도 있습니다.
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucketname*"
]
}
]
}
답변
S3에 액세스 할 수 없었기 때문에
- 먼저 인스턴스에서 키 액세스를 구성했습니다 (시작 후 역할을 연결할 수 없었습니다)
- 몇 달 동안 잊어 버렸습니다
- 인스턴스에 연결된 역할
- 액세스하려고했습니다. 구성된 키가 역할보다 우선 순위가 높고 필요한 S3 권한이 사용자에게 부여되지 않아 액세스가 거부되었습니다.
솔루션 : rm -rf .aws/credentials
, 그런 다음 aws
역할 을 사용합니다.
답변
s3 : ListObjects 작업에 “s3 : ListBucket”이 있지만 정책을 사용할 때 아래와 같은 오류가 발생합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl"
],
"Resource": [
"arn:aws:s3:::<bucketname>/*",
"arn:aws:s3:::*-bucket/*"
],
"Effect": "Allow"
}
]
}
그런 다음 한 줄 “arn : aws : s3 ::: bucketname” 을 추가하여 수정했습니다
.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl"
],
"Resource": [
"arn:aws:s3:::<bucketname>",
"arn:aws:s3:::<bucketname>/*",
"arn:aws:s3:::*-bucket/*"
],
"Effect": "Allow"
}
]
}
답변
오류가 “s3 : ListObjects” 작업 으로 인한 것이라고 생각 했지만 “s3 : ListBucket” 작업을 추가하여 “ S3 버킷의 ListObjects에 대한 AccessDenied”문제를 해결해야했습니다.
답변
나는 같은 문제에 직면했다. 방금 자격 증명 구성을 추가했습니다.
aws_access_key_id = your_aws_access_key_id
aws_secret_access_key = your_aws_secret_access_key
에 “~ / .aws / 자격 증명” +는 기본 프로파일에 대한 터미널 다시 시작합니다.
다중 프로파일의 경우 –profile arg를 추가해야합니다.
aws s3 sync ./localDir s3://bucketName --profile=${PROFILE_NAME}
여기서 PROFILE_NAME :
.bash_profile ( or .bashrc) -> export PROFILE_NAME="yourProfileName"
자격 증명 및 다중 프로필을 구성하는 방법에 대한 자세한 내용은 여기를 참조하십시오.