def __init__(self, name, environment='', env_sample_file='', timeout_seconds=None, version=None, build_args=None, dockerfile=None, ssh=None, cache_from=None, deployment_identifier=None, working_dir='.'): self.name = name self.environment = environment self.deployment_identifier = deployment_identifier self.env_sample_file = env_sample_file self.timeout_seconds = timeout_seconds self.version = version self.ecr_client = boto3.session.Session(region_name=self.region).client('ecr') self.cluster_name = get_cluster_name(environment) self.service_configuration = ServiceConfiguration(service_name=name, environment=environment).get_config() self.service_info_fetcher = ServiceInformationFetcher(self.name, self.environment, self.service_configuration) if not self.service_info_fetcher.stack_found: raise UnrecoverableException( "error finding stack in ServiceUpdater: {}-{}".format(self.name, self.environment)) ecr_repo_config = self.service_configuration.get('ecr_repo') self.ecr = ECR( self.region, ecr_repo_config.get('name', spinalcase(self.name + '-repo')), ecr_repo_config.get('account_id', get_account_id()), ecr_repo_config.get('assume_role_arn', None), version, build_args, dockerfile, working_dir, ssh, cache_from )
def get_mfa_session(mfa_code=None, region='ap-south-1'): username = get_username() if not mfa_code: mfa_code = input("MFA Code: ") mfa_arn = "arn:aws:iam::%s:mfa/%s" % (get_account_id(), username) log_bold("Using credentials for " + username) try: session_params = client('sts').get_session_token( DurationSeconds=900, SerialNumber=mfa_arn, TokenCode=str(mfa_code)) credentials = session_params['Credentials'] return Session(aws_access_key_id=credentials['AccessKeyId'], aws_secret_access_key=credentials['SecretAccessKey'], aws_session_token=credentials['SessionToken'], region_name=region) except botocore.exceptions.ClientError as client_error: raise UnrecoverableException(str(client_error))
def do_mfa_login(mfa_code=None, region='ap-south-1'): username = get_username() if not mfa_code: mfa_code = input("MFA Code: ") mfa_arn = "arn:aws:iam::%s:mfa/%s" % (get_account_id(), username) log_bold("Using credentials for " + username) try: session_params = client('sts').get_session_token( DurationSeconds=900, SerialNumber=mfa_arn, TokenCode=str(mfa_code)) credentials = session_params['Credentials'] os.environ['AWS_ACCESS_KEY_ID'] = credentials['AccessKeyId'] os.environ['AWS_SECRET_ACCESS_KEY'] = credentials['SecretAccessKey'] os.environ['AWS_SESSION_TOKEN'] = credentials['SessionToken'] os.environ['AWS_DEFAULT_REGION'] = region return session_params except botocore.exceptions.ClientError as client_error: raise UnrecoverableException(str(client_error))
def account_id(self): return get_account_id()