Skip to content

Permission ​

The Permission resource allows you to manage AWS RAM Permissions that define the policies associated with resource sharing. This enables you to control access to shared resources effectively.

Minimal Example ​

Create a basic RAM Permission with required properties and a common optional tag.

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

const ramPermission = await AWS.RAM.Permission("basicRamPermission", {
  resourceType: "AWS::S3::Bucket",
  policyTemplate: {
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Action: "s3:GetObject",
        Resource: "arn:aws:s3:::my-example-bucket/*"
      }
    ]
  },
  tags: [
    {
      Key: "Environment",
      Value: "Development"
    }
  ],
  name: "BasicPermission"
});

Advanced Configuration ​

Configure a RAM Permission with a more complex policy template and multiple tags.

ts
const advancedRamPermission = await AWS.RAM.Permission("advancedRamPermission", {
  resourceType: "AWS::EC2::Instance",
  policyTemplate: {
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Action: ["ec2:StartInstances", "ec2:StopInstances"],
        Resource: "arn:aws:ec2:us-west-2:123456789012:instance/*"
      },
      {
        Effect: "Allow",
        Action: "ec2:DescribeInstances",
        Resource: "*"
      }
    ]
  },
  tags: [
    {
      Key: "Project",
      Value: "CloudMigration"
    },
    {
      Key: "Owner",
      Value: "DevTeam"
    }
  ],
  name: "AdvancedPermission"
});

Custom Policy Example ​

Create a RAM Permission with a custom policy template that allows specific actions on a DynamoDB table.

ts
const dynamoDbPermission = await AWS.RAM.Permission("dynamoDbPermission", {
  resourceType: "AWS::DynamoDB::Table",
  policyTemplate: {
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Action: ["dynamodb:PutItem", "dynamodb:GetItem"],
        Resource: "arn:aws:dynamodb:us-east-1:123456789012:table/MyExampleTable"
      }
    ]
  },
  tags: [
    {
      Key: "Service",
      Value: "DataProcessing"
    }
  ],
  name: "DynamoDbPermission"
});