s3cmd does have special handling for 'US' and 'us-east-1' that skips the LocationConstraint on bucket creation:

https://github.com/s3tools/s3cmd/blob/master/S3/S3.py#L380


On 02/26/2018 05:16 PM, David Turner wrote:
I just realized the difference between the internal realm, local realm, and local-atl realm.  local-atl is a Luminous cluster while the other 2 are Jewel.  It looks like that option was completely ignored in Jewel and now Luminous is taking it into account (which is better imo).  I think you're right that 'us' is probably some sort of default in s3cmd that doesn't actually send the variable to the gateway.

Unfortunately we only allow https for rgw in the environments I have set up, but I think we found the cause of the initial randomness of things.  Thanks Yehuda.

On Mon, Feb 26, 2018 at 4:26 PM Yehuda Sadeh-Weinraub <yeh...@redhat.com <mailto:yeh...@redhat.com>> wrote:

    I don't know why 'us' works for you, but it could be that s3cmd is
    just not sending any location constraint when 'us' is set. You can try
    looking at the capture for this. You can try using wireshark for the
    capture (assuming http endpoint and not https).

    Yehuda

    On Mon, Feb 26, 2018 at 1:21 PM, David Turner
    <drakonst...@gmail.com <mailto:drakonst...@gmail.com>> wrote:
    > I set it to that for randomness.  I don't have a zonegroup named
    'us'
    > either, but that works fine.  I don't see why 'cn' should be any
    different.
    > The bucket_location that triggered me noticing this was 'gd1'. 
    I don't know
    > where that one came from, but I don't see why we should force
    people setting
    > it to 'us' when that has nothing to do with the realm. If it
    needed to be
    > set to 'local-atl' that would make sense, but 'us' works just
    fine.  Perhaps
    > 'us' working is what shouldn't work as opposed to allowing
    whatever else to
    > be able to work.
    >
    > I tested setting bucket_location to 'local-atl' and it did
    successfully
    > create the bucket.  So the question becomes, why do my other
    realms not care
    > what that value is set to and why does this realm allow 'us' to
    be used when
    > it isn't correct?
    >
    > On Mon, Feb 26, 2018 at 4:12 PM Yehuda Sadeh-Weinraub
    <yeh...@redhat.com <mailto:yeh...@redhat.com>>
    > wrote:
    >>
    >> If that's what you set in the config file, I assume that's what
    passed
    >> in. Why did you set that in your config file? You don't have a
    >> zonegroup named 'cn', right?
    >>
    >> On Mon, Feb 26, 2018 at 1:10 PM, David Turner
    <drakonst...@gmail.com <mailto:drakonst...@gmail.com>>
    >> wrote:
    >> > I'm also not certain how to do the tcpdump for this.  Do you
    have any
    >> > pointers to how to capture that for you?
    >> >
    >> > On Mon, Feb 26, 2018 at 4:09 PM David Turner
    <drakonst...@gmail.com <mailto:drakonst...@gmail.com>>
    >> > wrote:
    >> >>
    >> >> That's what I set it to in the config file. I probably
    should have
    >> >> mentioned that.
    >> >>
    >> >> On Mon, Feb 26, 2018 at 4:07 PM Yehuda Sadeh-Weinraub
    >> >> <yeh...@redhat.com <mailto:yeh...@redhat.com>>
    >> >> wrote:
    >> >>>
    >> >>> According to the log here, it says that the location
    constraint it got
    >> >>> is "cn", can you take a look at a tcpdump, see if that's
    actually
    >> >>> what's passed in?
    >> >>>
    >> >>> On Mon, Feb 26, 2018 at 12:02 PM, David Turner
    <drakonst...@gmail.com <mailto:drakonst...@gmail.com>>
    >> >>> wrote:
    >> >>> > I run with `debug rgw = 10` and was able to find these
    lines at the
    >> >>> > end
    >> >>> > of a
    >> >>> > request to create the bucket.
    >> >>> >
    >> >>> > Successfully creating a bucket with `bucket_location =
    US` looks
    >> >>> > like
    >> >>> > [1]this.  Failing to create a bucket has "ERROR: S3
    error: 400
    >> >>> > (InvalidLocationConstraint): The specified
    location-constraint is
    >> >>> > not
    >> >>> > valid"
    >> >>> > on the CLI and [2]this (excerpt from the end of the
    request) in the
    >> >>> > rgw
    >> >>> > log
    >> >>> > (debug level 10).  "create bucket location constraint"
    was not found
    >> >>> > in
    >> >>> > the
    >> >>> > log for successfully creating the bucket.
    >> >>> >
    >> >>> >
    >> >>> > [1]
    >> >>> > 2018-02-26 19:52:36.419251 7f4bc9bc8700 10 cache put:
    >> >>> >
    >> >>> >
    >> >>> >
    
