Skip to content

Commit

Permalink
Refactor AWS SDK usage and update Lambda permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
tampueroc committed Apr 17, 2024
1 parent 3a50fbd commit 03854a6
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions lib/plugins/aws/customResources/resources/s3/lib/permissions.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
'use strict';

const { awsRequest } = require('../../utils');
const {
LambdaClient,
AddPermissionCommand,
RemovePermissionCommand,
} = require('@aws-sdk/client-lambda');

function getStatementId(functionName, bucketName) {
const normalizedBucketName = bucketName.replace(/[.:*]/g, '');
Expand All @@ -13,24 +18,26 @@ function getStatementId(functionName, bucketName) {

async function addPermission(config) {
const { functionName, bucketName, partition, region, accountId } = config;
const payload = {
const addPermissionCommand = new AddPermissionCommand({
Action: 'lambda:InvokeFunction',
FunctionName: functionName,
Principal: 's3.amazonaws.com',
StatementId: getStatementId(functionName, bucketName),
SourceArn: `arn:${partition}:s3:::${bucketName}`,
SourceAccount: accountId,
};
return awsRequest({ name: 'Lambda', params: { region } }, 'addPermission', payload);
});
const lambdaClient = new LambdaClient({ region });
return await awsRequest(() => lambdaClient.send(addPermissionCommand));
}

async function removePermission(config) {
const { functionName, bucketName, region } = config;
const payload = {
const removePermissionCommand = new RemovePermissionCommand({
FunctionName: functionName,
StatementId: getStatementId(functionName, bucketName),
};
return awsRequest({ name: 'Lambda', params: { region } }, 'removePermission', payload);
});
const lambdaClient = new LambdaClient({ region });
return awsRequest(() => lambdaClient.send(removePermissionCommand));
}

module.exports = {
Expand Down

0 comments on commit 03854a6

Please sign in to comment.