public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonIoTConfig config = new AmazonIoTConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonIoTClient client = new AmazonIoTClient(creds, config); ListPoliciesResponse resp = new ListPoliciesResponse(); do { ListPoliciesRequest req = new ListPoliciesRequest { Marker = resp.NextMarker , PageSize = maxItems }; resp = client.ListPolicies(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.Policies) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextMarker)); }
public static string ExpandManagedPolicyName(IAmazonIdentityManagementService iamClient, string managedPolicy) { if (managedPolicy.StartsWith("arn:aws")) { return(managedPolicy); } // Wrapping this in a task to avoid dealing with aggregate exception. var task = Task.Run <string>(async() => { var listResponse = new ListPoliciesResponse(); do { var listRequest = new ListPoliciesRequest { Marker = listResponse.Marker, Scope = PolicyScopeType.All }; listResponse = await iamClient.ListPoliciesAsync(listRequest).ConfigureAwait(false); var policy = listResponse.Policies.FirstOrDefault(x => string.Equals(managedPolicy, x.PolicyName)); if (policy != null) { return(policy.Arn); } } while (listResponse.IsTruncated); return(null); }); if (task.Result == null) { throw new ToolsException($"Policy \"{managedPolicy}\" can not be found.", ToolsException.CommonErrorCode.PolicyNotFound); } return(task.Result); }
public static ListPoliciesResponse Unmarshall(UnmarshallerContext context) { ListPoliciesResponse listPoliciesResponse = new ListPoliciesResponse(); listPoliciesResponse.HttpResponse = context.HttpResponse; listPoliciesResponse.RequestId = context.StringValue("ListPolicies.RequestId"); listPoliciesResponse.IsTruncated = context.BooleanValue("ListPolicies.IsTruncated"); listPoliciesResponse.Marker = context.StringValue("ListPolicies.Marker"); List <ListPoliciesResponse.ListPolicies_Policy> listPoliciesResponse_policies = new List <ListPoliciesResponse.ListPolicies_Policy>(); for (int i = 0; i < context.Length("ListPolicies.Policies.Length"); i++) { ListPoliciesResponse.ListPolicies_Policy policy = new ListPoliciesResponse.ListPolicies_Policy(); policy.PolicyName = context.StringValue("ListPolicies.Policies[" + i + "].PolicyName"); policy.PolicyType = context.StringValue("ListPolicies.Policies[" + i + "].PolicyType"); policy.Description = context.StringValue("ListPolicies.Policies[" + i + "].Description"); policy.DefaultVersion = context.StringValue("ListPolicies.Policies[" + i + "].DefaultVersion"); policy.CreateDate = context.StringValue("ListPolicies.Policies[" + i + "].CreateDate"); policy.UpdateDate = context.StringValue("ListPolicies.Policies[" + i + "].UpdateDate"); policy.AttachmentCount = context.IntegerValue("ListPolicies.Policies[" + i + "].AttachmentCount"); listPoliciesResponse_policies.Add(policy); } listPoliciesResponse.Policies = listPoliciesResponse_policies; return(listPoliciesResponse); }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListPoliciesResponse response = new ListPoliciesResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("NextToken", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.NextToken = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("PolicyList", targetDepth)) { var unmarshaller = new ListUnmarshaller <PolicySummary, PolicySummaryUnmarshaller>(PolicySummaryUnmarshaller.Instance); response.PolicyList = unmarshaller.Unmarshall(context); continue; } } return(response); }
public static async Task <IList <ManagedPolicy> > FindManagedPoliciesAsync(IAmazonIdentityManagementService iamClient, PromptRoleInfo promptInfo, int maxPolicies) { ListPoliciesRequest request = new ListPoliciesRequest { Scope = PolicyScopeType.AWS, }; ListPoliciesResponse response = null; IList <ManagedPolicy> policies = new List <ManagedPolicy>(); do { request.Marker = response?.Marker; response = await iamClient.ListPoliciesAsync(request).ConfigureAwait(false); foreach (var policy in response.Policies) { if (policy.IsAttachable && (promptInfo.KnownManagedPolicyDescription.ContainsKey(policy.PolicyName) || (promptInfo.AWSManagedPolicyNamePrefix != null && policy.PolicyName.StartsWith(promptInfo.AWSManagedPolicyNamePrefix))) ) { policies.Add(policy); } if (policies.Count == maxPolicies) { return(policies); } } } while (response.IsTruncated); response = await iamClient.ListPoliciesAsync(new ListPoliciesRequest { Scope = PolicyScopeType.Local }); foreach (var policy in response.Policies) { if (policy.IsAttachable) { policies.Add(policy); } if (policies.Count == maxPolicies) { return(policies); } } return(policies); }
public static async Task <IList <ManagedPolicy> > FindManagedPoliciesAsync(IAmazonIdentityManagementService iamClient, int maxPolicies) { ListPoliciesRequest request = new ListPoliciesRequest { Scope = PolicyScopeType.AWS, }; ListPoliciesResponse response = null; IList <ManagedPolicy> policies = new List <ManagedPolicy>(); do { request.Marker = response?.Marker; response = await iamClient.ListPoliciesAsync(request).ConfigureAwait(false); foreach (var policy in response.Policies) { if (policy.IsAttachable && KNOWN_MANAGED_POLICY_DESCRIPTIONS.ContainsKey(policy.PolicyName)) { policies.Add(policy); } if (policies.Count == maxPolicies) { return(policies); } } } while (response.IsTruncated); response = await iamClient.ListPoliciesAsync(new ListPoliciesRequest { Scope = PolicyScopeType.Local }); foreach (var policy in response.Policies) { if (policy.IsAttachable) { policies.Add(policy); } if (policies.Count == maxPolicies) { return(policies); } } return(policies); }
public static async Task <IList <ManagedPolicy> > FindLambdaManagedPoliciesAsync(IAmazonIdentityManagementService iamClient, int maxPolicies) { ListPoliciesRequest request = new ListPoliciesRequest { Scope = PolicyScopeType.AWS, }; ListPoliciesResponse response = null; IList <ManagedPolicy> lambdaPolicies = new List <ManagedPolicy>(); do { request.Marker = response?.Marker; response = await iamClient.ListPoliciesAsync(request).ConfigureAwait(false); foreach (var policy in response.Policies) { if (policy.IsAttachable && (policy.PolicyName.StartsWith("AWSLambda") || string.Equals(policy.PolicyName, "PowerUserAccess", StringComparison.Ordinal))) { lambdaPolicies.Add(policy); } if (lambdaPolicies.Count == maxPolicies) { return(lambdaPolicies); } } } while (response.IsTruncated); response = await iamClient.ListPoliciesAsync(new ListPoliciesRequest { Scope = PolicyScopeType.Local }); foreach (var policy in response.Policies) { if (policy.IsAttachable) { lambdaPolicies.Add(policy); } if (lambdaPolicies.Count == maxPolicies) { return(lambdaPolicies); } } return(lambdaPolicies); }
private static void UnmarshallResult(XmlUnmarshallerContext context, ListPoliciesResponse response) { int originalDepth = context.CurrentDepth; int targetDepth = originalDepth + 1; if (context.IsStartOfDocument) { targetDepth += 2; } while (context.ReadAtDepth(originalDepth)) { if (context.IsStartElement || context.IsAttribute) { if (context.TestExpression("IsTruncated", targetDepth)) { var unmarshaller = BoolUnmarshaller.Instance; response.IsTruncated = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("Marker", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.Marker = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("Policies/member", targetDepth)) { var unmarshaller = ManagedPolicyUnmarshaller.Instance; var item = unmarshaller.Unmarshall(context); response.Policies.Add(item); continue; } } } return; }
/// <summary> /// Initializes an Organizations client object, and then calls its /// ListPolliciesAsync method. /// </summary> public static async Task Main() { // Create the client object using the default account. IAmazonOrganizations client = new AmazonOrganizationsClient(); // The value for the Filter parameter is required and must must be // one of the following: // AISERVICES_OPT_OUT_POLICY // BACKUP_POLICY // SERVICE_CONTROL_POLICY // TAG_POLICY var request = new ListPoliciesRequest { Filter = "SERVICE_CONTROL_POLICY", MaxResults = 5, }; var response = new ListPoliciesResponse(); try { do { response = await client.ListPoliciesAsync(request); response.Policies.ForEach(p => DisplayPolicies(p)); if (response.NextToken is not null) { request.NextToken = response.NextToken; } } while (response.NextToken is not null); } catch (AWSOrganizationsNotInUseException ex) { Console.WriteLine(ex.Message); } }