Postępowałem zgodnie z przykładem na http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-s3, aby dowiedzieć się, jak przyznać użytkownikowi dostęp tylko do jednego zasobnika.
Następnie przetestowałem konfigurację za pomocą wtyczki W3 Total Cache Wordpress. Test nie powiódł się.
Próbowałem również odtworzyć problem za pomocą
aws s3 cp --acl=public-read --cache-control='max-age=604800, public' ./test.txt s3://my-bucket/
i to się nie udało
upload failed: ./test.txt to s3://my-bucket/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied
Dlaczego nie mogę przesłać do mojego zasobnika?
Miałem podobny problem. Nie używałem rzeczy ACL, więc nie potrzebowałem
s3:PutObjectAcl
.W moim przypadku robiłem (w Serverless Framework YML):
Zamiast:
Co dodaje
/*
na końcu wiadra ARN.Mam nadzieję że to pomoże.
źródło
Po prostu waliłem głową w ścianę, próbując zmusić przesyłanie S3 do pracy z dużymi plikami. Początkowo mój błąd brzmiał:
Potem spróbowałem skopiować mniejszy plik i otrzymałem:
Mogłem wyświetlać obiekty w porządku, ale nie mogłem zrobić nic innego, mimo że miałem
s3:*
uprawnienia w mojej polityce roli. Skończyło się na tym, że przerobiłem politykę na następującą:Teraz mogę przesłać dowolny plik. Zastąp
my-bucket
nazwą swojego zasobnika. Mam nadzieję, że to pomoże komuś, kto przez to przechodzi.źródło
"Resource": "*"
.Na wypadek, gdyby to pomogło komuś innemu, w moim przypadku używałem CMK (działało dobrze, używając domyślnego klucza aws / s3)
Musiałem przejść do mojej definicji klucza szyfrowania w IAM i dodać programistycznego użytkownika zalogowanego do boto3 do listy użytkowników, którzy „mogą używać tego klucza do szyfrowania i odszyfrowywania danych z poziomu aplikacji oraz podczas korzystania z usług AWS zintegrowanych z KMS”.
źródło
Miałem podobny problem z przesyłaniem do zasobnika S3 chronionego szyfrowaniem KWS. Mam minimalne zasady, które pozwalają na dodawanie obiektów pod określonym kluczem s3.
Musiałem dodać następujące uprawnienia KMS do moich zasad, aby umożliwić roli umieszczanie obiektów w zasobniku. (Może być nieco więcej niż jest to wymagane)
źródło
aws/s3
klucza zarządzanego do zasad IAM dołączonych do roli (nie w zasadach KMS) i działa dobrze. Jedyne działania potrzebowałem przeciwko KMS Arns były:kms:Encrypt
,kms:Decrypt
,kms:ReEncrypt*
,kms:GenerateDataKey*
,kms:DescribeKey
. Potem tylko standardowe uprawnienia S3.Otrzymałem ten sam komunikat o błędzie dotyczący błędu, który popełniłem: Upewnij się, że używasz prawidłowego s3 URI, takiego jak:
s3://my-bucket-name/
(Jeśli my-bucket-name jest oczywiście w katalogu głównym twojego aws s3)
Nalegam na to, ponieważ podczas kopiowania wklejania wiadra s3 z przeglądarki dostajesz coś takiego
https://s3.console.aws.amazon.com/s3/buckets/my-bucket-name/?region=my-aws-regiontab=overview
Tak więc popełniłem błąd, używając,
s3://buckets/my-bucket-name
które podnosi:An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
źródło
U mnie korzystałem z wygasłych kluczy uwierzytelniających. Wygenerowałem nowe i boom.
źródło
Podobnie jak w jednym poście powyżej (z wyjątkiem tego, że korzystałem z poświadczeń administratora), aby załadować S3 do pracy z dużym plikiem 50M.
Początkowo mój błąd brzmiał:
Zmieniłem multipart_threshold, aby był powyżej 50M
i dostałem:
Sprawdziłem ustawienia publicznego dostępu do zasobnika i wszystko jest dozwolone. Stwierdziłem więc, że dostęp publiczny można zablokować na poziomie konta dla wszystkich zasobników S3 :
źródło
Jeśli ustawiłeś dostęp publiczny do zasobnika i nadal nie działa, edytuj zasadę zasobnika i wklej:
źródło
Jeśli określono własny klucz KMS zarządzany przez klienta do szyfrowania S3, musisz również podać flagę
--server-side-encryption aws:kms
, na przykład:aws s3api put-object --bucket bucket --key objectKey --body /path/to/file --server-side-encryption aws:kms
Jeśli nie dodasz flagi,
--server-side-encryption aws:kms
CLI wyświetliAccessDenied
błądźródło
Udało mi się rozwiązać ten problem, udzielając pełnego dostępu s3 do Lambda z polityk. Utwórz nową rolę dla Lambda i dołącz politykę z pełnym dostępem S3 do niej.
Mam nadzieję, że to pomoże.
źródło
Napotkałem ten sam problem. Mój zasobnik był prywatny i miał szyfrowanie KMS. Udało mi się rozwiązać ten problem, dodając dodatkowe uprawnienia KMS w roli. Poniższa lista to absolutny minimalny zestaw potrzebnych ról.
Źródła: https://aws.amazon.com/premiumsupport/knowledge-center/s3-large-file-encryption-kms-key/
źródło