InstanceProfile
The InstanceProfile resource allows you to manage AWS IAM InstanceProfiles which are used to associate IAM roles with EC2 instances to grant them permissions.
Minimal Example
Section titled “Minimal Example”Create a basic instance profile with a specified role and a name.
import AWS from "alchemy/aws/control";
const instanceProfile = await AWS.IAM.InstanceProfile("basicInstanceProfile", { instanceProfileName: "WebServerProfile", roles: ["WebServerRole"], path: "/instance-profiles/"});
Advanced Configuration
Section titled “Advanced Configuration”Add additional properties such as a custom path for the instance profile.
const advancedInstanceProfile = await AWS.IAM.InstanceProfile("advancedInstanceProfile", { instanceProfileName: "DatabaseServerProfile", roles: ["DatabaseAccessRole"], path: "/instance-profiles/secure/", adopt: true // Adopt existing resource if it exists});
Associating Multiple Roles
Section titled “Associating Multiple Roles”Create an instance profile that can associate multiple roles for broader permissions.
const multiRoleInstanceProfile = await AWS.IAM.InstanceProfile("multiRoleInstanceProfile", { instanceProfileName: "AppServerProfile", roles: ["AppRole", "MonitoringRole"], path: "/instance-profiles/app/"});
Using Instance Profiles in EC2
Section titled “Using Instance Profiles in EC2”Demonstrate how to associate the instance profile with an EC2 instance.
import AWS from "alchemy/aws/control";
const ec2Instance = await AWS.EC2.Instance("appServerInstance", { imageId: "ami-0abcdef1234567890", // Replace with a valid AMI ID instanceType: "t2.micro", iamInstanceProfile: multiRoleInstanceProfile.instanceProfileName, minCount: 1, maxCount: 1});