UNPKG

@pulumi/aws

Version:

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.

236 lines • 8.44 kB
"use strict"; // *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** Object.defineProperty(exports, "__esModule", { value: true }); exports.getAliasOutput = exports.getAlias = void 0; const pulumi = require("@pulumi/pulumi"); const utilities = require("../utilities"); /** * Provides details about an AWS Lambda Alias. Use this data source to retrieve information about an existing Lambda function alias for traffic management, deployment strategies, or API integrations. * * ## Example Usage * * ### Basic Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = aws.lambda.getAlias({ * functionName: "my-lambda-function", * name: "production", * }); * export const aliasArn = example.then(example => example.arn); * ``` * * ### API Gateway Integration * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const apiHandler = aws.lambda.getAlias({ * functionName: "api-handler", * name: "live", * }); * const example = new aws.apigateway.Integration("example", { * restApi: exampleAwsApiGatewayRestApi.id, * resourceId: exampleAwsApiGatewayResource.id, * httpMethod: exampleAwsApiGatewayMethod.httpMethod, * integrationHttpMethod: "POST", * type: "AWS_PROXY", * uri: apiHandler.then(apiHandler => apiHandler.invokeArn), * }); * // Grant API Gateway permission to invoke the alias * const apiGateway = new aws.lambda.Permission("api_gateway", { * statementId: "AllowExecutionFromAPIGateway", * action: "lambda:InvokeFunction", * "function": apiHandler.then(apiHandler => apiHandler.functionName), * principal: "apigateway.amazonaws.com", * qualifier: apiHandler.then(apiHandler => apiHandler.name), * sourceArn: `${exampleAwsApiGatewayRestApi.executionArn}/*/*`, * }); * ``` * * ### Deployment Version Tracking * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * // Get production alias details * const production = aws.lambda.getAlias({ * functionName: "payment-processor", * name: "production", * }); * // Get staging alias details * const staging = aws.lambda.getAlias({ * functionName: "payment-processor", * name: "staging", * }); * const versionDrift = Promise.all([production, staging]).then(([production, staging]) => production.functionVersion != staging.functionVersion); * export const deploymentStatus = { * productionVersion: production.then(production => production.functionVersion), * stagingVersion: staging.then(staging => staging.functionVersion), * versionDrift: versionDrift, * readyForPromotion: !versionDrift, * }; * ``` * * ### EventBridge Rule Target * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const eventProcessor = aws.lambda.getAlias({ * functionName: "event-processor", * name: "stable", * }); * const example = new aws.cloudwatch.EventRule("example", { * name: "capture-events", * description: "Capture events for processing", * eventPattern: JSON.stringify({ * source: ["myapp.orders"], * "detail-type": ["Order Placed"], * }), * }); * const lambda = new aws.cloudwatch.EventTarget("lambda", { * rule: example.name, * targetId: "SendToLambda", * arn: eventProcessor.then(eventProcessor => eventProcessor.arn), * }); * const allowEventbridge = new aws.lambda.Permission("allow_eventbridge", { * statementId: "AllowExecutionFromEventBridge", * action: "lambda:InvokeFunction", * "function": eventProcessor.then(eventProcessor => eventProcessor.functionName), * principal: "events.amazonaws.com", * qualifier: eventProcessor.then(eventProcessor => eventProcessor.name), * sourceArn: example.arn, * }); * ``` */ function getAlias(args, opts) { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("aws:lambda/getAlias:getAlias", { "functionName": args.functionName, "name": args.name, "region": args.region, }, opts); } exports.getAlias = getAlias; /** * Provides details about an AWS Lambda Alias. Use this data source to retrieve information about an existing Lambda function alias for traffic management, deployment strategies, or API integrations. * * ## Example Usage * * ### Basic Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = aws.lambda.getAlias({ * functionName: "my-lambda-function", * name: "production", * }); * export const aliasArn = example.then(example => example.arn); * ``` * * ### API Gateway Integration * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const apiHandler = aws.lambda.getAlias({ * functionName: "api-handler", * name: "live", * }); * const example = new aws.apigateway.Integration("example", { * restApi: exampleAwsApiGatewayRestApi.id, * resourceId: exampleAwsApiGatewayResource.id, * httpMethod: exampleAwsApiGatewayMethod.httpMethod, * integrationHttpMethod: "POST", * type: "AWS_PROXY", * uri: apiHandler.then(apiHandler => apiHandler.invokeArn), * }); * // Grant API Gateway permission to invoke the alias * const apiGateway = new aws.lambda.Permission("api_gateway", { * statementId: "AllowExecutionFromAPIGateway", * action: "lambda:InvokeFunction", * "function": apiHandler.then(apiHandler => apiHandler.functionName), * principal: "apigateway.amazonaws.com", * qualifier: apiHandler.then(apiHandler => apiHandler.name), * sourceArn: `${exampleAwsApiGatewayRestApi.executionArn}/*/*`, * }); * ``` * * ### Deployment Version Tracking * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * // Get production alias details * const production = aws.lambda.getAlias({ * functionName: "payment-processor", * name: "production", * }); * // Get staging alias details * const staging = aws.lambda.getAlias({ * functionName: "payment-processor", * name: "staging", * }); * const versionDrift = Promise.all([production, staging]).then(([production, staging]) => production.functionVersion != staging.functionVersion); * export const deploymentStatus = { * productionVersion: production.then(production => production.functionVersion), * stagingVersion: staging.then(staging => staging.functionVersion), * versionDrift: versionDrift, * readyForPromotion: !versionDrift, * }; * ``` * * ### EventBridge Rule Target * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const eventProcessor = aws.lambda.getAlias({ * functionName: "event-processor", * name: "stable", * }); * const example = new aws.cloudwatch.EventRule("example", { * name: "capture-events", * description: "Capture events for processing", * eventPattern: JSON.stringify({ * source: ["myapp.orders"], * "detail-type": ["Order Placed"], * }), * }); * const lambda = new aws.cloudwatch.EventTarget("lambda", { * rule: example.name, * targetId: "SendToLambda", * arn: eventProcessor.then(eventProcessor => eventProcessor.arn), * }); * const allowEventbridge = new aws.lambda.Permission("allow_eventbridge", { * statementId: "AllowExecutionFromEventBridge", * action: "lambda:InvokeFunction", * "function": eventProcessor.then(eventProcessor => eventProcessor.functionName), * principal: "events.amazonaws.com", * qualifier: eventProcessor.then(eventProcessor => eventProcessor.name), * sourceArn: example.arn, * }); * ``` */ function getAliasOutput(args, opts) { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("aws:lambda/getAlias:getAlias", { "functionName": args.functionName, "name": args.name, "region": args.region, }, opts); } exports.getAliasOutput = getAliasOutput; //# sourceMappingURL=getAlias.js.map