Documentation ¶
Index ¶
- func AwsCustomResourcePolicy_ANY_RESOURCE() *[]*string
- func AwsCustomResource_IsConstruct(x interface{}) *bool
- func AwsCustomResource_PROVIDER_FUNCTION_UUID() *string
- func NewAwsCustomResource_Override(a AwsCustomResource, scope constructs.Construct, id *string, ...)
- func NewCustomResourceLambdaRuntime_Override(c CustomResourceLambdaRuntime, lambdaRuntime awslambda.Runtime)
- func NewCustomResourceLogRetention_Override(c CustomResourceLogRetention, setLogRetention awslogs.RetentionDays)
- func NewCustomResourceRemovalPolicy_Override(c CustomResourceRemovalPolicy, removalPolicy awscdk.RemovalPolicy)
- func NewLogging_Override(l Logging, props *LoggingProps)
- func NewPhysicalResourceIdReference_Override(p PhysicalResourceIdReference)
- func NewProvider_Override(p Provider, scope constructs.Construct, id *string, props *ProviderProps)
- func NewWaiterStateMachine_Override(w WaiterStateMachine, scope constructs.Construct, id *string, ...)
- func Provider_IsConstruct(x interface{}) *bool
- func WaiterStateMachine_IsConstruct(x interface{}) *bool
- type AwsCustomResource
- type AwsCustomResourcePolicy
- type AwsCustomResourceProps
- type AwsSdkCall
- type CustomResourceConfig
- type CustomResourceLambdaRuntime
- type CustomResourceLogRetention
- type CustomResourceRemovalPolicy
- type LogOptions
- type Logging
- type LoggingProps
- type PhysicalResourceId
- type PhysicalResourceIdReference
- type Provider
- type ProviderProps
- type SdkCallsPolicyOptions
- type WaiterStateMachine
- type WaiterStateMachineProps
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AwsCustomResourcePolicy_ANY_RESOURCE ¶
func AwsCustomResourcePolicy_ANY_RESOURCE() *[]*string
func AwsCustomResource_IsConstruct ¶
func AwsCustomResource_IsConstruct(x interface{}) *bool
Checks if `x` is a construct.
Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.
Returns: true if `x` is an object created from a class which extends `Construct`.
func AwsCustomResource_PROVIDER_FUNCTION_UUID ¶ added in v2.65.0
func AwsCustomResource_PROVIDER_FUNCTION_UUID() *string
func NewAwsCustomResource_Override ¶
func NewAwsCustomResource_Override(a AwsCustomResource, scope constructs.Construct, id *string, props *AwsCustomResourceProps)
func NewCustomResourceLambdaRuntime_Override ¶ added in v2.155.0
func NewCustomResourceLambdaRuntime_Override(c CustomResourceLambdaRuntime, lambdaRuntime awslambda.Runtime)
func NewCustomResourceLogRetention_Override ¶ added in v2.154.0
func NewCustomResourceLogRetention_Override(c CustomResourceLogRetention, setLogRetention awslogs.RetentionDays)
func NewCustomResourceRemovalPolicy_Override ¶ added in v2.154.0
func NewCustomResourceRemovalPolicy_Override(c CustomResourceRemovalPolicy, removalPolicy awscdk.RemovalPolicy)
func NewLogging_Override ¶ added in v2.138.0
func NewLogging_Override(l Logging, props *LoggingProps)
func NewPhysicalResourceIdReference_Override ¶
func NewPhysicalResourceIdReference_Override(p PhysicalResourceIdReference)
func NewProvider_Override ¶
func NewProvider_Override(p Provider, scope constructs.Construct, id *string, props *ProviderProps)
func NewWaiterStateMachine_Override ¶ added in v2.116.0
func NewWaiterStateMachine_Override(w WaiterStateMachine, scope constructs.Construct, id *string, props *WaiterStateMachineProps)
func Provider_IsConstruct ¶
func Provider_IsConstruct(x interface{}) *bool
Checks if `x` is a construct.
Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.
Returns: true if `x` is an object created from a class which extends `Construct`.
func WaiterStateMachine_IsConstruct ¶ added in v2.116.0
func WaiterStateMachine_IsConstruct(x interface{}) *bool
Checks if `x` is a construct.
Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.
Returns: true if `x` is an object created from a class which extends `Construct`.
Types ¶
type AwsCustomResource ¶
type AwsCustomResource interface { constructs.Construct awsiam.IGrantable // The principal to grant permissions to. GrantPrincipal() awsiam.IPrincipal // The tree node. Node() constructs.Node // Returns response data for the AWS SDK call as string. // // Example for S3 / listBucket : 'Buckets.0.Name' // // Note that you cannot use this method if `ignoreErrorCodesMatching` // is configured for any of the SDK calls. This is because in such a case, // the response data might not exist, and will cause a CloudFormation deploy time error. GetResponseField(dataPath *string) *string // Returns response data for the AWS SDK call. // // Example for S3 / listBucket : 'Buckets.0.Name' // // Use `Token.asXxx` to encode the returned `Reference` as a specific type or // use the convenience `getDataString` for string attributes. // // Note that you cannot use this method if `ignoreErrorCodesMatching` // is configured for any of the SDK calls. This is because in such a case, // the response data might not exist, and will cause a CloudFormation deploy time error. GetResponseFieldReference(dataPath *string) awscdk.Reference // Returns a string representation of this construct. ToString() *string }
Defines a custom resource that is materialized using specific AWS API calls.
These calls are created using a singleton Lambda function.
Use this to bridge any gap that might exist in the CloudFormation Coverage. You can specify exactly which calls are invoked for the 'CREATE', 'UPDATE' and 'DELETE' life cycle events.
Example:
getParameter := cr.NewAwsCustomResource(this, jsii.String("GetParameter"), &AwsCustomResourceProps{ OnUpdate: &AwsSdkCall{ // will also be called for a CREATE event Service: jsii.String("SSM"), Action: jsii.String("GetParameter"), Parameters: map[string]interface{}{ "Name": jsii.String("my-parameter"), "WithDecryption": jsii.Boolean(true), }, PhysicalResourceId: cr.PhysicalResourceId_Of(date.now().toString()), }, Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), }) // Use the value in another construct with getParameter.GetResponseField(jsii.String("Parameter.Value"))
func NewAwsCustomResource ¶
func NewAwsCustomResource(scope constructs.Construct, id *string, props *AwsCustomResourceProps) AwsCustomResource
type AwsCustomResourcePolicy ¶
type AwsCustomResourcePolicy interface { // resources for auto-generated from SDK calls. Resources() *[]*string // statements for explicit policy. Statements() *[]awsiam.PolicyStatement }
The IAM Policy that will be applied to the different calls.
Example:
getParameter := cr.NewAwsCustomResource(this, jsii.String("GetParameter"), &AwsCustomResourceProps{ OnUpdate: &AwsSdkCall{ // will also be called for a CREATE event Service: jsii.String("SSM"), Action: jsii.String("GetParameter"), Parameters: map[string]interface{}{ "Name": jsii.String("my-parameter"), "WithDecryption": jsii.Boolean(true), }, PhysicalResourceId: cr.PhysicalResourceId_Of(date.now().toString()), }, Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), }) // Use the value in another construct with getParameter.GetResponseField(jsii.String("Parameter.Value"))
func AwsCustomResourcePolicy_FromSdkCalls ¶
func AwsCustomResourcePolicy_FromSdkCalls(options *SdkCallsPolicyOptions) AwsCustomResourcePolicy
Generate IAM Policy Statements from the configured SDK calls.
Each SDK call with be translated to an IAM Policy Statement in the form of: `call.service:call.action` (e.g `s3:PutObject`).
This policy generator assumes the IAM policy name has the same name as the API call. This is true in 99% of cases, but there are exceptions (for example, S3's `PutBucketLifecycleConfiguration` requires `s3:PutLifecycleConfiguration` permissions, Lambda's `Invoke` requires `lambda:InvokeFunction` permissions). Use `fromStatements` if you want to do a call that requires different IAM action names.
func AwsCustomResourcePolicy_FromStatements ¶
func AwsCustomResourcePolicy_FromStatements(statements *[]awsiam.PolicyStatement) AwsCustomResourcePolicy
Explicit IAM Policy Statements.
type AwsCustomResourceProps ¶
type AwsCustomResourceProps struct { // A name for the singleton Lambda function implementing this custom resource. // // The function name will remain the same after the first AwsCustomResource is created in a stack. // Default: - AWS CloudFormation generates a unique physical ID and uses that // ID for the function's name. For more information, see Name Type. // FunctionName *string `field:"optional" json:"functionName" yaml:"functionName"` // Whether to install the latest AWS SDK v2. // // If not specified, this uses whatever JavaScript SDK version is the default in // AWS Lambda at the time of execution. // // Otherwise, installs the latest version from 'npmjs.com'. The installation takes // around 60 seconds and requires internet connectivity. // // The default can be controlled using the context key // `@aws-cdk/customresources:installLatestAwsSdkDefault` is. // Default: - The value of `@aws-cdk/customresources:installLatestAwsSdkDefault`, otherwise `true`. // InstallLatestAwsSdk *bool `field:"optional" json:"installLatestAwsSdk" yaml:"installLatestAwsSdk"` // The Log Group used for logging of events emitted by the custom resource's lambda function. // // Providing a user-controlled log group was rolled out to commercial regions on 2023-11-16. // If you are deploying to another type of region, please check regional availability first. // Default: - a default log group created by AWS Lambda. // LogGroup awslogs.ILogGroup `field:"optional" json:"logGroup" yaml:"logGroup"` // The number of days log events of the singleton Lambda function implementing this custom resource are kept in CloudWatch Logs. // // This is a legacy API and we strongly recommend you migrate to `logGroup` if you can. // `logGroup` allows you to create a fully customizable log group and instruct the Lambda function to send logs to it. // Default: logs.RetentionDays.INFINITE // LogRetention awslogs.RetentionDays `field:"optional" json:"logRetention" yaml:"logRetention"` // The memory size for the singleton Lambda function implementing this custom resource. // Default: 512 mega in case if installLatestAwsSdk is false. // MemorySize *float64 `field:"optional" json:"memorySize" yaml:"memorySize"` // The AWS SDK call to make when the resource is created. // Default: - the call when the resource is updated. // OnCreate *AwsSdkCall `field:"optional" json:"onCreate" yaml:"onCreate"` // The AWS SDK call to make when the resource is deleted. // Default: - no call. // OnDelete *AwsSdkCall `field:"optional" json:"onDelete" yaml:"onDelete"` // The AWS SDK call to make when the resource is updated. // Default: - no call. // OnUpdate *AwsSdkCall `field:"optional" json:"onUpdate" yaml:"onUpdate"` // The policy that will be added to the execution role of the Lambda function implementing this custom resource provider. // // The custom resource also implements `iam.IGrantable`, making it possible // to use the `grantXxx()` methods. // // As this custom resource uses a singleton Lambda function, it's important // to note the that function's role will eventually accumulate the // permissions/grants from all resources. // // Note that a policy must be specified if `role` is not provided, as // by default a new role is created which requires policy changes to access // resources. // See: Policy.fromSdkCalls // // Default: - no policy added. // Policy AwsCustomResourcePolicy `field:"optional" json:"policy" yaml:"policy"` // The policy to apply when this resource is removed from the application. // Default: cdk.RemovalPolicy.Destroy // RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"` // Cloudformation Resource type. // Default: - Custom::AWS. // ResourceType *string `field:"optional" json:"resourceType" yaml:"resourceType"` // The execution role for the singleton Lambda function implementing this custom resource provider. // // This role will apply to all `AwsCustomResource` // instances in the stack. The role must be assumable by the // `lambda.amazonaws.com` service principal. // Default: - a new role is created. // Role awsiam.IRole `field:"optional" json:"role" yaml:"role"` // The timeout for the singleton Lambda function implementing this custom resource. // Default: Duration.minutes(2) // Timeout awscdk.Duration `field:"optional" json:"timeout" yaml:"timeout"` // The vpc to provision the lambda function in. // Default: - the function is not provisioned inside a vpc. // Vpc awsec2.IVpc `field:"optional" json:"vpc" yaml:"vpc"` // Which subnets from the VPC to place the lambda function in. // // Only used if 'vpc' is supplied. Note: internet access for Lambdas // requires a NAT gateway, so picking Public subnets is not allowed. // Default: - the Vpc default strategy if not specified. // VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"` }
Properties for AwsCustomResource.
Note that at least onCreate, onUpdate or onDelete must be specified.
Example:
getParameter := cr.NewAwsCustomResource(this, jsii.String("GetParameter"), &AwsCustomResourceProps{ OnUpdate: &AwsSdkCall{ // will also be called for a CREATE event Service: jsii.String("SSM"), Action: jsii.String("GetParameter"), Parameters: map[string]interface{}{ "Name": jsii.String("my-parameter"), "WithDecryption": jsii.Boolean(true), }, PhysicalResourceId: cr.PhysicalResourceId_Of(date.now().toString()), }, Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), }) // Use the value in another construct with getParameter.GetResponseField(jsii.String("Parameter.Value"))
type AwsSdkCall ¶
type AwsSdkCall struct { // The service action to call. // // This is the name of an AWS API call, in one of the following forms: // // - An API call name as found in the API Reference documentation (`GetObject`) // - The API call name starting with a lowercase letter (`getObject`) // - The AWS SDK for JavaScript v3 command class name (`GetObjectCommand`). // See: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html // Action *string `field:"required" json:"action" yaml:"action"` // The service to call. // // This is the name of an AWS service, in one of the following forms: // // - An AWS SDK for JavaScript v3 package name (`@aws-sdk/client-api-gateway`) // - An AWS SDK for JavaScript v3 client name (`api-gateway`) // - An AWS SDK for JavaScript v2 constructor name (`APIGateway`) // - A lowercase AWS SDK for JavaScript v2 constructor name (`apigateway`). // See: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html // Service *string `field:"required" json:"service" yaml:"service"` // API version to use for the service. // See: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/locking-api-versions.html // // Default: - use latest available API version. // ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` // Used for running the SDK calls in underlying lambda with a different role. // // Can be used primarily for cross-account requests to for example connect // hostedzone with a shared vpc. // Region controls where assumeRole call is made. // // Example for Route53 / associateVPCWithHostedZone. // Default: - run without assuming role. // AssumedRoleArn *string `field:"optional" json:"assumedRoleArn" yaml:"assumedRoleArn"` // The regex pattern to use to catch API errors. // // The `code` property of the // `Error` object will be tested against this pattern. If there is a match an // error will not be thrown. // Default: - do not catch errors. // IgnoreErrorCodesMatching *string `field:"optional" json:"ignoreErrorCodesMatching" yaml:"ignoreErrorCodesMatching"` // A property used to configure logging during lambda function execution. // // Note: The default Logging configuration is all. This configuration will enable logging on all logged data // in the lambda handler. This includes: // - The event object that is received by the lambda handler // - The response received after making a API call // - The response object that the lambda handler will return // - SDK versioning information // - Caught and uncaught errors. // Default: Logging.all() // Logging Logging `field:"optional" json:"logging" yaml:"logging"` // Restrict the data returned by the custom resource to specific paths in the API response. // // Use this to limit the data returned by the custom // resource if working with API calls that could potentially result in custom // response objects exceeding the hard limit of 4096 bytes. // // Example for ECS / updateService: ['service.deploymentConfiguration.maximumPercent'] // Default: - return all data. // OutputPaths *[]*string `field:"optional" json:"outputPaths" yaml:"outputPaths"` // The parameters for the service action. // See: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html // // Default: - no parameters. // Parameters interface{} `field:"optional" json:"parameters" yaml:"parameters"` // The physical resource id of the custom resource for this call. // // Mandatory for onCreate call. // In onUpdate, you can omit this to passthrough it from request. // Default: - no physical resource id. // PhysicalResourceId PhysicalResourceId `field:"optional" json:"physicalResourceId" yaml:"physicalResourceId"` // The region to send service requests to. // // **Note: Cross-region operations are generally considered an anti-pattern.** // **Consider first deploying a stack in that region.** // Default: - the region where this custom resource is deployed. // Region *string `field:"optional" json:"region" yaml:"region"` }
An AWS SDK call.
Example:
cr.NewAwsCustomResource(this, jsii.String("GetParameterCustomResource"), &AwsCustomResourceProps{ OnUpdate: &AwsSdkCall{ // will also be called for a CREATE event Service: jsii.String("SSM"), Action: jsii.String("getParameter"), Parameters: map[string]interface{}{ "Name": jsii.String("my-parameter"), "WithDecryption": jsii.Boolean(true), }, PhysicalResourceId: cr.PhysicalResourceId_FromResponse(jsii.String("Parameter.ARN")), }, Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), })
type CustomResourceConfig ¶ added in v2.154.0
type CustomResourceConfig interface { // Set the runtime version on AWS-vended custom resources lambdas. // // This feature is currently experimental. AddLambdaRuntime(lambdaRuntime awslambda.Runtime) // Set the log retention of AWS-vended custom resource lambdas. // // This feature is currently experimental. AddLogRetentionLifetime(rentention awslogs.RetentionDays) // Set the removal policy of AWS-vended custom resource logGroup. // // This feature is currently experimental. AddRemovalPolicy(removalPolicy awscdk.RemovalPolicy) }
Manages AWS-vended Custom Resources.
This feature is currently experimental.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import "github.com/aws/aws-cdk-go/awscdk" customResourceConfig := awscdk.Custom_resources.CustomResourceConfig_Of(this)
func CustomResourceConfig_Of ¶ added in v2.154.0
func CustomResourceConfig_Of(scope constructs.IConstruct) CustomResourceConfig
Returns the CustomResourceConfig for this scope.
type CustomResourceLambdaRuntime ¶ added in v2.155.0
type CustomResourceLambdaRuntime interface {
awscdk.IAspect
// All aspects can visit an IConstruct.
Visit(node constructs.IConstruct)
}
Manages lambda runtime for AWS-vended custom resources.
This feature is currently experimental.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" var runtime runtime customResourceLambdaRuntime := awscdk.Custom_resources.NewCustomResourceLambdaRuntime(runtime)
func NewCustomResourceLambdaRuntime ¶ added in v2.155.0
func NewCustomResourceLambdaRuntime(lambdaRuntime awslambda.Runtime) CustomResourceLambdaRuntime
type CustomResourceLogRetention ¶ added in v2.154.0
type CustomResourceLogRetention interface {
awscdk.IAspect
// All aspects can visit an IConstruct.
Visit(node constructs.IConstruct)
}
Manages log retention for AWS-vended custom resources.
This feature is currently experimental.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" customResourceLogRetention := awscdk.Custom_resources.NewCustomResourceLogRetention(awscdk.Aws_logs.RetentionDays_ONE_DAY)
func NewCustomResourceLogRetention ¶ added in v2.154.0
func NewCustomResourceLogRetention(setLogRetention awslogs.RetentionDays) CustomResourceLogRetention
type CustomResourceRemovalPolicy ¶ added in v2.154.0
type CustomResourceRemovalPolicy interface {
awscdk.IAspect
// All aspects can visit an IConstruct.
Visit(node constructs.IConstruct)
}
Manages removal policy for AWS-vended custom resources.
This feature is currently experimental.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import cdk "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" customResourceRemovalPolicy := awscdk.Custom_resources.NewCustomResourceRemovalPolicy(cdk.RemovalPolicy_DESTROY)
func NewCustomResourceRemovalPolicy ¶ added in v2.154.0
func NewCustomResourceRemovalPolicy(removalPolicy awscdk.RemovalPolicy) CustomResourceRemovalPolicy
type LogOptions ¶ added in v2.116.0
type LogOptions struct { // The log group where the execution history events will be logged. // Default: - a new log group will be created. // Destination awslogs.ILogGroup `field:"optional" json:"destination" yaml:"destination"` // Determines whether execution data is included in your log. // Default: - false. // IncludeExecutionData *bool `field:"optional" json:"includeExecutionData" yaml:"includeExecutionData"` // Defines which category of execution history events are logged. // Default: - ERROR. // Level awsstepfunctions.LogLevel `field:"optional" json:"level" yaml:"level"` }
Log Options for the state machine.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" var logGroup logGroup logOptions := &LogOptions{ Destination: logGroup, IncludeExecutionData: jsii.Boolean(false), Level: awscdk.Aws_stepfunctions.LogLevel_OFF, }
type Logging ¶ added in v2.138.0
type Logging interface { }
A class used to configure Logging during AwsCustomResource SDK calls.
Example:
getParameter := cr.NewAwsCustomResource(this, jsii.String("GetParameter"), &AwsCustomResourceProps{ OnUpdate: &AwsSdkCall{ Service: jsii.String("SSM"), Action: jsii.String("GetParameter"), Parameters: map[string]interface{}{ "Name": jsii.String("my-parameter"), "WithDecryption": jsii.Boolean(true), }, PhysicalResourceId: cr.PhysicalResourceId_Of(date.now().toString()), Logging: cr.Logging_WithDataHidden(), }, Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), })
func Logging_All ¶ added in v2.138.0
func Logging_All() Logging
Enables logging of all logged data in the lambda handler.
This includes the event object, the API call response, all fields in the response object returned by the lambda, and any errors encountered.
func Logging_WithDataHidden ¶ added in v2.138.0
func Logging_WithDataHidden() Logging
Hides logging of data associated with the API call response.
This includes hiding the raw API call response and the `Data` field associated with the lambda handler response.
type LoggingProps ¶ added in v2.138.0
type LoggingProps struct { // Whether or not to log data associated with the API call response. // Default: true. // LogApiResponseData *bool `field:"optional" json:"logApiResponseData" yaml:"logApiResponseData"` }
Properties used to initialize Logging.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import "github.com/aws/aws-cdk-go/awscdk" loggingProps := &LoggingProps{ LogApiResponseData: jsii.Boolean(false), }
type PhysicalResourceId ¶
type PhysicalResourceId interface { // Literal string to be used as the physical id. Id() *string // Path to a response data element to be used as the physical id. ResponsePath() *string }
Physical ID of the custom resource.
Example:
getParameter := cr.NewAwsCustomResource(this, jsii.String("AssociateVPCWithHostedZone"), &AwsCustomResourceProps{ OnCreate: &AwsSdkCall{ AssumedRoleArn: jsii.String("arn:aws:iam::OTHERACCOUNT:role/CrossAccount/ManageHostedZoneConnections"), Service: jsii.String("Route53"), Action: jsii.String("AssociateVPCWithHostedZone"), Parameters: map[string]interface{}{ "HostedZoneId": jsii.String("hz-123"), "VPC": map[string]*string{ "VPCId": jsii.String("vpc-123"), "VPCRegion": jsii.String("region-for-vpc"), }, }, PhysicalResourceId: cr.PhysicalResourceId_Of(jsii.String("${vpcStack.SharedVpc.VpcId}-${vpcStack.Region}-${PrivateHostedZone.HostedZoneId}")), }, //Will ignore any resource and use the assumedRoleArn as resource and 'sts:AssumeRole' for service:action Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), })
func PhysicalResourceId_FromResponse ¶
func PhysicalResourceId_FromResponse(responsePath *string) PhysicalResourceId
Extract the physical resource id from the path (dot notation) to the data in the API call response.
func PhysicalResourceId_Of ¶
func PhysicalResourceId_Of(id *string) PhysicalResourceId
Explicit physical resource id.
type PhysicalResourceIdReference ¶
type PhysicalResourceIdReference interface { awscdk.IResolvable // The creation stack of this resolvable which will be appended to errors thrown during resolution. // // This may return an array with a single informational element indicating how // to get this property populated, if it was skipped for performance reasons. CreationStack() *[]*string // Produce the Token's value at resolution time. Resolve(_context awscdk.IResolveContext) interface{} // toJSON serialization to replace `PhysicalResourceIdReference` with a magic string. ToJSON() *string // Return a string representation of this resolvable object. // // Returns a reversible string representation. ToString() *string }
Reference to the physical resource id that can be passed to the AWS operation as a parameter.
Example:
awsCustom := cr.NewAwsCustomResource(this, jsii.String("aws-custom"), &AwsCustomResourceProps{ OnCreate: &AwsSdkCall{ Service: jsii.String("..."), Action: jsii.String("..."), Parameters: map[string]*string{ "text": jsii.String("..."), }, PhysicalResourceId: cr.PhysicalResourceId_Of(jsii.String("...")), }, OnUpdate: &AwsSdkCall{ Service: jsii.String("..."), Action: jsii.String("..."), Parameters: map[string]interface{}{ "text": jsii.String("..."), "resourceId": cr.NewPhysicalResourceIdReference(), }, }, Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), })
func NewPhysicalResourceIdReference ¶
func NewPhysicalResourceIdReference() PhysicalResourceIdReference
type Provider ¶
type Provider interface { constructs.Construct // The user-defined AWS Lambda function which is invoked asynchronously in order to determine if the operation is complete. IsCompleteHandler() awslambda.IFunction // The tree node. Node() constructs.Node // The user-defined AWS Lambda function which is invoked for all resource lifecycle operations (CREATE/UPDATE/DELETE). OnEventHandler() awslambda.IFunction // The service token to use in order to define custom resources that are backed by this provider. ServiceToken() *string // Returns a string representation of this construct. ToString() *string }
Defines an AWS CloudFormation custom resource provider.
Example:
// Create custom resource handler entrypoint handler := lambda.NewFunction(this, jsii.String("my-handler"), &FunctionProps{ Runtime: lambda.Runtime_NODEJS_20_X(), Handler: jsii.String("index.handler"), Code: lambda.Code_FromInline(jsii.String(` exports.handler = async (event, context) => { return { PhysicalResourceId: '1234', NoEcho: true, Data: { mySecret: 'secret-value', hello: 'world', ghToken: 'gho_xxxxxxx', }, }; };`)), }) // Provision a custom resource provider framework provider := cr.NewProvider(this, jsii.String("my-provider"), &ProviderProps{ OnEventHandler: handler, }) awscdk.NewCustomResource(this, jsii.String("my-cr"), &CustomResourceProps{ ServiceToken: provider.ServiceToken, })
func NewProvider ¶
func NewProvider(scope constructs.Construct, id *string, props *ProviderProps) Provider
type ProviderProps ¶
type ProviderProps struct { // The AWS Lambda function to invoke for all resource lifecycle operations (CREATE/UPDATE/DELETE). // // This function is responsible to begin the requested resource operation // (CREATE/UPDATE/DELETE) and return any additional properties to add to the // event, which will later be passed to `isComplete`. The `PhysicalResourceId` // property must be included in the response. OnEventHandler awslambda.IFunction `field:"required" json:"onEventHandler" yaml:"onEventHandler"` // Whether logging for the waiter state machine is disabled. // Default: - false. // DisableWaiterStateMachineLogging *bool `field:"optional" json:"disableWaiterStateMachineLogging" yaml:"disableWaiterStateMachineLogging"` // The AWS Lambda function to invoke in order to determine if the operation is complete. // // This function will be called immediately after `onEvent` and then // periodically based on the configured query interval as long as it returns // `false`. If the function still returns `false` and the alloted timeout has // passed, the operation will fail. // Default: - provider is synchronous. This means that the `onEvent` handler // is expected to finish all lifecycle operations within the initial invocation. // IsCompleteHandler awslambda.IFunction `field:"optional" json:"isCompleteHandler" yaml:"isCompleteHandler"` // The Log Group used for logging of events emitted by the custom resource's lambda function. // // Providing a user-controlled log group was rolled out to commercial regions on 2023-11-16. // If you are deploying to another type of region, please check regional availability first. // Default: - a default log group created by AWS Lambda. // LogGroup awslogs.ILogGroup `field:"optional" json:"logGroup" yaml:"logGroup"` // The number of days framework log events are kept in CloudWatch Logs. // // When // updating this property, unsetting it doesn't remove the log retention policy. // To remove the retention policy, set the value to `INFINITE`. // // This is a legacy API and we strongly recommend you migrate to `logGroup` if you can. // `logGroup` allows you to create a fully customizable log group and instruct the Lambda function to send logs to it. // Default: logs.RetentionDays.INFINITE // LogRetention awslogs.RetentionDays `field:"optional" json:"logRetention" yaml:"logRetention"` // AWS KMS key used to encrypt provider lambda's environment variables. // Default: - AWS Lambda creates and uses an AWS managed customer master key (CMK). // ProviderFunctionEnvEncryption awskms.IKey `field:"optional" json:"providerFunctionEnvEncryption" yaml:"providerFunctionEnvEncryption"` // Provider Lambda name. // // The provider lambda function name. // Default: - CloudFormation default name from unique physical ID. // ProviderFunctionName *string `field:"optional" json:"providerFunctionName" yaml:"providerFunctionName"` // Time between calls to the `isComplete` handler which determines if the resource has been stabilized. // // The first `isComplete` will be called immediately after `handler` and then // every `queryInterval` seconds, and until `timeout` has been reached or until // `isComplete` returns `true`. // Default: Duration.seconds(5) // QueryInterval awscdk.Duration `field:"optional" json:"queryInterval" yaml:"queryInterval"` // AWS Lambda execution role. // // The role that will be assumed by the AWS Lambda. // Must be assumable by the 'lambda.amazonaws.com' service principal. // Default: - A default role will be created. // Role awsiam.IRole `field:"optional" json:"role" yaml:"role"` // Security groups to attach to the provider functions. // // Only used if 'vpc' is supplied. // Default: - If `vpc` is not supplied, no security groups are attached. Otherwise, a dedicated security // group is created for each function. // SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"` // Total timeout for the entire operation. // // The maximum timeout is 1 hour (yes, it can exceed the AWS Lambda 15 minutes). // Default: Duration.minutes(30) // TotalTimeout awscdk.Duration `field:"optional" json:"totalTimeout" yaml:"totalTimeout"` // The vpc to provision the lambda functions in. // Default: - functions are not provisioned inside a vpc. // Vpc awsec2.IVpc `field:"optional" json:"vpc" yaml:"vpc"` // Which subnets from the VPC to place the lambda functions in. // // Only used if 'vpc' is supplied. Note: internet access for Lambdas // requires a NAT gateway, so picking Public subnets is not allowed. // Default: - the Vpc default strategy if not specified. // VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"` // Defines what execution history events of the waiter state machine are logged and where they are logged. // Default: - A default log group will be created if logging for the waiter state machine is enabled. // WaiterStateMachineLogOptions *LogOptions `field:"optional" json:"waiterStateMachineLogOptions" yaml:"waiterStateMachineLogOptions"` }
Initialization properties for the `Provider` construct.
Example:
// Create custom resource handler entrypoint handler := lambda.NewFunction(this, jsii.String("my-handler"), &FunctionProps{ Runtime: lambda.Runtime_NODEJS_20_X(), Handler: jsii.String("index.handler"), Code: lambda.Code_FromInline(jsii.String(` exports.handler = async (event, context) => { return { PhysicalResourceId: '1234', NoEcho: true, Data: { mySecret: 'secret-value', hello: 'world', ghToken: 'gho_xxxxxxx', }, }; };`)), }) // Provision a custom resource provider framework provider := cr.NewProvider(this, jsii.String("my-provider"), &ProviderProps{ OnEventHandler: handler, }) awscdk.NewCustomResource(this, jsii.String("my-cr"), &CustomResourceProps{ ServiceToken: provider.ServiceToken, })
type SdkCallsPolicyOptions ¶
type SdkCallsPolicyOptions struct { // The resources that the calls will have access to. // // It is best to use specific resource ARN's when possible. However, you can also use `AwsCustomResourcePolicy.ANY_RESOURCE` // to allow access to all resources. For example, when `onCreate` is used to create a resource which you don't // know the physical name of in advance. // // Note that will apply to ALL SDK calls. Resources *[]*string `field:"required" json:"resources" yaml:"resources"` }
Options for the auto-generation of policies based on the configured SDK calls.
Example:
getParameter := cr.NewAwsCustomResource(this, jsii.String("GetParameter"), &AwsCustomResourceProps{ OnUpdate: &AwsSdkCall{ // will also be called for a CREATE event Service: jsii.String("SSM"), Action: jsii.String("GetParameter"), Parameters: map[string]interface{}{ "Name": jsii.String("my-parameter"), "WithDecryption": jsii.Boolean(true), }, PhysicalResourceId: cr.PhysicalResourceId_Of(date.now().toString()), }, Policy: cr.AwsCustomResourcePolicy_FromSdkCalls(&SdkCallsPolicyOptions{ Resources: cr.AwsCustomResourcePolicy_ANY_RESOURCE(), }), }) // Use the value in another construct with getParameter.GetResponseField(jsii.String("Parameter.Value"))
type WaiterStateMachine ¶ added in v2.116.0
type WaiterStateMachine interface { constructs.Construct // The tree node. Node() constructs.Node // The ARN of the state machine. StateMachineArn() *string // Grant the given identity permissions on StartExecution of the state machine. GrantStartExecution(identity awsiam.IGrantable) awsiam.Grant // Returns a string representation of this construct. ToString() *string }
A very simple StateMachine construct highly customized to the provider framework.
We previously used `CfnResource` instead of `CfnStateMachine` to avoid depending on `aws-stepfunctions` module, but now it is okay.
The state machine continuously calls the isCompleteHandler, until it succeeds or times out. The handler is called `maxAttempts` times with an `interval` duration and a `backoffRate` rate.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import cdk "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" var function_ function var logGroup logGroup waiterStateMachine := awscdk.Custom_resources.NewWaiterStateMachine(this, jsii.String("MyWaiterStateMachine"), &WaiterStateMachineProps{ BackoffRate: jsii.Number(123), Interval: cdk.Duration_Minutes(jsii.Number(30)), IsCompleteHandler: function_, MaxAttempts: jsii.Number(123), TimeoutHandler: function_, // the properties below are optional DisableLogging: jsii.Boolean(false), LogOptions: &LogOptions{ Destination: logGroup, IncludeExecutionData: jsii.Boolean(false), Level: awscdk.Aws_stepfunctions.LogLevel_OFF, }, })
func NewWaiterStateMachine ¶ added in v2.116.0
func NewWaiterStateMachine(scope constructs.Construct, id *string, props *WaiterStateMachineProps) WaiterStateMachine
type WaiterStateMachineProps ¶ added in v2.116.0
type WaiterStateMachineProps struct { // Backoff between attempts. BackoffRate *float64 `field:"required" json:"backoffRate" yaml:"backoffRate"` // The interval to wait between attempts. Interval awscdk.Duration `field:"required" json:"interval" yaml:"interval"` // The main handler that notifies if the waiter to decide 'complete' or 'incomplete'. IsCompleteHandler awslambda.IFunction `field:"required" json:"isCompleteHandler" yaml:"isCompleteHandler"` // Number of attempts. MaxAttempts *float64 `field:"required" json:"maxAttempts" yaml:"maxAttempts"` // The handler to call if the waiter times out and is incomplete. TimeoutHandler awslambda.IFunction `field:"required" json:"timeoutHandler" yaml:"timeoutHandler"` // Whether logging for the state machine is disabled. // Default: - false. // DisableLogging *bool `field:"optional" json:"disableLogging" yaml:"disableLogging"` // Defines what execution history events are logged and where they are logged. // Default: - A default log group will be created if logging is enabled. // LogOptions *LogOptions `field:"optional" json:"logOptions" yaml:"logOptions"` }
Initialization properties for the `WaiterStateMachine` construct.
Example:
// The code below shows an example of how to instantiate this type. // The values are placeholders you should change. import cdk "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" import "github.com/aws/aws-cdk-go/awscdk" var function_ function var logGroup logGroup waiterStateMachineProps := &WaiterStateMachineProps{ BackoffRate: jsii.Number(123), Interval: cdk.Duration_Minutes(jsii.Number(30)), IsCompleteHandler: function_, MaxAttempts: jsii.Number(123), TimeoutHandler: function_, // the properties below are optional DisableLogging: jsii.Boolean(false), LogOptions: &LogOptions{ Destination: logGroup, IncludeExecutionData: jsii.Boolean(false), Level: awscdk.Aws_stepfunctions.LogLevel_OFF, }, }
Source Files ¶
- AwsCustomResource.go
- AwsCustomResourcePolicy.go
- AwsCustomResourcePolicy__checks.go
- AwsCustomResourceProps.go
- AwsCustomResource__checks.go
- AwsSdkCall.go
- CustomResourceConfig.go
- CustomResourceConfig__checks.go
- CustomResourceLambdaRuntime.go
- CustomResourceLambdaRuntime__checks.go
- CustomResourceLogRetention.go
- CustomResourceLogRetention__checks.go
- CustomResourceRemovalPolicy.go
- CustomResourceRemovalPolicy__checks.go
- LogOptions.go
- Logging.go
- LoggingProps.go
- Logging__checks.go
- PhysicalResourceId.go
- PhysicalResourceIdReference.go
- PhysicalResourceIdReference__checks.go
- PhysicalResourceId__checks.go
- Provider.go
- ProviderProps.go
- Provider__checks.go
- SdkCallsPolicyOptions.go
- WaiterStateMachine.go
- WaiterStateMachineProps.go
- WaiterStateMachine__checks.go
- main.go