UNPKG

@cloud-copilot/iam-collect

Version:

Collect IAM information from AWS Accounts

47 lines 1.71 kB
import { GetVaultAccessPolicyCommand, GlacierClient, ListTagsForVaultCommand, ListVaultsCommand } from '@aws-sdk/client-glacier'; import { runAndCatch404 } from '../../utils/client-tools.js'; import { parseIfPresent } from '../../utils/json.js'; import { createResourceSyncType, createTypedSyncOperation } from '../typedSync.js'; export const GlacierVaultsSync = createTypedSyncOperation('glacier', 'glacierVaults', createResourceSyncType({ client: GlacierClient, command: ListVaultsCommand, key: 'VaultList', paginationConfig: { inputKey: 'marker', outputKey: 'Marker' }, arn: (vault) => vault.VaultARN, resourceTypeParts: (account, region) => ({ account, region, resourceType: 'vaults', service: 'glacier' }), tags: (vault) => vault.extraFields.tags, extraFields: { policy: async (client, vault, accountId) => { const policy = await runAndCatch404(async () => { const result = await client.send(new GetVaultAccessPolicyCommand({ accountId, vaultName: vault.VaultName })); return parseIfPresent(result.policy?.Policy); }); return policy; }, tags: async (client, vault, accountId) => { const tags = await client.send(new ListTagsForVaultCommand({ accountId, vaultName: vault.VaultName })); return tags.Tags; } }, results: (vault) => ({ metadata: { name: vault.VaultName }, policy: vault.extraFields.policy }) })); //# sourceMappingURL=vaults.js.map