@cloud-copilot/iam-collect
Version:
Collect IAM information from AWS Accounts
48 lines • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenSearchDomainsSync = void 0;
const client_opensearch_1 = require("@aws-sdk/client-opensearch");
const client_tools_js_1 = require("../../utils/client-tools.js");
const json_js_1 = require("../../utils/json.js");
const typedSync_js_1 = require("../typedSync.js");
function domainArn(domainName, region, accountId, partition) {
return `arn:${partition}:es:${region}:${accountId}:domain/${domainName}`;
}
exports.OpenSearchDomainsSync = (0, typedSync_js_1.createTypedSyncOperation)('es', 'domains', (0, typedSync_js_1.createResourceSyncType)({
client: client_opensearch_1.OpenSearchClient,
command: client_opensearch_1.ListDomainNamesCommand,
key: 'DomainNames',
paginationConfig: '::no-pagination::',
resourceTypeParts: (accountId, region) => ({
service: 'es', // OpenSearch domains use 'es' service in ARNs
resourceType: 'domain',
account: accountId,
region: region
}),
extraFields: {
domainDetails: async (client, domain, accountId, region, partition) => {
return (0, client_tools_js_1.runAndCatch404)(async () => {
const result = await client.send(new client_opensearch_1.DescribeDomainCommand({ DomainName: domain.DomainName }));
return result.DomainStatus;
});
},
tags: async (client, domain, accountId, region, partition) => {
return (0, client_tools_js_1.runAndCatch404)(async () => {
const tagResult = await client.send(new client_opensearch_1.ListTagsCommand({
ARN: domainArn(domain.DomainName, region, accountId, partition)
}));
return tagResult.TagList;
});
}
},
tags: (domain) => domain.extraFields.tags,
arn: (domain, region, accountId, partition) => domainArn(domain.DomainName, region, accountId, partition),
results: (domain) => ({
metadata: {
name: domain.DomainName,
keyId: domain.extraFields.domainDetails?.EncryptionAtRestOptions?.KmsKeyId
},
policy: (0, json_js_1.parseIfPresent)(domain.extraFields.domainDetails?.AccessPolicies)
})
}));
//# sourceMappingURL=domains.js.map