| 
									
										
										
										
											2022-07-19 14:51:44 +02:00
										 |  |  | from airflow.configuration import conf | 
					
						
							|  |  |  | from pydantic import SecretStr | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-22 08:43:23 +02:00
										 |  |  | from metadata.generated.schema.entity.services.connections.metadata.secretsManagerProvider import ( | 
					
						
							| 
									
										
										
										
											2022-07-19 14:51:44 +02:00
										 |  |  |     SecretsManagerProvider, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | from metadata.generated.schema.security.credentials.awsCredentials import AWSCredentials | 
					
						
							| 
									
										
										
										
											2022-08-19 16:15:40 +02:00
										 |  |  | from metadata.utils.secrets.secrets_manager import SECRET_MANAGER_AIRFLOW_CONF | 
					
						
							| 
									
										
										
										
											2022-07-19 14:51:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def build_aws_credentials(): | 
					
						
							| 
									
										
										
										
											2022-08-09 09:00:43 +02:00
										 |  |  |     if conf.has_section(SECRET_MANAGER_AIRFLOW_CONF): | 
					
						
							|  |  |  |         credentials = AWSCredentials( | 
					
						
							|  |  |  |             awsRegion=conf.get(SECRET_MANAGER_AIRFLOW_CONF, "aws_region", fallback="") | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         credentials.awsAccessKeyId = conf.get( | 
					
						
							|  |  |  |             SECRET_MANAGER_AIRFLOW_CONF, "aws_access_key_id", fallback="" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         credentials.awsSecretAccessKey = SecretStr( | 
					
						
							|  |  |  |             conf.get(SECRET_MANAGER_AIRFLOW_CONF, "aws_secret_access_key", fallback="") | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         return credentials | 
					
						
							|  |  |  |     return None | 
					
						
							| 
									
										
										
										
											2022-07-19 14:51:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def build_secrets_manager_credentials(secrets_manager: SecretsManagerProvider): | 
					
						
							|  |  |  |     if secrets_manager == SecretsManagerProvider.aws: | 
					
						
							|  |  |  |         return build_aws_credentials() | 
					
						
							| 
									
										
										
										
											2022-08-19 16:15:40 +02:00
										 |  |  |     if secrets_manager == SecretsManagerProvider.aws_ssm: | 
					
						
							|  |  |  |         return build_aws_credentials() | 
					
						
							| 
									
										
										
										
											2022-07-19 14:51:44 +02:00
										 |  |  |     else: | 
					
						
							|  |  |  |         return None |