UNPKG

@infrascan/aws-s3-scanner

Version:

Infrascan scanner definition for AWS S3

248 lines (247 loc) 6.92 kB
// src/generated/getters.ts import { resolveFunctionCallParameters } from "@infrascan/core"; import { S3ServiceException, ListBucketsCommand, GetBucketTaggingCommand, GetBucketNotificationConfigurationCommand, GetBucketWebsiteCommand, GetBucketAclCommand } from "@aws-sdk/client-s3"; import debug from "debug"; async function ListBuckets(client, stateConnector, context) { const getterDebug = debug("s3:ListBuckets"); const state = []; getterDebug("ListBuckets"); const preparedParams = {}; try { const cmd = new ListBucketsCommand(preparedParams); const result = await client.send(cmd); state.push({ _metadata: { account: context.account, region: context.region, timestamp: Date.now() }, _parameters: preparedParams, _result: result }); } catch (err) { if (err instanceof S3ServiceException) { if (err?.$retryable) { console.log("Encountered retryable error", err); } else { console.log("Encountered unretryable error", err); } } else { console.log("Encountered unexpected error", err); } } getterDebug("Recording state"); await stateConnector.onServiceScanCompleteCallback( context.account, context.region, "S3", "ListBuckets", state ); } async function GetBucketTagging(client, stateConnector, context) { const getterDebug = debug("s3:GetBucketTagging"); const state = []; getterDebug("Fetching state"); const resolvers = [ { Key: "Bucket", Selector: "S3|ListBuckets|[]._result.Buckets[].Name" } ]; const parameterQueue = await resolveFunctionCallParameters( context.account, context.region, resolvers, stateConnector ); for (const parameters of parameterQueue) { const preparedParams = parameters; try { const cmd = new GetBucketTaggingCommand(preparedParams); const result = await client.send(cmd); state.push({ _metadata: { account: context.account, region: context.region, timestamp: Date.now() }, _parameters: preparedParams, _result: result }); } catch (err) { if (err instanceof S3ServiceException) { if (err?.$retryable) { console.log("Encountered retryable error", err); } else { console.log("Encountered unretryable error", err); } } else { console.log("Encountered unexpected error", err); } } } getterDebug("Recording state"); await stateConnector.onServiceScanCompleteCallback( context.account, context.region, "S3", "GetBucketTagging", state ); } async function GetBucketNotificationConfiguration(client, stateConnector, context) { const getterDebug = debug("s3:GetBucketNotificationConfiguration"); const state = []; getterDebug("Fetching state"); const resolvers = [ { Key: "Bucket", Selector: "S3|ListBuckets|[]._result.Buckets[].Name" } ]; const parameterQueue = await resolveFunctionCallParameters( context.account, context.region, resolvers, stateConnector ); for (const parameters of parameterQueue) { const preparedParams = parameters; try { const cmd = new GetBucketNotificationConfigurationCommand(preparedParams); const result = await client.send(cmd); state.push({ _metadata: { account: context.account, region: context.region, timestamp: Date.now() }, _parameters: preparedParams, _result: result }); } catch (err) { if (err instanceof S3ServiceException) { if (err?.$retryable) { console.log("Encountered retryable error", err); } else { console.log("Encountered unretryable error", err); } } else { console.log("Encountered unexpected error", err); } } } getterDebug("Recording state"); await stateConnector.onServiceScanCompleteCallback( context.account, context.region, "S3", "GetBucketNotificationConfiguration", state ); } async function GetBucketWebsite(client, stateConnector, context) { const getterDebug = debug("s3:GetBucketWebsite"); const state = []; getterDebug("Fetching state"); const resolvers = [ { Key: "Bucket", Selector: "S3|ListBuckets|[]._result.Buckets[].Name" } ]; const parameterQueue = await resolveFunctionCallParameters( context.account, context.region, resolvers, stateConnector ); for (const parameters of parameterQueue) { const preparedParams = parameters; try { const cmd = new GetBucketWebsiteCommand(preparedParams); const result = await client.send(cmd); state.push({ _metadata: { account: context.account, region: context.region, timestamp: Date.now() }, _parameters: preparedParams, _result: result }); } catch (err) { if (err instanceof S3ServiceException) { if (err?.$retryable) { console.log("Encountered retryable error", err); } else { console.log("Encountered unretryable error", err); } } else { console.log("Encountered unexpected error", err); } } } getterDebug("Recording state"); await stateConnector.onServiceScanCompleteCallback( context.account, context.region, "S3", "GetBucketWebsite", state ); } async function GetBucketAcl(client, stateConnector, context) { const getterDebug = debug("s3:GetBucketAcl"); const state = []; getterDebug("Fetching state"); const resolvers = [ { Key: "Bucket", Selector: "S3|ListBuckets|[]._result.Buckets[].Name" } ]; const parameterQueue = await resolveFunctionCallParameters( context.account, context.region, resolvers, stateConnector ); for (const parameters of parameterQueue) { const preparedParams = parameters; try { const cmd = new GetBucketAclCommand(preparedParams); const result = await client.send(cmd); state.push({ _metadata: { account: context.account, region: context.region, timestamp: Date.now() }, _parameters: preparedParams, _result: result }); } catch (err) { if (err instanceof S3ServiceException) { if (err?.$retryable) { console.log("Encountered retryable error", err); } else { console.log("Encountered unretryable error", err); } } else { console.log("Encountered unexpected error", err); } } } getterDebug("Recording state"); await stateConnector.onServiceScanCompleteCallback( context.account, context.region, "S3", "GetBucketAcl", state ); } export { GetBucketAcl, GetBucketNotificationConfiguration, GetBucketTagging, GetBucketWebsite, ListBuckets };