analysis
This commit is contained in:
		
					parent
					
						
							
								3f5d8e2211
							
						
					
				
			
			
				commit
				
					
						bc6e606014
					
				
			
		
					 1 changed files with 42 additions and 0 deletions
				
			
		| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					[[!comment format=mdwn
 | 
				
			||||||
 | 
					 username="joey"
 | 
				
			||||||
 | 
					 subject="""comment 5"""
 | 
				
			||||||
 | 
					 date="2023-01-31T18:45:08Z"
 | 
				
			||||||
 | 
					 content="""
 | 
				
			||||||
 | 
					Firstly, this code is working, as far as I know, when accessing AWS.
 | 
				
			||||||
 | 
					And I want to be very careful to avoid breaking that. So patching all
 | 
				
			||||||
 | 
					that out would have to be very carefully examined and/or tested.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I've verified that the s3Endpoint is supposed to be a hostname. It's
 | 
				
			||||||
 | 
					used as such in s3SignQuery:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						(host, path) = case s3RequestStyle of
 | 
				
			||||||
 | 
						               PathStyle   -> ([Just s3Endpoint], [Just "/", fmap (`B8.snoc` '/') s3QBucket, urlEncodedS3QObject])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If s3Endpoint were just "garage" that would break.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					s3SignQuery also has `region = s3ExtractRegion s3Endpoint`.
 | 
				
			||||||
 | 
					s3ExtractRegion parses a hostname like
 | 
				
			||||||
 | 
					"s3-foo.amazonaws.com" to "foo", and that is used as the region
 | 
				
			||||||
 | 
					(or "scope" as you've called it).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					git-annex makes sure to set s3Endpoint to a hostname. When the
 | 
				
			||||||
 | 
					default AWS hostname is used, it converts the datacenter=foo value
 | 
				
			||||||
 | 
					to a hostname like s3-foo.amazonaws.com and sets s3Endpoint to that.
 | 
				
			||||||
 | 
					When some other hostname= is provided, it set s3Endpoints to
 | 
				
			||||||
 | 
					that hostname, ignoring the datacenter= value. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This seems like the only thing git-annex *can* do. Your proposed
 | 
				
			||||||
 | 
					patch would make a configuration of "datacenter=us-west-1" set
 | 
				
			||||||
 | 
					s3Endpoint to "us-west-1" and s3SignQuery would use that as the
 | 
				
			||||||
 | 
					host. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					So I think this is probably a bug or shortcoming of the aws library.
 | 
				
			||||||
 | 
					It seems that to fix this, the aws library would need to have
 | 
				
			||||||
 | 
					a way to specify a "scope" or "region" separate from the s3Endpoint.
 | 
				
			||||||
 | 
					And git-annex would then need to expose that as something other
 | 
				
			||||||
 | 
					than datacenter=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I've filed an issue on aws about this:
 | 
				
			||||||
 | 
					<https://github.com/aristidb/aws/issues/283>
 | 
				
			||||||
 | 
					"""]]
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue