UNPKG

typed-serverless

Version:

Helps you write a consistent Serverless Framework configuration in TypeScript

118 lines (117 loc) 4.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildArnFnSub = exports.alarmArn = exports.stepFunctionArn = exports.sqsArn = exports.eventBusArn = exports.snsArn = exports.bucketArn = exports.lambdaArn = void 0; /** * Build Lambda ARN as a clouformation string expression. * format "arn:aws:lambda:[[region]]:[[accountId]]:function:[[function]]" * https://docs.aws.amazon.com/lambda/latest/dg/lambda-api-permissions-ref.html */ function lambdaArn(resourceId) { return { service: 'lambda', type: 'function', resourceId, }; } exports.lambdaArn = lambdaArn; /** * Build Bucket ARN as a clouformation string expression. * bucket arn: "arn:aws:s3:::bucket_name" * bucket object arn: "arn:aws:s3:::bucket_name/key_name" * bucket path arn: "arn:aws:s3:::bucket_name/some/folder/*" * https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html */ function bucketArn(resourceId, path) { return { service: 's3', region: '', namespace: '', resourceId, path, }; } exports.bucketArn = bucketArn; /** * Build SNS ARN as a clouformation string expression. * format: "arn:aws:sns:[[region]]:[[accountId]]:[[topicName]]" * @link https://docs.aws.amazon.com/step-functions/latest/dg/sns-iam.html */ function snsArn(resourceId) { return { service: 'sns', resourceId, }; } exports.snsArn = snsArn; /** * Build EventBus ARN as a clouformation string expression. * format: "arn:aws:events:[[region]]:[[accountId]]:event-bus:[[queueName]]" * @link https://docs.aws.amazon.com/step-functions/latest/dg/eventbridge-iam.html */ function eventBusArn(resourceId) { return { service: 'events', type: 'event-bus', typeToResourceSeparator: '/', resourceId, }; } exports.eventBusArn = eventBusArn; /** * Build SQS ARN as a clouformation string expression. * format: "arn:aws:sqs:[[region]]:[[accountId]]:[[queueName]]" * @link https://docs.aws.amazon.com/step-functions/latest/dg/sqs-iam.html */ function sqsArn(resourceId) { return { service: 'sqs', resourceId, }; } exports.sqsArn = sqsArn; /** * Build StepFunction ARN as a clouformation string expression. * format: "arn:aws:states:[[region]]:[[accountId]]:stateMachine:[[stateMachineName]]" * @link https://docs.aws.amazon.com/step-functions/latest/dg/stepfunctions-iam.html * @deprecated Prefer #arn - AWS Step Function automatically adds a name suffix, because of that this function will not be able to generate correct arn */ function stepFunctionArn(resourceId) { return { service: 'states', type: 'stateMachine', resourceId, }; } exports.stepFunctionArn = stepFunctionArn; /** * Build Alarm ARN as a clouformation string expression. * format: "arn:aws:cloudwatch:[[region]]:[[accountId]]:alarm:[[alarmName]]" * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html */ function alarmArn(resourceId) { return { service: 'cloudwatch', type: 'alarm', resourceId, }; } exports.alarmArn = alarmArn; /** * Build an ARN as a clouformation string expression. * format: "arn:aws:[[service]]:[[region]]:[[type]]:[[id]][[path]]" * type and path are optional * @example "arn:aws:states:eu-west-1:stateMachine:MyStateMachineName" * https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html */ function buildArnFnSub({ partition, service, region = '${AWS::Region}', namespace = '${AWS::AccountId}', type, resourceId, path, typeToResourceSeparator = ':', }) { const arn = ['arn', partition || 'aws', service, region || '', namespace || '', type] .filter((x) => typeof x !== 'undefined') .join(':') + typeToResourceSeparator + resourceId + (path || ''); if (path && path[0] !== '/') throw new Error("Arn path should always starts with '/'"); return { 'Fn::Sub': arn }; } exports.buildArnFnSub = buildArnFnSub;