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 display name for this asset.
//
// If supplied, the display name will be used in locations where the asset
// identifier is printed, like in the CLI progress information. If the same
// asset is added multiple times, the display name of the first occurrence is
// used.
//
// The default is the construct path of the Asset construct, with respect to
// the enclosing stack. If the asset is produced by a construct helper
// function (such as `lambda.Code.fromAsset()`), this will look like
// `MyFunction/Code`.
//
// We use the stack-relative construct path so that in the common case where
// you have multiple stacks with the same asset, we won't show something like
// `/MyBetaStack/MyFunction/Code` when you are actually deploying to
// production.
// Default: - Stack-relative construct path.
//
DisplayName *string `field:"optional" json:"displayName" yaml:"displayName"`
// 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 display name for this asset.
//
// If supplied, the display name will be used in locations where the asset
// identifier is printed, like in the CLI progress information. If the same
// asset is added multiple times, the display name of the first occurrence is
// used.
//
// The default is the construct path of the Asset construct, with respect to
// the enclosing stack. If the asset is produced by a construct helper
// function (such as `lambda.Code.fromAsset()`), this will look like
// `MyFunction/Code`.
//
// We use the stack-relative construct path so that in the common case where
// you have multiple stacks with the same asset, we won't show something like
// `/MyBetaStack/MyFunction/Code` when you are actually deploying to
// production.
// Default: - Stack-relative construct path.
//
DisplayName *string `field:"optional" json:"displayName" yaml:"displayName"`
// 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,
},
})