@pulumi/aws
Version:
A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.
236 lines • 8.44 kB
JavaScript
"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