@cloud-copilot/iam-collect
Version:
Collect IAM information from AWS Accounts
54 lines • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.S3ObjectLambdaAccessPointsSync = 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.S3ObjectLambdaAccessPointsSync = (0, typedSync_js_1.createTypedSyncOperation)('s3-object-lambda', 'objectLambdaAccessPoints', (0, typedSync_js_1.createResourceSyncType)({
client: client_s3_control_1.S3ControlClient,
command: client_s3_control_1.ListAccessPointsForObjectLambdaCommand,
key: 'ObjectLambdaAccessPointList',
arguments: (accountId, region) => ({
AccountId: accountId
}),
paginationConfig: {
inputKey: 'NextToken',
outputKey: 'NextToken'
},
arn: (accessPoint, region, account, partition) => accessPoint.ObjectLambdaAccessPointArn,
resourceTypeParts: (account, region) => ({
service: 's3-object-lambda',
resourceType: 'accesspoint',
account,
region
}),
extraFields: {
details: async (client, accessPoint, accountId) => {
const result = await client.send(new client_s3_control_1.GetAccessPointForObjectLambdaCommand({
AccountId: accountId,
Name: accessPoint.Name
}));
return result;
},
policy: async (client, accessPoint, accountId) => {
return (0, client_tools_js_1.runAndCatch404)(async () => {
const result = await client.send(new client_s3_control_1.GetAccessPointPolicyForObjectLambdaCommand({
Name: accessPoint.Name,
AccountId: accountId
}));
return (0, json_js_1.parseIfPresent)(result.Policy);
});
}
},
tags: () => undefined, // Object Lambda Access Points do not support tags
results: (accessPoint) => ({
metadata: {
name: accessPoint.Name,
alias: accessPoint.extraFields.details?.Alias
},
bpa: accessPoint.extraFields.details?.PublicAccessBlockConfiguration,
policy: accessPoint.extraFields.policy
})
}));
//# sourceMappingURL=objectLambdaAccessPoints.js.map