Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Asset_IsConstruct ¶
func Asset_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 NewAsset_Override ¶
func NewAsset_Override(a Asset, scope constructs.Construct, id *string, props *AssetProps)
Types ¶
type Asset ¶
type Asset interface { constructs.Construct awscdk.IAsset // A hash of this asset, which is available at construction time. // // As this is a plain string, it // can be used in construct IDs in order to enforce creation of a new resource when the content // hash has changed. AssetHash() *string // The path to the asset, relative to the current Cloud Assembly. // // If asset staging is disabled, this will just be the original path. // If asset staging is enabled it will be the staged path. AssetPath() *string // The S3 bucket in which this asset resides. Bucket() awss3.IBucket // Attribute which represents the S3 HTTP URL of this asset. // // For example, `https://s3.us-west-1.amazonaws.com/bucket/key` HttpUrl() *string // Indicates if this asset is a single file. // // Allows constructs to ensure that the // correct file type was used. IsFile() *bool // Indicates if this asset is a zip archive. // // Allows constructs to ensure that the // correct file type was used. IsZipArchive() *bool // The tree node. Node() constructs.Node // Attribute that represents the name of the bucket this asset exists in. S3BucketName() *string // Attribute which represents the S3 object key of this asset. S3ObjectKey() *string // Attribute which represents the S3 URL of this asset. // // For example, `s3://bucket/key`. S3ObjectUrl() *string // Adds CloudFormation template metadata to the specified resource with information that indicates which resource property is mapped to this local asset. // // This can be used by tools such as SAM CLI to provide local // experience such as local invocation and debugging of Lambda functions. // // Asset metadata will only be included if the stack is synthesized with the // "aws:cdk:enable-asset-metadata" context key defined, which is the default // behavior when synthesizing via the CDK Toolkit. // See: https://github.com/aws/aws-cdk/issues/1432 // AddResourceMetadata(resource awscdk.CfnResource, resourceProperty *string) // Grants read permissions to the principal on the assets bucket. GrantRead(grantee awsiam.IGrantable) // Returns a string representation of this construct. ToString() *string }
An asset represents a local file or directory, which is automatically uploaded to S3 and then can be referenced within a CDK application.
Example:
import "github.com/aws/aws-cdk-go/awscdk" asset := awscdk.NewAsset(this, jsii.String("BundledAsset"), &AssetProps{ Path: jsii.String("/path/to/asset"), Bundling: &BundlingOptions{ Image: cdk.DockerImage_FromRegistry(jsii.String("alpine")), Command: []*string{ jsii.String("command-that-produces-an-archive.sh"), }, OutputType: cdk.BundlingOutput_NOT_ARCHIVED, }, })
func NewAsset ¶
func NewAsset(scope constructs.Construct, id *string, props *AssetProps) Asset
type AssetOptions ¶
type AssetOptions struct { // Specify a custom hash for this asset. // // If `assetHashType` is set it must // be set to `AssetHashType.CUSTOM`. For consistency, this custom hash will // be SHA256 hashed and encoded as hex. The resulting hash will be the asset // hash. // // NOTE: the hash is used in order to identify a specific revision of the asset, and // used for optimizing and caching deployment activities related to this asset such as // packaging, uploading to Amazon S3, etc. If you chose to customize the hash, you will // need to make sure it is updated every time the asset changes, or otherwise it is // possible that some deployments will not be invalidated. // Default: - based on `assetHashType`. // AssetHash *string `field:"optional" json:"assetHash" yaml:"assetHash"` // Specifies the type of hash to calculate for this asset. // // If `assetHash` is configured, this option must be `undefined` or // `AssetHashType.CUSTOM`. // Default: - the default is `AssetHashType.SOURCE`, but if `assetHash` is // explicitly specified this value defaults to `AssetHashType.CUSTOM`. // AssetHashType awscdk.AssetHashType `field:"optional" json:"assetHashType" yaml:"assetHashType"` // Bundle the asset by executing a command in a Docker container or a custom bundling provider. // // The asset path will be mounted at `/asset-input`. The Docker // container is responsible for putting content at `/asset-output`. // The content at `/asset-output` will be zipped and used as the // final asset. // Default: - uploaded as-is to S3 if the asset is a regular file or a .zip file, // archived into a .zip file and uploaded to S3 otherwise // Bundling *awscdk.BundlingOptions `field:"optional" json:"bundling" yaml:"bundling"` // File paths matching the patterns will be excluded. // // See `ignoreMode` to set the matching behavior. // Has no effect on Assets bundled using the `bundling` property. // Default: - nothing is excluded. // Exclude *[]*string `field:"optional" json:"exclude" yaml:"exclude"` // A strategy for how to handle symlinks. // Default: SymlinkFollowMode.NEVER // FollowSymlinks awscdk.SymlinkFollowMode `field:"optional" json:"followSymlinks" yaml:"followSymlinks"` // The ignore behavior to use for `exclude` patterns. // Default: IgnoreMode.GLOB // IgnoreMode awscdk.IgnoreMode `field:"optional" json:"ignoreMode" yaml:"ignoreMode"` // Whether or not the asset needs to exist beyond deployment time; // // i.e. // are copied over to a different location and not needed afterwards. // Setting this property to true has an impact on the lifecycle of the asset, // because we will assume that it is safe to delete after the CloudFormation // deployment succeeds. // // For example, Lambda Function assets are copied over to Lambda during // deployment. Therefore, it is not necessary to store the asset in S3, so // we consider those deployTime assets. // Default: false. // DeployTime *bool `field:"optional" json:"deployTime" yaml:"deployTime"` // A list of principals that should be able to read this asset from S3. // // You can use `asset.grantRead(principal)` to grant read permissions later. // Default: - No principals that can read file asset. // Readers *[]awsiam.IGrantable `field:"optional" json:"readers" yaml:"readers"` // The ARN of the KMS key used to encrypt the handler code. // Default: - the default server-side encryption with Amazon S3 managed keys(SSE-S3) key will be used. // SourceKMSKey awskms.IKey `field:"optional" json:"sourceKMSKey" yaml:"sourceKMSKey"` }
Example:
lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{ Code: lambda.Code_FromAsset(path.join(__dirname, jsii.String("my-python-handler")), &AssetOptions{ Bundling: &BundlingOptions{ Image: lambda.Runtime_PYTHON_3_9().BundlingImage, Command: []*string{ jsii.String("bash"), jsii.String("-c"), jsii.String("pip install -r requirements.txt -t /asset-output && cp -au . /asset-output"), }, }, }), Runtime: lambda.Runtime_PYTHON_3_9(), Handler: jsii.String("index.handler"), })
type AssetProps ¶
type AssetProps struct { // Specify a custom hash for this asset. // // If `assetHashType` is set it must // be set to `AssetHashType.CUSTOM`. For consistency, this custom hash will // be SHA256 hashed and encoded as hex. The resulting hash will be the asset // hash. // // NOTE: the hash is used in order to identify a specific revision of the asset, and // used for optimizing and caching deployment activities related to this asset such as // packaging, uploading to Amazon S3, etc. If you chose to customize the hash, you will // need to make sure it is updated every time the asset changes, or otherwise it is // possible that some deployments will not be invalidated. // Default: - based on `assetHashType`. // AssetHash *string `field:"optional" json:"assetHash" yaml:"assetHash"` // Specifies the type of hash to calculate for this asset. // // If `assetHash` is configured, this option must be `undefined` or // `AssetHashType.CUSTOM`. // Default: - the default is `AssetHashType.SOURCE`, but if `assetHash` is // explicitly specified this value defaults to `AssetHashType.CUSTOM`. // AssetHashType awscdk.AssetHashType `field:"optional" json:"assetHashType" yaml:"assetHashType"` // Bundle the asset by executing a command in a Docker container or a custom bundling provider. // // The asset path will be mounted at `/asset-input`. The Docker // container is responsible for putting content at `/asset-output`. // The content at `/asset-output` will be zipped and used as the // final asset. // Default: - uploaded as-is to S3 if the asset is a regular file or a .zip file, // archived into a .zip file and uploaded to S3 otherwise // Bundling *awscdk.BundlingOptions `field:"optional" json:"bundling" yaml:"bundling"` // File paths matching the patterns will be excluded. // // See `ignoreMode` to set the matching behavior. // Has no effect on Assets bundled using the `bundling` property. // Default: - nothing is excluded. // Exclude *[]*string `field:"optional" json:"exclude" yaml:"exclude"` // A strategy for how to handle symlinks. // Default: SymlinkFollowMode.NEVER // FollowSymlinks awscdk.SymlinkFollowMode `field:"optional" json:"followSymlinks" yaml:"followSymlinks"` // The ignore behavior to use for `exclude` patterns. // Default: IgnoreMode.GLOB // IgnoreMode awscdk.IgnoreMode `field:"optional" json:"ignoreMode" yaml:"ignoreMode"` // Whether or not the asset needs to exist beyond deployment time; // // i.e. // are copied over to a different location and not needed afterwards. // Setting this property to true has an impact on the lifecycle of the asset, // because we will assume that it is safe to delete after the CloudFormation // deployment succeeds. // // For example, Lambda Function assets are copied over to Lambda during // deployment. Therefore, it is not necessary to store the asset in S3, so // we consider those deployTime assets. // Default: false. // DeployTime *bool `field:"optional" json:"deployTime" yaml:"deployTime"` // A list of principals that should be able to read this asset from S3. // // You can use `asset.grantRead(principal)` to grant read permissions later. // Default: - No principals that can read file asset. // Readers *[]awsiam.IGrantable `field:"optional" json:"readers" yaml:"readers"` // The ARN of the KMS key used to encrypt the handler code. // Default: - the default server-side encryption with Amazon S3 managed keys(SSE-S3) key will be used. // SourceKMSKey awskms.IKey `field:"optional" json:"sourceKMSKey" yaml:"sourceKMSKey"` // The disk location of the asset. // // The path should refer to one of the following: // - A regular file or a .zip file, in which case the file will be uploaded as-is to S3. // - A directory, in which case it will be archived into a .zip file and uploaded to S3. Path *string `field:"required" json:"path" yaml:"path"` }
Example:
import "github.com/aws/aws-cdk-go/awscdk" asset := awscdk.NewAsset(this, jsii.String("BundledAsset"), &AssetProps{ Path: jsii.String("/path/to/asset"), Bundling: &BundlingOptions{ Image: cdk.DockerImage_FromRegistry(jsii.String("alpine")), Command: []*string{ jsii.String("command-that-produces-an-archive.sh"), }, OutputType: cdk.BundlingOutput_NOT_ARCHIVED, }, })