MultipartUserData Class
Mime multipart user data.
This class represents MIME multipart user data, as described in. Specifying Multiple User Data Blocks Using a MIME Multi Part Archive
Example
ts
const bootHookConf = ec2.UserData.forLinux();
bootHookConf.addCommands('cloud-init-per once docker_options echo \'OPTIONS="${OPTIONS} --storage-opt dm.basesize=40G"\' >> /etc/sysconfig/docker');
const setupCommands = ec2.UserData.forLinux();
setupCommands.addCommands('sudo yum install awscli && echo Packages installed らと > /var/tmp/setup');
const multipartUserData = new ec2.MultipartUserData();
// The docker has to be configured at early stage, so content type is overridden to boothook
multipartUserData.addPart(ec2.MultipartBody.fromUserData(bootHookConf, 'text/cloud-boothook; charset="us-ascii"'));
// Execute the rest of setup
multipartUserData.addPart(ec2.MultipartBody.fromUserData(setupCommands));
new ec2.LaunchTemplate(this, '', {
userData: multipartUserData,
blockDevices: [
// Block device configuration rest
]
});
python
boot_hook_conf = ec2.UserData.for_linux()
boot_hook_conf.add_commands("cloud-init-per once docker_options echo 'OPTIONS=\"${OPTIONS} --storage-opt dm.basesize=40G\"' >> /etc/sysconfig/docker")
setup_commands = ec2.UserData.for_linux()
setup_commands.add_commands("sudo yum install awscli && echo Packages installed らと > /var/tmp/setup")
multipart_user_data = ec2.MultipartUserData()
# The docker has to be configured at early stage, so content type is overridden to boothook
multipart_user_data.add_part(ec2.MultipartBody.from_user_data(boot_hook_conf, "text/cloud-boothook; charset=\"us-ascii\""))
# Execute the rest of setup
multipart_user_data.add_part(ec2.MultipartBody.from_user_data(setup_commands))
ec2.LaunchTemplate(self, "",
user_data=multipart_user_data,
block_devices=[]
)
java
UserData bootHookConf = UserData.forLinux();
bootHookConf.addCommands("cloud-init-per once docker_options echo 'OPTIONS=\"${OPTIONS} --storage-opt dm.basesize=40G\"' >> /etc/sysconfig/docker");
UserData setupCommands = UserData.forLinux();
setupCommands.addCommands("sudo yum install awscli && echo Packages installed らと > /var/tmp/setup");
MultipartUserData multipartUserData = new MultipartUserData();
// The docker has to be configured at early stage, so content type is overridden to boothook
multipartUserData.addPart(MultipartBody.fromUserData(bootHookConf, "text/cloud-boothook; charset=\"us-ascii\""));
// Execute the rest of setup
multipartUserData.addPart(MultipartBody.fromUserData(setupCommands));
LaunchTemplate.Builder.create(this, "")
.userData(multipartUserData)
.blockDevices(List.of())
.build();
csharp
// Install: dotnet add package Amazon.CDK.Lib
var bootHookConf = UserData.ForLinux();
bootHookConf.AddCommands("cloud-init-per once docker_options echo 'OPTIONS=\"${OPTIONS} --storage-opt dm.basesize=40G\"' >> /etc/sysconfig/docker");
var setupCommands = UserData.ForLinux();
setupCommands.AddCommands("sudo yum install awscli && echo Packages installed らと > /var/tmp/setup");
var multipartUserData = new MultipartUserData();
// The docker has to be configured at early stage, so content type is overridden to boothook
multipartUserData.AddPart(MultipartBody.FromUserData(bootHookConf, "text/cloud-boothook; charset=\"us-ascii\""));
// Execute the rest of setup
multipartUserData.AddPart(MultipartBody.FromUserData(setupCommands));
new LaunchTemplate(this, "", new LaunchTemplateProps {
UserData = multipartUserData,
BlockDevices = new [] { }
});
go
// Install: go get github.com/aws/aws-cdk-go/awscdk/v2
bootHookConf := ec2.UserData_ForLinux()
bootHookConf.AddCommands(jsii.String("cloud-init-per once docker_options echo 'OPTIONS=\"${OPTIONS} --storage-opt dm.basesize=40G\"' >> /etc/sysconfig/docker"))
setupCommands := ec2.UserData_ForLinux()
setupCommands.AddCommands(jsii.String("sudo yum install awscli && echo Packages installed らと > /var/tmp/setup"))
multipartUserData := ec2.NewMultipartUserData()
// The docker has to be configured at early stage, so content type is overridden to boothook
multipartUserData.AddPart(ec2.MultipartBody_FromUserData(bootHookConf, jsii.String("text/cloud-boothook; charset=\"us-ascii\"")))
// Execute the rest of setup
multipartUserData.AddPart(ec2.MultipartBody_FromUserData(setupCommands))
ec2.NewLaunchTemplate(this, jsii.String(""), &LaunchTemplateProps{
UserData: multipartUserData,
BlockDevices: []BlockDevice{
},
})
Initializer
ts
new MultipartUserData(opts?: MultipartUserDataOptions)
python
MultipartUserData(opts: typing.Optional[MultipartUserDataOptions] = None)
java
new MultipartUserData(MultipartUserDataOptions opts)
csharp
new MultipartUserData(MultipartUserDataOptions? opts = null)
go
NewMultipartUserData(Opts MultipartUserDataOptions)
Methods
addCommands(...commands: string[]): voiddef add_commands(self, commands: str) -> Nonepublic void addCommands(String commands)public void AddCommands(string commands)func AddCommands(Commands *string)#Add one or more commands to the user data.
addExecuteFileCommand(params: ExecuteFileOptions): voiddef add_execute_file_command(self, params: ExecuteFileOptions) -> Nonepublic void addExecuteFileCommand(ExecuteFileOptions params)public void AddExecuteFileCommand(ExecuteFileOptions params)func AddExecuteFileCommand(Params ExecuteFileOptions)#Adds commands to execute a file.
addOnExitCommands(...commands: string[]): voiddef add_on_exit_commands(self, commands: str) -> Nonepublic void addOnExitCommands(String commands)public void AddOnExitCommands(string commands)func AddOnExitCommands(Commands *string)#Add one or more commands to the user data that will run when the script exits.
addPart(part: MultipartBody): voiddef add_part(self, part: MultipartBody) -> Nonepublic void addPart(MultipartBody part)public void AddPart(MultipartBody part)func AddPart(Part MultipartBody)#Adds a part to the list of parts.
addS3DownloadCommand(params: S3DownloadOptions): stringdef add_s3_download_command(self, params: S3DownloadOptions) -> strpublic String addS3DownloadCommand(S3DownloadOptions params)public string AddS3DownloadCommand(S3DownloadOptions params)func AddS3DownloadCommand(Params S3DownloadOptions) *string#Adds commands to download a file from S3.
addSignalOnExitCommand(resource: Resource): voiddef add_signal_on_exit_command(self, resource: Resource) -> Nonepublic void addSignalOnExitCommand(Resource resource)public void AddSignalOnExitCommand(Resource resource)func AddSignalOnExitCommand(Resource Resource)#Adds a command which will send a cfn-signal when the user data script ends.
addUserDataPart(userData: UserData, contentType?: string, makeDefault?: boolean): voiddef add_user_data_part(self, user_data: UserData, content_type: typing.Optional[str] = None, make_default: typing.Optional[bool] = None) -> Nonepublic void addUserDataPart(UserData userData, String contentType, Boolean makeDefault)public void AddUserDataPart(UserData userData, string? contentType = null, bool? makeDefault = null)func AddUserDataPart(UserData UserData, ContentType *string, MakeDefault *bool)#Adds a multipart part based on a UserData object.
notes
If makeDefault is true, then the UserData added by this method will also be the target of calls to the add*Command methods on this MultipartUserData object.
If makeDefault is false, then this is the same as calling:
ts
declare const multiPart: ec2.MultipartUserData;
declare const userData: ec2.UserData;
declare const contentType: string;
multiPart.addPart(ec2.MultipartBody.fromUserData(userData, contentType));
An undefined makeDefault defaults to either:
trueif no default UserData has been set yet; orfalseif there is no default UserData set.
custom(content: string): UserData@staticmethod def custom(content: str) -> UserDatapublic static UserData custom(String content)public static UserData Custom(string content)func Custom(Content *string) UserDatastatic#Create a userdata object with custom content.
forLinux(options?: LinuxUserDataOptions): UserData@staticmethod def for_linux(options: typing.Optional[LinuxUserDataOptions] = None) -> UserDatapublic static UserData forLinux(LinuxUserDataOptions options)public static UserData ForLinux(LinuxUserDataOptions? options = null)func ForLinux(Options LinuxUserDataOptions) UserDatastatic#Create a userdata object for Linux hosts.
forOperatingSystem(os: OperatingSystemType): UserData@staticmethod def for_operating_system(os: OperatingSystemType) -> UserDatapublic static UserData forOperatingSystem(OperatingSystemType os)public static UserData ForOperatingSystem(OperatingSystemType os)func ForOperatingSystem(Os OperatingSystemType) UserDatastatic#forWindows(options?: WindowsUserDataOptions): UserData@staticmethod def for_windows(options: typing.Optional[WindowsUserDataOptions] = None) -> UserDatapublic static UserData forWindows(WindowsUserDataOptions options)public static UserData ForWindows(WindowsUserDataOptions? options = null)func ForWindows(Options WindowsUserDataOptions) UserDatastatic#Create a userdata object for Windows hosts.
render(): stringdef render(self, ) -> strpublic String render()public string Render()func Render() *string#Render the UserData for use in a construct.