Skip to content

PolicyTemplate ​

The PolicyTemplate resource allows you to create and manage AWS VerifiedPermissions PolicyTemplates that define permission policies for your applications.

Minimal Example ​

Create a basic policy template with required properties and a description.

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

const basicPolicyTemplate = await AWS.VerifiedPermissions.PolicyTemplate("basicPolicyTemplate", {
  Description: "Basic policy template for user permissions",
  Statement: JSON.stringify({
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Action: "s3:GetObject",
        Resource: "arn:aws:s3:::my-bucket/*"
      }
    ]
  }),
  PolicyStoreId: "myPolicyStore"
});

Advanced Configuration ​

Define a more complex policy template with additional permissions and a longer description.

ts
const advancedPolicyTemplate = await AWS.VerifiedPermissions.PolicyTemplate("advancedPolicyTemplate", {
  Description: "Advanced policy template for managing user access to S3 and DynamoDB",
  Statement: JSON.stringify({
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Action: [
          "s3:GetObject",
          "s3:PutObject"
        ],
        Resource: "arn:aws:s3:::my-advanced-bucket/*"
      },
      {
        Effect: "Allow",
        Action: "dynamodb:Query",
        Resource: "arn:aws:dynamodb:us-east-1:123456789012:table/MyTable"
      }
    ]
  }),
  PolicyStoreId: "myAdvancedPolicyStore"
});

Adopt Existing Resource ​

Create a policy template that adopts an existing resource instead of failing if the resource already exists.

ts
const adoptPolicyTemplate = await AWS.VerifiedPermissions.PolicyTemplate("adoptPolicyTemplate", {
  Description: "Adopt existing policy template",
  Statement: JSON.stringify({
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Action: "lambda:InvokeFunction",
        Resource: "arn:aws:lambda:us-east-1:123456789012:function:myFunction"
      }
    ]
  }),
  PolicyStoreId: "myAdoptPolicyStore",
  adopt: true
});