name=local-atl.rgw.data.root++.bucket.meta.testerton:bef43c26-daf3-47ef-a3a5-e1167e3f88ac.39099765.1
    >> >>> > info.flags=0x17
    >> >>> > 2018-02-26 19:52:36.419262 7f4bc9bc8700 10 adding
    >> >>> >
    >> >>> >
    >> >>> >
    
local-atl.rgw.data.root++.bucket.meta.testerton:bef43c26-daf3-47ef-a3a5-e1167e3f88ac.39099765.1
    >> >>> > to cache LRU end
    >> >>> > 2018-02-26 19:52:36.419266 7f4bc9bc8700 10 updating xattr:
    >> >>> > name=user.rgw.acl
    >> >>> > bl.length()=141
    >> >>> > 2018-02-26 19:52:36.423863 7f4bc9bc8700 10
    >> >>> > RGWWatcher::handle_notify()
    >> >>> > notify_id 344855809097728 cookie 139963970426880 notifier
    39099765
    >> >>> > bl.length()=361
    >> >>> > 2018-02-26 19:52:36.423875 7f4bc9bc8700 10 cache put:
    >> >>> > name=local-atl.rgw.data.root++testerton info.flags=0x17
    >> >>> > 2018-02-26 19:52:36.423882 7f4bc9bc8700 10 adding
    >> >>> > local-atl.rgw.data.root++testerton to cache LRU end
    >> >>> >
    >> >>> > [2]
    >> >>> > 2018-02-26 19:43:37.340289 7f466bbca700  2 req
    >> >>> > 428078:0.004204:s3:PUT
    >> >>> > /testraint/:create_bucket:executing
    >> >>> > 2018-02-26 19:43:37.340366 7f466bbca700  5 NOTICE: call to
    >> >>> > do_aws4_auth_completion
    >> >>> > 2018-02-26 19:43:37.340472 7f466bbca700 10 v4 auth ok --
    >> >>> > do_aws4_auth_completion
    >> >>> > 2018-02-26 19:43:37.340715 7f466bbca700 10 create bucket
    location
    >> >>> > constraint: cn
    >> >>> > 2018-02-26 19:43:37.340766 7f466bbca700  0 location
    constraint (cn)
    >> >>> > can't be
    >> >>> > found.
    >> >>> > 2018-02-26 19:43:37.340794 7f466bbca700  2 req
    >> >>> > 428078:0.004701:s3:PUT
    >> >>> > /testraint/:create_bucket:completing
    >> >>> > 2018-02-26 19:43:37.341782 7f466bbca700  2 req
    >> >>> > 428078:0.005689:s3:PUT
    >> >>> > /testraint/:create_bucket:op status=-2208
    >> >>> > 2018-02-26 19:43:37.341792 7f466bbca700  2 req
    >> >>> > 428078:0.005707:s3:PUT
    >> >>> > /testraint/:create_bucket:http status=400
    >> >>> >
    >> >>> > On Mon, Feb 26, 2018 at 2:36 PM Yehuda Sadeh-Weinraub
    >> >>> > <yeh...@redhat.com <mailto:yeh...@redhat.com>>
    >> >>> > wrote:
    >> >>> >>
    >> >>> >> I'm not sure if the rgw logs (debug rgw = 20) specify
    explicitly
    >> >>> >> why a
    >> >>> >> bucket creation is rejected in these cases, but it might
    be worth
    >> >>> >> trying to look at these. If not, then a tcpdump of the
    specific
    >> >>> >> failed
    >> >>> >> request might shed some light (would be interesting to
    look at the
    >> >>> >> generated LocationConstraint).
    >> >>> >>
    >> >>> >> Yehuda
    >> >>> >>
    >> >>> >> On Mon, Feb 26, 2018 at 11:29 AM, David Turner
    >> >>> >> <drakonst...@gmail.com <mailto:drakonst...@gmail.com>>
    >> >>> >> wrote:
    >> >>> >> > Our problem only appeared to be present in bucket
    creation.
    >> >>> >> > Listing,
    >> >>> >> > putting, etc objects in a bucket work just fine
    regardless of the
    >> >>> >> > bucket_location setting. I ran this test on a few
    different
    >> >>> >> > realms
    >> >>> >> > to
    >> >>> >> > see
    >> >>> >> > what would happen and only 1 of them had a problem. 
    There isn't
    >> >>> >> > an
    >> >>> >> > obvious
    >> >>> >> > thing that steps out about it.  The 2 local realms do
    not have
    >> >>> >> > multi-site,
    >> >>> >> > the internal realm has multi-site and the operations were
    >> >>> >> > performed
    >> >>> >> > on
    >> >>> >> > the
    >> >>> >> > primary zone for the zonegroup.
    >> >>> >> >
    >> >>> >> > Worked with non 'US' bucket_location for s3cmd to
    create bucket:
    >> >>> >> > realm=internal
    >> >>> >> > zonegroup=internal-ga
    >> >>> >> > zone=internal-atl
    >> >>> >> >
    >> >>> >> > Failed with non 'US' bucket_location for s3cmd to
    create bucket:
    >> >>> >> > realm=local-atl
    >> >>> >> > zonegroup=local-atl
    >> >>> >> > zone=local-atl
    >> >>> >> >
    >> >>> >> > Worked with non 'US' bucket_location for s3cmd to
    create bucket:
    >> >>> >> > realm=local
    >> >>> >> > zonegroup=local
    >> >>> >> > zone=local
    >> >>> >> >
    >> >>> >> > I was thinking it might have to do with all of the
    parts being
    >> >>> >> > named
    >> >>> >> > the
    >> >>> >> > same, but I made sure to do the last test to confirm.
    >> >>> >> > Interestingly
    >> >>> >> > it's
    >> >>> >> > only bucket creation that has a problem and it's fine
    as long as
    >> >>> >> > I
    >> >>> >> > put
    >> >>> >> > 'US'
    >> >>> >> > as the bucket_location.
    >> >>> >> >
    >> >>> >> > On Mon, Feb 19, 2018 at 6:48 PM F21
    <f21.gro...@gmail.com <mailto:f21.gro...@gmail.com>> wrote:
    >> >>> >> >>
    >> >>> >> >> I am using the official ceph/daemon docker image. It
    starts RGW
    >> >>> >> >> and
    >> >>> >> >> creates a zonegroup and zone with their names set to
    an empty
    >> >>> >> >> string:
    >> >>> >> >>
    >> >>> >> >>
    >> >>> >> >>
    >> >>> >> >>
    >> >>> >> >>
    
