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"
});