UNPKG

@cloud-copilot/iam-collect

Version:

Collect IAM information from AWS Accounts

54 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SqsQueueSync = void 0; const client_sqs_1 = require("@aws-sdk/client-sqs"); const json_js_1 = require("../../utils/json.js"); const typedSync_js_1 = require("../typedSync.js"); exports.SqsQueueSync = (0, typedSync_js_1.createTypedSyncOperation)('sqs', 'queue', (0, typedSync_js_1.createResourceSyncType)({ client: client_sqs_1.SQSClient, command: client_sqs_1.ListQueuesCommand, key: 'QueueUrls', paginationConfig: { inputKey: 'NextToken', outputKey: 'NextToken' }, arguments: (accountId, region) => ({ MaxResults: 1000 }), arn: (queue, region, account, partition) => { return queueArn(queue, region, account, partition); }, resourceTypeParts: (account, region) => ({ account, region, service: 'sqs' }), tags: (queue) => queue.extraFields.tags, extraFields: { tags: async (client, queue, account, region, partition) => { const tagResult = await client.send(new client_sqs_1.ListQueueTagsCommand({ QueueUrl: queue.name })); return tagResult.Tags; }, attributes: async (client, queue, account, region, partition) => { const attributes = await client.send(new client_sqs_1.GetQueueAttributesCommand({ QueueUrl: queue.name, AttributeNames: ['KmsMasterKeyId', 'Policy'] })); return attributes.Attributes; } }, results: (queue) => ({ metadata: { name: queue.name.split('/').pop() || '', kmsKey: queue.extraFields.attributes?.KmsMasterKeyId }, policy: (0, json_js_1.parseIfPresent)(queue.extraFields.attributes?.Policy) }) })); function queueArn(queue, region, account, partition) { const queueName = queue.name.split('/').pop(); return `arn:${partition}:sqs:${region}:${account}:${queueName}`; } //# sourceMappingURL=queues.js.map