https://github.com/ceph/ceph-container/blob/master/ceph-releases/luminous/ubuntu/16.04/daemon/start_rgw.sh#L36:54
    >> >>> >> >>
    >> >>> >> >> $RGW_ZONEGROUP and $RGW_ZONE are both empty strings
    by default:
    >> >>> >> >>
    >> >>> >> >>
    >> >>> >> >>
    >> >>> >> >>
    >> >>> >> >>
    
https://github.com/ceph/ceph-container/blob/master/ceph-releases/luminous/ubuntu/16.04/daemon/variables_entrypoint.sh#L46
    >> >>> >> >>
    >> >>> >> >> Here's what I get when I query RGW:
    >> >>> >> >>
    >> >>> >> >> $ radosgw-admin zonegroup list
    >> >>> >> >> {
    >> >>> >> >>      "default_info": "",
    >> >>> >> >>      "zonegroups": [
    >> >>> >> >>          "default"
    >> >>> >> >>      ]
    >> >>> >> >> }
    >> >>> >> >>
    >> >>> >> >> $ radosgw-admin zone list
    >> >>> >> >> {
    >> >>> >> >>      "default_info": "",
    >> >>> >> >>      "zones": [
    >> >>> >> >>          "default"
    >> >>> >> >>      ]
    >> >>> >> >> }
    >> >>> >> >>
    >> >>> >> >> On 20/02/2018 10:33 AM, Yehuda Sadeh-Weinraub wrote:
    >> >>> >> >> > What is the name of your zonegroup?
    >> >>> >> >> >
    >> >>> >> >> > On Mon, Feb 19, 2018 at 3:29 PM, F21
    <f21.gro...@gmail.com <mailto:f21.gro...@gmail.com>>
    >> >>> >> >> > wrote:
    >> >>> >> >> >> I've done some debugging and the
    LocationConstraint is not
    >> >>> >> >> >> being
    >> >>> >> >> >> set
    >> >>> >> >> >> by
    >> >>> >> >> >> the
    >> >>> >> >> >> SDK by default.
    >> >>> >> >> >>
    >> >>> >> >> >> I do, however, need to set the region on the client to
    >> >>> >> >> >> us-east-1
    >> >>> >> >> >> for
    >> >>> >> >> >> it
    >> >>> >> >> >> to
    >> >>> >> >> >> work. Anything else will return an
    InvalidLocationConstraint
    >> >>> >> >> >> error.
    >> >>> >> >> >>
    >> >>> >> >> >> Francis
    >> >>> >> >> >>
    >> >>> >> >> >>
    >> >>> >> >> >> On 20/02/2018 8:40 AM, Yehuda Sadeh-Weinraub wrote:
    >> >>> >> >> >>> Sounds like the go sdk adds a location constraint to
    >> >>> >> >> >>> requests
    >> >>> >> >> >>> that
    >> >>> >> >> >>> don't go to us-east-1. RGW itself is definitely
    isn't tied
    >> >>> >> >> >>> to
    >> >>> >> >> >>> us-east-1, and does not know anything about it
    (unless you
    >> >>> >> >> >>> happen
    >> >>> >> >> >>> to
    >> >>> >> >> >>> have a zonegroup named us-east-1). Maybe there's
    a way to
    >> >>> >> >> >>> configure
    >> >>> >> >> >>> the sdk to avoid doing that?
    >> >>> >> >> >>>
    >> >>> >> >> >>> Yehuda
    >> >>> >> >> >>>
    >> >>> >> >> >>> On Sun, Feb 18, 2018 at 1:54 PM, F21
    <f21.gro...@gmail.com <mailto:f21.gro...@gmail.com>>
    >> >>> >> >> >>> wrote:
    >> >>> >> >> >>>> I am using the AWS Go SDK v2
    >> >>> >> >> >>>> (https://github.com/aws/aws-sdk-go-v2)
    >> >>> >> >> >>>> to
    >> >>> >> >> >>>> talk
    >> >>> >> >> >>>> to my RGW instance using the s3 interface. I am
    running
    >> >>> >> >> >>>> ceph
    >> >>> >> >> >>>> in
    >> >>> >> >> >>>> docker
    >> >>> >> >> >>>> using
    >> >>> >> >> >>>> the ceph/daemon docker images in demo mode. The
    RGW is
    >> >>> >> >> >>>> started
    >> >>> >> >> >>>> with a
    >> >>> >> >> >>>> zonegroup and zone with their names set to an
    empty string
    >> >>> >> >> >>>> by
    >> >>> >> >> >>>> the
    >> >>> >> >> >>>> scripts
    >> >>> >> >> >>>> in
    >> >>> >> >> >>>> the image.
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> I have ForcePathStyle for the client set to
    true, because I
    >> >>> >> >> >>>> want
    >> >>> >> >> >>>> to
    >> >>> >> >> >>>> access
    >> >>> >> >> >>>> all my buckets using the path:
    >> >>> >> >> >>>> myrgw.instance:8080/somebucket.
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> I noticed that if I set the region for the client to
    >> >>> >> >> >>>> anything
    >> >>> >> >> >>>> other
    >> >>> >> >> >>>> than
    >> >>> >> >> >>>> us-east-1, I get this error when creating a bucket:
    >> >>> >> >> >>>> InvalidLocationConstraint: The specified
    >> >>> >> >> >>>> location-constraint
    >> >>> >> >> >>>> is
    >> >>> >> >> >>>> not
    >> >>> >> >> >>>> valid.
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> If I set the region in the client to something
    made up,
    >> >>> >> >> >>>> such
    >> >>> >> >> >>>> as
    >> >>> >> >> >>>> "ceph"
    >> >>> >> >> >>>> and
    >> >>> >> >> >>>> the LocationConstraint to "ceph", I still get
    the same
    >> >>> >> >> >>>> error.
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> The only way to get my buckets to create
    successfully is to
    >> >>> >> >> >>>> set
    >> >>> >> >> >>>> the
    >> >>> >> >> >>>> client's
    >> >>> >> >> >>>> region to us-east-1. I have grepped the ceph
    code base and
    >> >>> >> >> >>>> cannot
    >> >>> >> >> >>>> find
    >> >>> >> >> >>>> any
    >> >>> >> >> >>>> references to us-east-1. In addition, I looked
    at the AWS
    >> >>> >> >> >>>> docs
    >> >>> >> >> >>>> for
    >> >>> >> >> >>>> calculating v4 signatures and us-east-1 is the
    default
    >> >>> >> >> >>>> region
    >> >>> >> >> >>>> but
    >> >>> >> >> >>>> I
    >> >>> >> >> >>>> can
    >> >>> >> >> >>>> see
    >> >>> >> >> >>>> that the region string is used in the
    calculation (i.e. the
    >> >>> >> >> >>>> region
    >> >>> >> >> >>>> is
    >> >>> >> >> >>>> not
    >> >>> >> >> >>>> ignored when calculating the signature if it is
    set to
    >> >>> >> >> >>>> us-east-1).
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> Why do my buckets create successfully if I set
    the region
    >> >>> >> >> >>>> in
    >> >>> >> >> >>>> my s3
    >> >>> >> >> >>>> client
    >> >>> >> >> >>>> to
    >> >>> >> >> >>>> us-east-1, but not otherwise? If I do not want
    to use
    >> >>> >> >> >>>> us-east-1 as
    >> >>> >> >> >>>> my
    >> >>> >> >> >>>> default region, for example, if I want us-west-1
    as my
    >> >>> >> >> >>>> default
    >> >>> >> >> >>>> region,
    >> >>> >> >> >>>> what
    >> >>> >> >> >>>> should I be configuring in ceph?
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> Thanks,
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> Francis
    >> >>> >> >> >>>>
    >> >>> >> >> >>>> _______________________________________________
    >> >>> >> >> >>>> ceph-users mailing list
    >> >>> >> >> >>>> ceph-users@lists.ceph.com
    <mailto:ceph-users@lists.ceph.com>
    >> >>> >> >> >>>>
    http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
    >> >>> >> >> >>
    >> >>> >> >> >>
    >> >>> >> >>
    >> >>> >> >> _______________________________________________
    >> >>> >> >> ceph-users mailing list
    >> >>> >> >> ceph-users@lists.ceph.com
    <mailto:ceph-users@lists.ceph.com>
    >> >>> >> >> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com



_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to