@bitblit/epsilon
Version:
Tiny adapter to simplify building API gateway Lambda APIS
74 lines • 2.94 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EpsilonStackUtil = void 0;
const string_ratchet_1 = require("@bitblit/ratchet/common/string-ratchet");
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
class EpsilonStackUtil {
// Prevent instantiation
// eslint-disable-next-line @typescript-eslint/no-empty-function
constructor() { }
static toEnvironmentVariables(input) {
const rval = [];
input.forEach((inval) => {
Object.keys(inval).forEach((k) => {
rval.push({
name: k,
value: string_ratchet_1.StringRatchet.safeString(inval[k]),
});
});
});
return rval;
}
static createDefaultPolicyStatementList(props, backgroundLambdaSqs, backgroundLambdaSns, interApiSns) {
const rval = (props.additionalPolicyStatements || []).concat([
new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['logs:CreateLogGroup', 'logs:CreateLogStream', 'logs:PutLogEvents'],
resources: ['arn:aws:logs:*:*:*'],
}),
new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['ses:SendEmail', 'ses:SendRawEmail'],
resources: ['arn:aws:ses:*'],
}),
new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['sqs:*'],
resources: [backgroundLambdaSqs.queueArn],
}),
new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['sns:*'],
resources: [backgroundLambdaSns.topicArn, interApiSns.topicArn],
}),
new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['batch:*'],
resources: ['*'],
}),
]);
return rval;
}
}
exports.EpsilonStackUtil = EpsilonStackUtil;
EpsilonStackUtil.ALLOW_ECS = new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['ecs:*'],
resources: ['*'],
});
EpsilonStackUtil.ALLOW_ECR = new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['ecr:BatchCheckLayerAvailability', 'ecr:BatchGetImage', 'ecr:GetDownloadUrlForLayer', 'ecr:GetAuthorizationToken'],
resources: ['*'],
});
EpsilonStackUtil.ALLOW_RESTRICTED_LOGS = new aws_iam_1.PolicyStatement({
effect: aws_iam_1.Effect.ALLOW,
actions: ['logs:CreateLogStream', 'logs:PutLogEvents', 'logs:DescribeLogStreams', 'logs:CreateLogGroup'],
resources: ['*'],
});
EpsilonStackUtil.ECS_POLICY_STATEMENTS = [
EpsilonStackUtil.ALLOW_ECS,
EpsilonStackUtil.ALLOW_ECR,
EpsilonStackUtil.ALLOW_RESTRICTED_LOGS,
];
//# sourceMappingURL=epsilon-stack-util.js.map