@cloud-copilot/iam-collect
Version:
Collect IAM information from AWS Accounts
60 lines • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.S3AccessPointsSync = void 0;
const client_s3_control_1 = require("@aws-sdk/client-s3-control");
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");
exports.S3AccessPointsSync = (0, typedSync_js_1.createTypedSyncOperation)('s3', 'accessPoints', (0, typedSync_js_1.createResourceSyncType)({
client: client_s3_control_1.S3ControlClient,
command: client_s3_control_1.ListAccessPointsCommand,
key: 'AccessPointList',
arguments: (accountId, region) => ({
AccountId: accountId
}),
paginationConfig: {
inputKey: 'NextToken',
outputKey: 'NextToken'
},
arn: (accessPoint) => accessPoint.AccessPointArn,
resourceTypeParts: (account, region) => ({
service: 's3',
resource: 'accesspoint',
account,
region
}),
extraFields: {
details: async (client, accessPoint, accountId) => {
const result = await client.send(new client_s3_control_1.GetAccessPointCommand({
AccountId: accountId,
Name: accessPoint.Name
}));
return result;
},
policy: async (client, accessPoint, accountId) => {
const policy = (0, client_tools_js_1.runAndCatch404)(async () => {
const result = await client.send(new client_s3_control_1.GetAccessPointPolicyCommand({
Name: accessPoint.Name,
AccountId: accountId
}));
return (0, json_js_1.parseIfPresent)(result.Policy);
});
return policy;
}
},
tags: () => undefined, // Access points do not have tags
results: (accessPoint) => ({
metadata: {
name: accessPoint.Name,
alias: accessPoint.extraFields.details.Alias,
networkOrigin: accessPoint.NetworkOrigin,
vpc: accessPoint.VpcConfiguration?.VpcId,
bucket: accessPoint.Bucket,
bucketAccount: accessPoint.BucketAccountId,
endpoints: accessPoint.extraFields.details.Endpoints
},
bpa: accessPoint.extraFields.details.PublicAccessBlockConfiguration,
policy: accessPoint.extraFields.policy
})
}));
//# sourceMappingURL=accessPoints.js.map