Repository: rusoto/rusoto (language: rust)

Issue:
Wrong S3 Domain
Using `rusoto_s3 = "0.43.0-beta.1"`

```
    let client = S3Client::new(Region::UsEast1);
    client
            .get_object(GetObjectRequest {
                bucket,
                key,
                ..GetObjectRequest::default()
            })
            .await


// final_uri: https://s3.amazonaws.com/
// RusotoError("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>PermanentRedirect</Code><Message>The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.<
```

it seems like neither the region nor the bucket subdomain is specified in the S3 Domain generated. Is there something I'm missing here?


Discussion / hints:
I dug around a bit more - here's the deal:

```
        "s3" => match *region {
            Region::Custom { ref endpoint, .. } => extract_hostname(endpoint).to_owned(),
            Region::UsEast1 => "s3.amazonaws.com".to_string(),
            Region::CnNorth1 | Region::CnNorthwest1 => {
                format!("s3.{}.amazonaws.com.cn", region.name())
            }
            _ => format!("s3-{}.amazonaws.com", region.name()),
        },
```

I thought my bucket was in `UsEast1` but it's actually in `UsEast2`. `s3.amazonaws.com` is the default and works for `UsEast1`, however, I don't think being more specific actually hurts anything. 

Recommendation: remove UsEast1 match arm.

Fix patch:
diff --git a/rusoto/signature/src/signature.rs b/rusoto/signature/src/signature.rs
index 70b7b61a487..ab5bbfa9297 100644
--- a/rusoto/signature/src/signature.rs
+++ b/rusoto/signature/src/signature.rs
@@ -821,11 +821,10 @@ fn build_hostname(service: &str, region: &Region) -> String {
         },
         "s3" => match *region {
             Region::Custom { ref endpoint, .. } => extract_hostname(endpoint).to_owned(),
-            Region::UsEast1 => "s3.amazonaws.com".to_string(),
             Region::CnNorth1 | Region::CnNorthwest1 => {
                 format!("s3.{}.amazonaws.com.cn", region.name())
             }
-            _ => format!("s3-{}.amazonaws.com", region.name()),
+            _ => format!("s3.{}.amazonaws.com", region.name()),
         },
         "route53" => match *region {
             Region::Custom { ref endpoint, .. } => extract_hostname(endpoint).to_owned(),


Test patch: