Skip to content

LayerVersionPermission ​

The LayerVersionPermission resource allows you to manage permissions for AWS Lambda Layer Versions, enabling you to control which AWS accounts or organizations can use a specific layer version. For more detailed information, refer to the AWS Lambda LayerVersionPermissions documentation.

Minimal Example ​

Create a basic LayerVersionPermission that allows a specific AWS account to use a layer version.

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

const layerPermission = await AWS.Lambda.LayerVersionPermission("exampleLayerPermission", {
  Action: "lambda:GetLayerVersion",
  LayerVersionArn: "arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1",
  Principal: "123456789012", // AWS Account ID
  adopt: true // Adopt existing resource if it already exists
});

Advanced Configuration ​

Configure LayerVersionPermission to allow an entire organization to access a layer version.

ts
const orgLayerPermission = await AWS.Lambda.LayerVersionPermission("orgLayerPermission", {
  Action: "lambda:GetLayerVersion",
  LayerVersionArn: "arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1",
  Principal: "*", // Allow all principals
  OrganizationId: "o-12345678" // Example Organization ID
});

Specific Use Case: Grant Access to Multiple Accounts ​

You can set permissions for multiple AWS accounts by creating multiple LayerVersionPermission resources.

ts
const account1Permission = await AWS.Lambda.LayerVersionPermission("account1Permission", {
  Action: "lambda:GetLayerVersion",
  LayerVersionArn: "arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1",
  Principal: "111111111111" // First AWS Account ID
});

const account2Permission = await AWS.Lambda.LayerVersionPermission("account2Permission", {
  Action: "lambda:GetLayerVersion",
  LayerVersionArn: "arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1",
  Principal: "222222222222" // Second AWS Account ID
});