public AwsCredentials Resolve(IAwsProfile profile = default) { if (string.IsNullOrEmpty(profile?.Name)) { return(null); } if (!_credentialProfileStoreChain.TryGetAWSCredentials(profile?.Name, out var credentialsHandle)) { throw new AwsFacadeException($"Failed to retrieve credentials for profile: {profile?.Name}"); } return((AwsCredentials)credentialsHandle.GetCredentials()); }
public T Create <T>(IAwsProfile assumeProfile = default) where T : IAmazonService { AWSCredentials impersonateCredentials = _awsCredentialResolver.Resolve(_options.Value.Impersonate) ?? FallbackCredentialsFactory.GetCredentials(); AWSCredentials sdkClientCredentials = impersonateCredentials; if (assumeProfile != null) { var assumeProfileCredentials = _awsCredentialResolver.Resolve(assumeProfile); sdkClientCredentials = new AssumeRoleAWSCredentials(impersonateCredentials, assumeProfile.RoleArn, assumeProfileCredentials.Token); } var clientOfTConstructor = typeof(T).GetConstructor(new[] { typeof(AWSCredentials), typeof(RegionEndpoint) }); var clientOfT = (T)clientOfTConstructor.Invoke(new object[] { sdkClientCredentials, RegionEndpoint.GetBySystemName(_options.Value.Region) }); return(clientOfT); }