Role
The Role resource lets you create and manage AWS IAM Roles that define permissions for AWS services and users.
Minimal Example
Section titled “Minimal Example”Create a basic Lambda execution role with permissions to write logs:
import { Role } from "alchemy/aws";
const role = await Role("lambda-role", {  roleName: "lambda-role",  assumeRolePolicy: {    Version: "2012-10-17",    Statement: [      {        Effect: "Allow",        Principal: {          Service: "lambda.amazonaws.com",        },        Action: "sts:AssumeRole",      },    ],  },  policies: [    {      policyName: "logs",      policyDocument: {        Version: "2012-10-17",        Statement: [          {            Effect: "Allow",            Action: [              "logs:CreateLogGroup",              "logs:CreateLogStream",              "logs:PutLogEvents",            ],            Resource: "*",          },        ],      },    },  ],});With Managed Policies
Section titled “With Managed Policies”Attach AWS managed policies to grant common permissions:
import { Role } from "alchemy/aws";
const role = await Role("readonly-role", {  roleName: "readonly-role",  assumeRolePolicy: {    Version: "2012-10-17",    Statement: [      {        Effect: "Allow",        Principal: {          Service: "lambda.amazonaws.com",        },        Action: "sts:AssumeRole",      },    ],  },  managedPolicyArns: ["arn:aws:iam::aws:policy/ReadOnlyAccess"],});Multiple Inline Policies
Section titled “Multiple Inline Policies”Create a role with multiple inline policies and custom session duration:
import { Role } from "alchemy/aws";
const role = await Role("custom-role", {  roleName: "custom-role",  assumeRolePolicy: {    Version: "2012-10-17",    Statement: [      {        Effect: "Allow",        Principal: {          Service: "lambda.amazonaws.com",        },        Action: "sts:AssumeRole",      },    ],  },  maxSessionDuration: 7200,  policies: [    {      policyName: "logs",      policyDocument: {        Version: "2012-10-17",        Statement: [          {            Effect: "Allow",            Action: [              "logs:CreateLogGroup",              "logs:CreateLogStream",              "logs:PutLogEvents",            ],            Resource: "*",          },        ],      },    },    {      policyName: "s3",      policyDocument: {        Version: "2012-10-17",        Statement: [          {            Effect: "Allow",            Action: "s3:ListBucket",            Resource: "*",          },        ],      },    },  ],});