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.
Schreibe einen Kommentar