Class CustomResourceProps
Properties to provide a Lambda-backed custom resource.
Inheritance
Implements
Namespace: Amazon.CDK
Assembly: Amazon.CDK.dll
Syntax (csharp)
public class CustomResourceProps : Object, ICustomResourceProps
Syntax (vb)
Public Class CustomResourceProps
Inherits Object
Implements ICustomResourceProps
Remarks
ExampleMetadata: infused
Examples
var serviceToken = CustomResourceProvider.GetOrCreate(this, "Custom::MyCustomResourceType", new CustomResourceProviderProps {
CodeDirectory = $"{__dirname}/my-handler",
Runtime = CustomResourceProviderRuntime.NODEJS_14_X,
Description = "Lambda function created by the custom resource provider"
});
new CustomResource(this, "MyResource", new CustomResourceProps {
ResourceType = "Custom::MyCustomResourceType",
ServiceToken = serviceToken
});
Synopsis
Constructors
CustomResourceProps() |
Properties
PascalCaseProperties | Convert all property keys to pascal case. |
Properties | Properties to pass to the Lambda. |
RemovalPolicy | The policy to apply when this resource is removed from the application. |
ResourceType | For custom resources, you can specify AWS::CloudFormation::CustomResource (the default) as the resource type, or you can specify your own resource type name. |
ServiceToken | The ARN of the provider which implements this custom resource type. |
Constructors
CustomResourceProps()
public CustomResourceProps()
Properties
PascalCaseProperties
Convert all property keys to pascal case.
public Nullable<bool> PascalCaseProperties { get; set; }
Property Value
System.Nullable<System.Boolean>
Remarks
Default: false
Properties
Properties to pass to the Lambda.
public IDictionary<string, object> Properties { get; set; }
Property Value
System.Collections.Generic.IDictionary<System.String, System.Object>
Remarks
Default: - No properties.
RemovalPolicy
The policy to apply when this resource is removed from the application.
public Nullable<RemovalPolicy> RemovalPolicy { get; set; }
Property Value
System.Nullable<RemovalPolicy>
Remarks
Default: cdk.RemovalPolicy.Destroy
ResourceType
For custom resources, you can specify AWS::CloudFormation::CustomResource (the default) as the resource type, or you can specify your own resource type name.
public string ResourceType { get; set; }
Property Value
System.String
Remarks
For example, you can use "Custom::MyCustomResourceTypeName".
Custom resource type names must begin with "Custom::" and can include alphanumeric characters and the following characters: _@-. You can specify a custom resource type name up to a maximum length of 60 characters. You cannot change the type during an update.
Using your own resource type names helps you quickly differentiate the types of custom resources in your stack. For example, if you had two custom resources that conduct two different ping tests, you could name their type as Custom::PingTester to make them easily identifiable as ping testers (instead of using AWS::CloudFormation::CustomResource).
Default: - AWS::CloudFormation::CustomResource
ServiceToken
The ARN of the provider which implements this custom resource type.
public string ServiceToken { get; set; }
Property Value
System.String
Remarks
You can implement a provider by listening to raw AWS CloudFormation events
and specify the ARN of an SNS topic (topic.topicArn
) or the ARN of an AWS
Lambda function (lambda.functionArn
) or use the CDK's custom resource
provider framework which makes it easier to implement robust providers.
Provider framework:
// use the provider framework from aws-cdk/custom-resources:
var provider = new Provider(this, "ResourceProvider", new ProviderProps {
OnEventHandler = onEventHandler,
IsCompleteHandler = isCompleteHandler
});
new CustomResource(this, "MyResource", new CustomResourceProps {
ServiceToken = provider.ServiceToken
});
AWS Lambda function:
// invoke an AWS Lambda function when a lifecycle event occurs:
// invoke an AWS Lambda function when a lifecycle event occurs:
new CustomResource(this, "MyResource", new CustomResourceProps {
ServiceToken = myFunction.FunctionArn
});
SNS topic:
// publish lifecycle events to an SNS topic:
// publish lifecycle events to an SNS topic:
new CustomResource(this, "MyResource", new CustomResourceProps {
ServiceToken = myTopic.TopicArn
});