Skip to content

Permission ​

The Permission resource allows you to manage AWS Lambda Permissions that control which services or accounts can invoke your Lambda functions.

Minimal Example ​

Create a basic permission for a Lambda function to allow invocation from an AWS service (e.g., API Gateway):

ts
import AWS from "alchemy/aws/control";

const lambdaPermission = await AWS.Lambda.Permission("apiGatewayInvokePermission", {
  FunctionName: "myLambdaFunction",
  Action: "lambda:InvokeFunction",
  Principal: "apigateway.amazonaws.com",
  SourceArn: "arn:aws:execute-api:us-east-1:123456789012:myApiId/*"
});

Advanced Configuration ​

Configure a permission with an event source token for more secure invocation:

ts
const secureLambdaPermission = await AWS.Lambda.Permission("secureInvokePermission", {
  FunctionName: "mySecureLambdaFunction",
  Action: "lambda:InvokeFunction",
  Principal: "events.amazonaws.com",
  SourceArn: "arn:aws:events:us-east-1:123456789012:rule/myEventRule",
  EventSourceToken: "myEventSourceToken"
});

Allow Invocation from a Specific Account ​

Create a permission that allows a specific AWS account to invoke the Lambda function:

ts
const accountInvokePermission = await AWS.Lambda.Permission("accountInvokePermission", {
  FunctionName: "myAccountLambdaFunction",
  Action: "lambda:InvokeFunction",
  Principal: "123456789012", // The AWS Account ID
  SourceAccount: "123456789012"
});

Using Function URL with Auth Type ​

Set up a permission for a Lambda function URL with a specific authentication type:

ts
const functionUrlPermission = await AWS.Lambda.Permission("functionUrlPermission", {
  FunctionName: "myFunctionUrlLambda",
  Action: "lambda:InvokeFunction",
  Principal: "*",
  FunctionUrlAuthType: "AWS_IAM"
});