Ja postępując zgodnie z instrukcjami z tej odpowiedzi do generowania kontynuację polityki S3 wiadra:
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
Otrzymuję następujący błąd:
Akcja nie dotyczy żadnego zasobu (ów) w instrukcji
Czego mi brakuje w mojej polisie?
amazon-web-services
amazon-s3
Philip Kirkbride
źródło
źródło
Odpowiedzi:
Z dokumentacji IAM: http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
Niektóre usługi nie pozwalają na określenie działań dla poszczególnych zasobów; zamiast tego wszelkie akcje wymienione w elemencie Action lub NotAction mają zastosowanie do wszystkich zasobów w tej usłudze. W takich przypadkach używasz symbolu wieloznacznego * w elemencie Resource.
Dzięki tym informacjom zasób powinien mieć wartość taką jak poniżej:
źródło
Samo usunięcie
s3:ListBucket
pozwolenia nie było dla mnie wystarczająco dobrym rozwiązaniem i prawdopodobnie nie jest dla wielu innych.Jeśli chcesz uzyskać
s3:ListBucket
pozwolenie, musisz mieć tylko zwykły obszar wiadra (bez/*
na końcu), ponieważ to uprawnienie dotyczy samego segmentu, a nie elementów w nim.Jak pokazano poniżej, musisz mieć
s3:ListBucket
pozwolenie jako oddzielne oświadczenie od uprawnień dotyczących elementów w zasobniku, takich jaks3:GetObject
is3:PutObject
:źródło
Akcja błędu nie dotyczy żadnych zasobów w instrukcji
Po prostu oznacza to, że akcja (napisana w polityce) nie dotyczy zasobu. Próbowałem upublicznić moje wiadro, aby każdy mógł go pobrać. Pojawiał się błąd, dopóki nie usunąłem („s3: ListBucket”) z mojego wyciągu.
Ponieważ zasobnik listy nie ma zastosowania w zasobniku, dlatego usunięcie tej polityki akcji działało dobrze.
źródło
Po prostu napotkałem ten problem i znalazłem krótsze rozwiązanie dla tych, którzy chcą mieć ListBucket i GetObject w tej samej polityce.
źródło
Principal
nie jest dozwolone w gramatyce zasad S3.Z podobnym problemem spotkałem się również podczas tworzenia wiadra
Zmieniłem powyższy kod na
dodaj / * do nazwy zasobnika, rozwiąże to problem
Tutaj moja nazwa wiadra to mrt9949
źródło
W moim przypadku rozwiązaniem tego błędu była próba usunięcia niektórych akcji, które stosowałem. Niektóre z nich nie dotyczą tego zasobu lub nie mogą z nim współpracować. W tym przypadku nie pozwoliłoby mi dołączyć tych:
GetBucketAcl ListBucket ListBucketMultipartUploads
źródło
Musisz sprawdzić wzorzec arn zdefiniowany w tagu Resource dla Policy-
„Zasób”: „arn: aws: s3 ::: s3nazwazbioru / *”
Dodanie „/ *” na końcu pomogłoby rozwiązać problem, jeśli napotkasz go nawet po odblokowaniu polityki dostępu publicznego dla twojego Bucket.
źródło
źródło
Możesz także skonfigurować ListBuckets dla każdego folderu, na przykład
Reguły te są używane razem z SES do odbierania wiadomości e-mail, ale umożliwiają zewnętrznemu użytkownikowi przeglądanie plików, które zostały umieszczone w wiadrze przez SES. Postępowałem zgodnie z instrukcjami tutaj: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/
Ponadto
domain.co/user/
podczas korzystania z zestawu SDK należy określić przedrostek jako ukośnik WITH na końcu, w przeciwnym razie odmowa dostępu. mam nadzieję, że to pomoże każdemuźródło