Unterschiedliches Verhalten für "aws-s3-ls" und "aws s3api Liste-Objekte"
Sehe ich das unterschiedliche Verhalten für aws s3 ls und aws s3api Liste-Eimer
Hier ist die 1. ein:
$ aws s3 ls s3://demo.for.customers
Bucket: demo.for.customers
Prefix:
LastWriteTime Length Name
------------- ------ ----
PRE 5CE4D191-FD14-4C85-8146-9FB8C29B7A7B/
PRE FFBC4675-F864-40E9-8AB8-BDF7A0437010/
So, ich bin in der Lage, um eine Liste der Objekte in den Eimer demo.für.Kunden
Nun, Wenn ich das gleiche mit s3api, bekomme ich Zugriff verweigert:
$ aws s3api list-objects --bucket demo.for.customers
A client error (AccessDenied) occurred: Access Denied
FRAGE: Warum bekomme ich Zugriff verweigert für die Auflistung von Objekten über s3api.
Der Grund, ich Hebe diese Fragen ist, dass ich das gleiche problem, wenn ich AWS-S3-Ruby-SDK.
Jedoch, Dinge sind in Ordnung, wenn ich aws s3 ls.
Also die AWS-S3-Ruby-SDK und die aws s3api zeigen das gleiche Verhalten. So, ich bin einfügen nur die aws s3api CLI Problem hier.
BTW, hier ist die IAM-Richtlinie, die angewendet wurde, um die Benutzer, die laufen alle oben genannten Befehle:
{
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::"
]
},
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::demo.for.customers"
],
"Condition": {
"StringEquals": {
"s3:prefix": [
"",
"FFBC4675-F864-40E9-8AB8-BDF7A0437010/"
],
"s3:delimiter": [
"/"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::demo.for.customers/FFBC4675-F864-40E9-8AB8-BDF7A0437010/"
]
}
]
}
Und hier ist die ruby code erzeugt genau denselben Fehler;
#!/usr/bin/ruby
require 'aws-sdk'
require 'awesome_print'
AWS.config( :access_key_id => 'whatever',
:secret_access_key => 'again whatever',
:region => 'us-west-2')
s3 = AWS.s3
buckets = s3.client.list_objects(:bucket_name => "demo.for.customers")
ap buckets
und die Ausgabe ist:
# ruby s3policies.rb
/var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/core/client.rb:366:in `return_or_raise': Access Denied (AWS::S3::Errors::AccessDenied)
- Ich lief in dieses Problem bereits heute. Ich ging zu meinem Eimer und den ausgewählten Eigenschaften verändert und die Berechtigungen auf "Authentifizierte Benutzer" und jetzt ist alles gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf der Rolle, die Sie definiert haben, einem Aufruf von list-Objekten erfordert sowohl ein Präfix und Trennzeichen.
Den folgenden Befehl wird für Sie arbeiten:
Wenn Sie entfernen Sie die Trennzeichen Zustand in Ihrem ListBucket Politik, dann wird dies für Sie arbeiten:
Und wenn Sie auch entfernen Sie die Präfix-Bedingung, dann wird dies für Sie arbeiten:
Eine gute Möglichkeit zum testen der oben genannten ist Ihre doppelte Rolle, die Politik und die schrittweise entfernen von Bedingungen, bis es funktioniert wie erwartet.
Stellen Sie sicher, dass aus der Stelle (Verzeichnis), wo Sie dieses Dienstprogramm ausführen, die richtigen Berechtigungen festgelegt.
Verzeichnis sollten haben die richtigen Besitzer (Eigentümer sollte der Benutzer die Ausführung dieses Dienstprogramms nicht root oder einem anderen Benutzer)und über ausreichende Berechtigungen für das erstellen von Ordnern.