cloudstructs

package module
v0.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

README

cloudstructs

High-level constructs for AWS CDK

Installation

npm install cloudstructs or yarn add cloudstructs

Version >= 0.2.0 requires AWS CDK v2.

Constructs

  • CodeCommitMirror Mirror a repository to AWS CodeCommit on schedule
  • EcsServiceRoller Roll your ECS service tasks on schedule or with a rule
  • EmailReceiver Receive emails through SES, save them to S3 and invoke a Lambda function
  • SlackApp Deploy Slack apps from manifests
  • SlackEvents Send Slack events to Amazon EventBridge
  • SlackTextract Extract text from images posted to Slack using Amazon Textract. The extracted text is posted in a thread under the image and gets indexed!
  • SslServerTest Test a server/host for SSL/TLS on schedule and get notified when the overall rating is not satisfactory. Powered by Qualys SSL Labs.
  • StateMachineCustomResourceProvider Implement custom resources with AWS Step Functions state machines
  • StaticWebsite A CloudFront static website hosted on S3 with HTTPS redirect, SPA redirect, HTTP security headers and backend configuration saved to the bucket.
  • ToolkitCleaner Clean unused S3 and ECR assets from your CDK Toolkit.
  • UrlShortener Deploy an URL shortener API

Documentation

Overview

High-level constructs for AWS CDK

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CodeCommitMirror_IsConstruct

func CodeCommitMirror_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func DmarcReporter_IsConstruct added in v0.6.32

func DmarcReporter_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func EcsServiceRoller_IsConstruct

func EcsServiceRoller_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func EmailReceiver_IsConstruct

func EmailReceiver_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func NewCodeCommitMirrorSourceRepository_Override

func NewCodeCommitMirrorSourceRepository_Override(c CodeCommitMirrorSourceRepository)

func NewCodeCommitMirror_Override

func NewCodeCommitMirror_Override(c CodeCommitMirror, scope constructs.Construct, id *string, props *CodeCommitMirrorProps)

func NewDmarcReporter_Override added in v0.6.32

func NewDmarcReporter_Override(d DmarcReporter, scope constructs.Construct, id *string, props *DmarcReporterProps)

func NewEcsServiceRoller_Override

func NewEcsServiceRoller_Override(e EcsServiceRoller, scope constructs.Construct, id *string, props *EcsServiceRollerProps)

func NewEmailReceiver_Override

func NewEmailReceiver_Override(e EmailReceiver, scope constructs.Construct, id *string, props *EmailReceiverProps)

func NewRollTrigger_Override

func NewRollTrigger_Override(r RollTrigger)

func NewSamlFederatedPrincipal_Override deprecated

func NewSamlFederatedPrincipal_Override(s SamlFederatedPrincipal, identityProvider SamlIdentityProvider)

Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.

func NewSamlIdentityProvider_Override deprecated

func NewSamlIdentityProvider_Override(s SamlIdentityProvider, scope constructs.Construct, id *string, props *SamlIdentityProviderProps)

Deprecated: use `SamlProvider` from `aws-cdk-lib/aws-iam`.

func NewSlackAppManifestDefinition_Override

func NewSlackAppManifestDefinition_Override(s SlackAppManifestDefinition)

func NewSlackAppManifest_Override

func NewSlackAppManifest_Override(s SlackAppManifest, props *SlackAppManifestProps)

func NewSlackApp_Override

func NewSlackApp_Override(s SlackApp, scope constructs.Construct, id *string, props *SlackAppProps)

func NewSlackEvents_Override

func NewSlackEvents_Override(s SlackEvents, scope constructs.Construct, id *string, props *SlackEventsProps)

func NewSlackTextract_Override

func NewSlackTextract_Override(s SlackTextract, scope constructs.Construct, id *string, props *SlackTextractProps)

func NewSslServerTest_Override added in v0.6.8

func NewSslServerTest_Override(s SslServerTest, scope constructs.Construct, id *string, props *SslServerTestProps)

func NewStateMachineCustomResourceProvider_Override

func NewStateMachineCustomResourceProvider_Override(s StateMachineCustomResourceProvider, scope constructs.Construct, id *string, props *StateMachineCustomResourceProviderProps)

func NewStaticWebsite_Override

func NewStaticWebsite_Override(s StaticWebsite, scope constructs.Construct, id *string, props *StaticWebsiteProps)

func NewToolkitCleaner_Override

func NewToolkitCleaner_Override(t ToolkitCleaner, scope constructs.Construct, id *string, props *ToolkitCleanerProps)

func NewUrlShortener_Override

func NewUrlShortener_Override(u UrlShortener, scope constructs.Construct, id *string, props *UrlShortenerProps)

func SamlIdentityProvider_IsConstruct

func SamlIdentityProvider_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func SlackApp_IsConstruct

func SlackApp_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func SlackEvents_IsConstruct

func SlackEvents_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func SlackTextract_IsConstruct

func SlackTextract_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func SslServerTest_IsConstruct added in v0.6.8

func SslServerTest_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func StateMachineCustomResourceProvider_IsConstruct

func StateMachineCustomResourceProvider_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func StaticWebsite_DefaultSecurityHeadersBehavior

func StaticWebsite_DefaultSecurityHeadersBehavior() *awscloudfront.ResponseSecurityHeadersBehavior

func StaticWebsite_IsConstruct

func StaticWebsite_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func StaticWebsite_SetDefaultSecurityHeadersBehavior

func StaticWebsite_SetDefaultSecurityHeadersBehavior(val *awscloudfront.ResponseSecurityHeadersBehavior)

func ToolkitCleaner_IsConstruct

func ToolkitCleaner_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

func UrlShortener_IsConstruct

func UrlShortener_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Returns: true if `x` is an object created from a class which extends `Construct`. Deprecated: use `x instanceof Construct` instead.

Types

type CodeCommitMirror

type CodeCommitMirror interface {
	constructs.Construct
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Mirror a repository to AWS CodeCommit on schedule.

func NewCodeCommitMirror

func NewCodeCommitMirror(scope constructs.Construct, id *string, props *CodeCommitMirrorProps) CodeCommitMirror

type CodeCommitMirrorProps

type CodeCommitMirrorProps struct {
	// The ECS cluster where to run the mirroring operation.
	Cluster awsecs.ICluster `field:"required" json:"cluster" yaml:"cluster"`
	// The source repository.
	Repository CodeCommitMirrorSourceRepository `field:"required" json:"repository" yaml:"repository"`
	// The schedule for the mirroring operation.
	// Default: - everyday at midnight.
	//
	Schedule awsevents.Schedule `field:"optional" json:"schedule" yaml:"schedule"`
	// Where to run the mirroring Fargate tasks.
	// Default: - public subnets.
	//
	SubnetSelection *awsec2.SubnetSelection `field:"optional" json:"subnetSelection" yaml:"subnetSelection"`
}

Properties for a CodeCommitMirror.

type CodeCommitMirrorSourceRepository

type CodeCommitMirrorSourceRepository interface {
	// The name of the repository.
	Name() *string
	// The HTTPS clone URL in plain text, used for a public repository.
	PlainTextUrl() *string
	// The HTTPS clone URL if the repository is private.
	//
	// The secret should contain the username and/or token.
	//
	// Example:
	//   `https://TOKEN@github.com/owner/name`
	//   `https://USERNAME:TOKEN@bitbucket.org/owner/name.git`
	//
	SecretUrl() awsecs.Secret
}

A source repository for AWS CodeCommit mirroring.

func CodeCommitMirrorSourceRepository_GitHub

func CodeCommitMirrorSourceRepository_GitHub(owner *string, name *string) CodeCommitMirrorSourceRepository

Public GitHub repository.

func CodeCommitMirrorSourceRepository_Private

func CodeCommitMirrorSourceRepository_Private(name *string, url awsecs.Secret) CodeCommitMirrorSourceRepository

Private repository with HTTPS clone URL stored in a AWS Secrets Manager secret or a AWS Systems Manager secure string parameter.

type DmarcAlignment added in v0.6.32

type DmarcAlignment string

The DMARC alignment mode.

const (
	// Relaxed alignment mode.
	DmarcAlignment_RELAXED DmarcAlignment = "RELAXED"
	// Strict alignment mode.
	DmarcAlignment_STRICT DmarcAlignment = "STRICT"
)

type DmarcPolicy added in v0.6.32

type DmarcPolicy string

The DMARC policy to apply to messages that fail DMARC compliance.

const (
	// Do not apply any special handling to messages that fail DMARC compliance.
	DmarcPolicy_NONE DmarcPolicy = "NONE"
	// Quarantine messages that fail DMARC compliance.
	//
	// (usually by sending them to spam).
	DmarcPolicy_QUARANTINE DmarcPolicy = "QUARANTINE"
	// Reject messages that fail DMARC compliance.
	//
	// (usually by rejecting them outright).
	DmarcPolicy_REJECT DmarcPolicy = "REJECT"
)

type DmarcReporter added in v0.6.32

type DmarcReporter interface {
	constructs.Construct
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Creates a DMARC record in Route 53 and invokes a Lambda function to process incoming reports.

func NewDmarcReporter added in v0.6.32

func NewDmarcReporter(scope constructs.Construct, id *string, props *DmarcReporterProps) DmarcReporter

type DmarcReporterProps added in v0.6.32

type DmarcReporterProps struct {
	// The DMARC policy to apply to messages that fail DMARC compliance.
	//
	// This can be one of the following values:
	// - none: Do not apply any special handling to messages that fail DMARC compliance.
	// - quarantine: Quarantine messages that fail DMARC compliance.
	// - reject: Reject messages that fail DMARC compliance.
	DmarcPolicy DmarcPolicy `field:"required" json:"dmarcPolicy" yaml:"dmarcPolicy"`
	// A Lambda function to invoke after the message is saved to S3.
	//
	// The Lambda
	// function will be invoked with a SESMessage as event.
	Function awslambda.IFunction `field:"required" json:"function" yaml:"function"`
	// The Route 53 hosted zone to create the DMARC record in.
	HostedZone awsroute53.IHostedZone `field:"required" json:"hostedZone" yaml:"hostedZone"`
	// The SES receipt rule set where a receipt rule will be added.
	ReceiptRuleSet awsses.IReceiptRuleSet `field:"required" json:"receiptRuleSet" yaml:"receiptRuleSet"`
	// Additional email addresses to send DMARC reports to.
	AdditionalEmailAddresses *[]*string `field:"optional" json:"additionalEmailAddresses" yaml:"additionalEmailAddresses"`
	// An existing rule after which the new rule will be placed in the rule set.
	// Default: - The new rule is inserted at the beginning of the rule list.
	//
	AfterRule awsses.IReceiptRule `field:"optional" json:"afterRule" yaml:"afterRule"`
	// The alignment mode to use for DKIM signatures.
	//
	// This can be one of the following values:
	// - relaxed: Use relaxed alignment mode.
	// - strict: Use strict alignment mode.
	// Default: relaxed.
	//
	DmarcDkimAlignment DmarcAlignment `field:"optional" json:"dmarcDkimAlignment" yaml:"dmarcDkimAlignment"`
	// The percentage of messages that should be checked for DMARC compliance.
	//
	// This is a value between 0 and 100.
	// Default: 100.
	//
	DmarcPercentage *float64 `field:"optional" json:"dmarcPercentage" yaml:"dmarcPercentage"`
	// The alignment mode to use for SPF signatures.
	//
	// This can be one of the following values:
	// - relaxed: Use relaxed alignment mode.
	// - strict: Use strict alignment mode.
	// Default: relaxed.
	//
	DmarcSpfAlignment DmarcAlignment `field:"optional" json:"dmarcSpfAlignment" yaml:"dmarcSpfAlignment"`
	// The DMARC policy to apply to messages that fail DMARC compliance for subdomains.
	//
	// This can be one of the following values:
	// - none: Do not apply any special handling to messages that fail DMARC compliance.
	// - quarantine: Quarantine messages that fail DMARC compliance.
	// - reject: Reject messages that fail DMARC compliance.
	// Default: inherited from dmarcPolicy.
	//
	DmarcSubdomainPolicy DmarcPolicy `field:"optional" json:"dmarcSubdomainPolicy" yaml:"dmarcSubdomainPolicy"`
	// The email address to send DMARC reports to.
	//
	// This email address must be verified in SES.
	// Default: dmarc-reports@${hostedZone.zoneName}
	//
	EmailAddress *string `field:"optional" json:"emailAddress" yaml:"emailAddress"`
}

Properties for a DmarcReporter.

type EcsServiceRoller

type EcsServiceRoller interface {
	constructs.Construct
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Roll your ECS service tasks on schedule or with a rule.

func NewEcsServiceRoller

func NewEcsServiceRoller(scope constructs.Construct, id *string, props *EcsServiceRollerProps) EcsServiceRoller

type EcsServiceRollerProps

type EcsServiceRollerProps struct {
	// The ECS cluster where the services run.
	Cluster awsecs.ICluster `field:"required" json:"cluster" yaml:"cluster"`
	// The ECS service for which tasks should be rolled.
	Service awsecs.IService `field:"required" json:"service" yaml:"service"`
	// The rule or schedule that should trigger a roll.
	// Default: - roll everyday at midnight.
	//
	Trigger RollTrigger `field:"optional" json:"trigger" yaml:"trigger"`
}

Properties for a EcsServiceRoller.

type EmailReceiver

type EmailReceiver interface {
	constructs.Construct
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Receive emails through SES, save them to S3 and invokes a Lambda function.

func NewEmailReceiver

func NewEmailReceiver(scope constructs.Construct, id *string, props *EmailReceiverProps) EmailReceiver

type EmailReceiverProps

type EmailReceiverProps struct {
	// A Lambda function to invoke after the message is saved to S3.
	//
	// The Lambda
	// function will be invoked with a SESMessage as event.
	Function awslambda.IFunction `field:"required" json:"function" yaml:"function"`
	// The SES receipt rule set where a receipt rule will be added.
	ReceiptRuleSet awsses.IReceiptRuleSet `field:"required" json:"receiptRuleSet" yaml:"receiptRuleSet"`
	// The recipients for which emails should be received.
	Recipients *[]*string `field:"required" json:"recipients" yaml:"recipients"`
	// An existing rule after which the new rule will be placed in the rule set.
	// Default: - The new rule is inserted at the beginning of the rule list.
	//
	AfterRule awsses.IReceiptRule `field:"optional" json:"afterRule" yaml:"afterRule"`
	// Whether the receiver is active.
	// Default: true.
	//
	Enabled *bool `field:"optional" json:"enabled" yaml:"enabled"`
	// A regular expression to whitelist source email addresses.
	// Default: - no whitelisting of source email addresses.
	//
	SourceWhitelist *string `field:"optional" json:"sourceWhitelist" yaml:"sourceWhitelist"`
}

Properties for an EmailReceiver.

type IStateMachine

type IStateMachine interface {
	// The ARN of the state machine.
	StateMachineArn() *string
}

A State Machine.

type RollTrigger

type RollTrigger interface {
	// Roll rule.
	// Default: - roll everyday at midnight.
	//
	Rule() awsevents.Rule
	// Roll schedule.
	// Default: - roll everyday at midnight.
	//
	Schedule() awsevents.Schedule
}

The rule or schedule that should trigger a roll.

func RollTrigger_FromRule

func RollTrigger_FromRule(rule awsevents.Rule) RollTrigger

Rule that should trigger a roll.

func RollTrigger_FromSchedule

func RollTrigger_FromSchedule(schedule awsevents.Schedule) RollTrigger

Schedule that should trigger a roll.

type SamlFederatedPrincipal

type SamlFederatedPrincipal interface {
	awsiam.FederatedPrincipal
	// When this Principal is used in an AssumeRole policy, the action to use.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	AssumeRoleAction() *string
	// The conditions under which the policy is in effect.
	// See: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html
	//
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	Conditions() *map[string]interface{}
	// federated identity provider (i.e. 'cognito-identity.amazonaws.com' for users authenticated through Cognito).
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	Federated() *string
	// The principal to grant permissions to.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	GrantPrincipal() awsiam.IPrincipal
	// Return the policy fragment that identifies this principal in a Policy.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	PolicyFragment() awsiam.PrincipalPolicyFragment
	// The AWS account ID of this principal.
	//
	// Can be undefined when the account is not known
	// (for example, for service principals).
	// Can be a Token - in that case,
	// it's assumed to be AWS::AccountId.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	PrincipalAccount() *string
	// Add the principal to the AssumeRolePolicyDocument.
	//
	// Add the statements to the AssumeRolePolicyDocument necessary to give this principal
	// permissions to assume the given role.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	AddToAssumeRolePolicy(document awsiam.PolicyDocument)
	// Add to the policy of this principal.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	AddToPolicy(statement awsiam.PolicyStatement) *bool
	// Add to the policy of this principal.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	AddToPrincipalPolicy(_statement awsiam.PolicyStatement) *awsiam.AddToPrincipalPolicyResult
	// Return whether or not this principal is equal to the given principal.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	DedupeString() *string
	// JSON-ify the principal.
	//
	// Used when JSON.stringify() is called
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	ToJSON() *map[string]*[]*string
	// Returns a string representation of an object.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	ToString() *string
	// Returns a new PrincipalWithConditions using this principal as the base, with the passed conditions added.
	//
	// When there is a value for the same operator and key in both the principal and the
	// conditions parameter, the value from the conditions parameter will be used.
	//
	// Returns: a new PrincipalWithConditions object.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	WithConditions(conditions *map[string]interface{}) awsiam.PrincipalBase
	// Returns a new principal using this principal as the base, with session tags enabled.
	//
	// Returns: a new SessionTagsPrincipal object.
	// Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.
	WithSessionTags() awsiam.PrincipalBase
}

Principal entity that represents a SAML federated identity provider. Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.

func NewSamlFederatedPrincipal deprecated

func NewSamlFederatedPrincipal(identityProvider SamlIdentityProvider) SamlFederatedPrincipal

Deprecated: use `SamlPrincipal` from `aws-cdk-lib/aws-iam`.

type SamlIdentityProvider

type SamlIdentityProvider interface {
	constructs.Construct
	// The tree node.
	// Deprecated: use `SamlProvider` from `aws-cdk-lib/aws-iam`.
	Node() constructs.Node
	// The ARN of the SAML identity provider.
	// Deprecated: use `SamlProvider` from `aws-cdk-lib/aws-iam`.
	SamlIdentityProviderArn() *string
	// Returns a string representation of this construct.
	// Deprecated: use `SamlProvider` from `aws-cdk-lib/aws-iam`.
	ToString() *string
}

Create a SAML identity provider. Deprecated: use `SamlProvider` from `aws-cdk-lib/aws-iam`.

func NewSamlIdentityProvider deprecated

func NewSamlIdentityProvider(scope constructs.Construct, id *string, props *SamlIdentityProviderProps) SamlIdentityProvider

Deprecated: use `SamlProvider` from `aws-cdk-lib/aws-iam`.

type SamlIdentityProviderProps

type SamlIdentityProviderProps struct {
	// An XML document generated by an identity provider (IdP) that supports SAML 2.0.
	//
	// The document includes the issuer's name, expiration information, and keys that
	// can be used to validate the SAML authentication response (assertions) that are
	// received from the IdP. You must generate the metadata document using the identity
	// management software that is used as your organization's IdP.
	// Deprecated: use `SamlProviderProps` from `aws-cdk-lib/aws-iam`.
	MetadataDocument *string `field:"required" json:"metadataDocument" yaml:"metadataDocument"`
	// A name for the SAML identity provider.
	// Default: - derived for the node's unique id.
	//
	// Deprecated: use `SamlProviderProps` from `aws-cdk-lib/aws-iam`.
	Name *string `field:"optional" json:"name" yaml:"name"`
}

Properties for a SamlProvider. Deprecated: use `SamlProviderProps` from `aws-cdk-lib/aws-iam`.

type SlackApp

type SlackApp interface {
	constructs.Construct
	// The ID of the application.
	AppId() *string
	// A dynamic reference to the client ID of the app.
	ClientId() *string
	// A dynamic reference to the client secret of the app.
	ClientSecret() *string
	// An AWS Secrets Manager secret containing the credentials of the application.
	//
	// “`
	// {
	//   "appId": "...",
	//   "clientId": "...",
	//   "clientSecret": "...",
	//   "verificationToken": "...",
	//   "signingSecret": "..."
	// }
	// “`.
	Credentials() awssecretsmanager.ISecret
	// The tree node.
	Node() constructs.Node
	// A dynamic reference to the signing secret of the app.
	SigningSecret() *string
	// A dynamic reference to the verification token of the app.
	VerificationToken() *string
	// Returns a string representation of this construct.
	ToString() *string
}

A Slack application deployed with a manifest. See: https://api.slack.com/reference/manifests

func NewSlackApp

func NewSlackApp(scope constructs.Construct, id *string, props *SlackAppProps) SlackApp

type SlackAppManifest

type SlackAppManifest interface {
	Render(construct constructs.IConstruct) *string
}

A Slack app manifest. See: https://api.slack.com/reference/manifests

func NewSlackAppManifest

func NewSlackAppManifest(props *SlackAppManifestProps) SlackAppManifest

type SlackAppManifestAppHome

type SlackAppManifestAppHome struct {
	// Wether the Home tab is enabled.
	// Default: false.
	//
	HomeTab *bool `field:"optional" json:"homeTab" yaml:"homeTab"`
	// Wether the Messages is enabled.
	// Default: false.
	//
	MessagesTab *bool `field:"optional" json:"messagesTab" yaml:"messagesTab"`
	// Whether the users can send messages to your app in the Messages tab of your App Home.
	// Default: false.
	//
	MessagesTabReadOnly *bool `field:"optional" json:"messagesTabReadOnly" yaml:"messagesTabReadOnly"`
}

App Home configuration. See: https://api.slack.com/surfaces/tabs

type SlackAppManifestDefinition

type SlackAppManifestDefinition interface {
	// Renders the JSON app manifest encoded as a string.
	Render(construct constructs.IConstruct) *string
}

A Slack app manifest definition.

func SlackAppManifestDefinition_FromFile

func SlackAppManifestDefinition_FromFile(file *string) SlackAppManifestDefinition

Creates a Slack app manifest from a file containg a JSON app manifest.

func SlackAppManifestDefinition_FromManifest

func SlackAppManifestDefinition_FromManifest(props *SlackAppManifestProps) SlackAppManifestDefinition

Creates a Slack app manifest by specifying properties.

func SlackAppManifestDefinition_FromString

func SlackAppManifestDefinition_FromString(manifest *string) SlackAppManifestDefinition

Create a Slack app manifest from a JSON app manifest encoded as a string.

type SlackAppManifestEventSubscriptions

type SlackAppManifestEventSubscriptions struct {
	// The full https URL that acts as the Events API request URL.
	// See: https://api.slack.com/events-api#the-events-api__subscribing-to-event-types__events-api-request-urls
	//
	RequestUrl *string `field:"required" json:"requestUrl" yaml:"requestUrl"`
	// Event types you want the app to subscribe to.
	//
	// A maximum of 100 event types can be used.
	// See: https://api.slack.com/events
	//
	BotEvents *[]*string `field:"optional" json:"botEvents" yaml:"botEvents"`
	// Event types you want the app to subscribe to on behalf of authorized users.
	//
	// A maximum of 100 event types can be used.
	UserEvents *[]*string `field:"optional" json:"userEvents" yaml:"userEvents"`
}

Events API configuration for the app. See: https://api.slack.com/events-api

type SlackAppManifestInteractivity

type SlackAppManifestInteractivity struct {
	// Whether or not interactivity features are enabled.
	// Default: true.
	//
	Enabled *bool `field:"optional" json:"enabled" yaml:"enabled"`
	// The full https URL that acts as th interactive Options Load URL.
	MessageMenuOptionsUrl *string `field:"optional" json:"messageMenuOptionsUrl" yaml:"messageMenuOptionsUrl"`
	// The full https URL that acts as the interactive Request URL.
	RequestUrl *string `field:"optional" json:"requestUrl" yaml:"requestUrl"`
}

Interactivity configuration for the app. See: https://api.slack.com/interactivity/handling#setup

type SlackAppManifestOauthConfig

type SlackAppManifestOauthConfig struct {
	// Bot scopes to request upon app installation.
	//
	// A maximum of 255 scopes can be included.
	// See: https://api.slack.com/scopes
	//
	BotScopes *[]*string `field:"optional" json:"botScopes" yaml:"botScopes"`
	// OAuth redirect URLs.
	//
	// A maximum of 1000 redirect URLs can be included.
	// See: https://api.slack.com/authentication/oauth-v2#redirect_urls
	//
	RedirectUrls *[]*string `field:"optional" json:"redirectUrls" yaml:"redirectUrls"`
	// User scopes to request upon app installation.
	//
	// A maximum of 255 scopes can be included.
	// See: https://api.slack.com/scopes
	//
	UserScopes *[]*string `field:"optional" json:"userScopes" yaml:"userScopes"`
}

OAuth configuration for the app.

type SlackAppManifestProps

type SlackAppManifestProps struct {
	// The name of the app.
	//
	// Maximum length is 35 characters.
	Name *string `field:"required" json:"name" yaml:"name"`
	// An array of IP addresses that conform to the Allowed IP Ranges feature.
	// See: https://api.slack.com/authentication/best-practices#ip_allowlisting
	//
	AllowedIpAddressRanges *[]*string `field:"optional" json:"allowedIpAddressRanges" yaml:"allowedIpAddressRanges"`
	// App Home configuration.
	// See: https://api.slack.com/surfaces/tabs
	//
	AppHome *SlackAppManifestAppHome `field:"optional" json:"appHome" yaml:"appHome"`
	// A hex color value that specifies the background color used on hovercards that display information about your app.
	//
	// Can be 3-digit (#000) or 6-digit (#000000) hex values with or without #.
	BackgroundColor *string `field:"optional" json:"backgroundColor" yaml:"backgroundColor"`
	// Bot user configuration.
	// See: https://api.slack.com/bot-users
	//
	BotUser *SlackkAppManifestBotUser `field:"optional" json:"botUser" yaml:"botUser"`
	// A short description of the app for display to users.
	//
	// Maximum length is 140 characters.
	// Default: - no short description.
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// Events API configuration for the app.
	// See: https://api.slack.com/events-api
	//
	EventSubscriptions *SlackAppManifestEventSubscriptions `field:"optional" json:"eventSubscriptions" yaml:"eventSubscriptions"`
	// Interactivity configuration for the app.
	Interactivity *SlackAppManifestInteractivity `field:"optional" json:"interactivity" yaml:"interactivity"`
	// A longer version of the description of the app.
	//
	// Maximum length is 4000 characters.
	LongDescription *string `field:"optional" json:"longDescription" yaml:"longDescription"`
	// The major version of the manifest schema to target.
	// Default: - do not target a specific major version.
	//
	MajorVersion *float64 `field:"optional" json:"majorVersion" yaml:"majorVersion"`
	// The minor version of the manifest schema to target.
	// Default: - do not target a specific minor version.
	//
	MinorVersion *float64 `field:"optional" json:"minorVersion" yaml:"minorVersion"`
	// OAuth configuration for the app.
	OauthConfig *SlackAppManifestOauthConfig `field:"optional" json:"oauthConfig" yaml:"oauthConfig"`
	// Whether org-wide deploy is enabled.
	// See: https://api.slack.com/enterprise/apps
	//
	// Default: false.
	//
	OrgDeploy *bool `field:"optional" json:"orgDeploy" yaml:"orgDeploy"`
	// Shortcuts configuration.
	//
	// A maximum of 5 shortcuts can be included.
	// See: https://api.slack.com/interactivity/shortcuts
	//
	Shortcuts *[]*SlackAppManifestShortcut `field:"optional" json:"shortcuts" yaml:"shortcuts"`
	// Slash commands configuration.
	//
	// A maximum of 5 slash commands can be included.
	// See: https://api.slack.com/interactivity/slash-commands
	//
	SlashCommands *[]*SlackAppManifestSlashCommand `field:"optional" json:"slashCommands" yaml:"slashCommands"`
	// Whether Socket Mode is enabled.
	// See: https://api.slack.com/apis/connections/socket
	//
	// Default: false.
	//
	SocketMode *bool `field:"optional" json:"socketMode" yaml:"socketMode"`
	// Valid unfurl domains to register.
	//
	// A maximum of 5 unfurl domains can be included.
	// See: https://api.slack.com/reference/messaging/link-unfurling#configuring_domains
	//
	UnfurlDomains *[]*string `field:"optional" json:"unfurlDomains" yaml:"unfurlDomains"`
	// Workflow steps.
	//
	// A maximum of 10 workflow steps can be included.
	// See: https://api.slack.com/workflows/steps
	//
	WorkflowSteps *[]*SlackAppManifestWorkflowStep `field:"optional" json:"workflowSteps" yaml:"workflowSteps"`
}

Properties for a Slack app manifest. See: https://api.slack.com/reference/manifests

type SlackAppManifestSettings

type SlackAppManifestSettings struct {
	// An array of IP addresses that conform to the Allowed IP Ranges feature.
	// See: https://api.slack.com/authentication/best-practices#ip_allowlisting
	//
	AllowedIpAddressRanges *[]*string `field:"optional" json:"allowedIpAddressRanges" yaml:"allowedIpAddressRanges"`
	// Events API configuration for the app.
	// See: https://api.slack.com/events-api
	//
	EventSubscriptions *SlackAppManifestEventSubscriptions `field:"optional" json:"eventSubscriptions" yaml:"eventSubscriptions"`
	// Interactivity configuration for the app.
	Interactivity *SlackAppManifestInteractivity `field:"optional" json:"interactivity" yaml:"interactivity"`
	// Whether org-wide deploy is enabled.
	// See: https://api.slack.com/enterprise/apps
	//
	// Default: false.
	//
	OrgDeploy *bool `field:"optional" json:"orgDeploy" yaml:"orgDeploy"`
	// Whether Socket Mode is enabled.
	// See: https://api.slack.com/apis/connections/socket
	//
	// Default: false.
	//
	SocketMode *bool `field:"optional" json:"socketMode" yaml:"socketMode"`
}

Settings section of the app config pages.

type SlackAppManifestShortcut

type SlackAppManifestShortcut struct {
	// The callback ID of the shortcut.
	//
	// Maximum length is 255 characters.
	CallbackId *string `field:"required" json:"callbackId" yaml:"callbackId"`
	// A short description of the shortcut.
	//
	// Maximum length is 150 characters.
	Description *string `field:"required" json:"description" yaml:"description"`
	// The name of the shortcut.
	Name *string `field:"required" json:"name" yaml:"name"`
	// The type of shortcut.
	// See: https://api.slack.com/interactivity/shortcuts
	//
	Type SlackAppManifestShortcutType `field:"required" json:"type" yaml:"type"`
}

Shortcut configuration. See: https://api.slack.com/interactivity/shortcuts

type SlackAppManifestShortcutType

type SlackAppManifestShortcutType string

Type of shortcuts. See: https://api.slack.com/interactivity/shortcuts

const (
	// Message shortcuts are shown to users in the context menus of messages within Slack.
	// See: https://api.slack.com/interactivity/shortcuts/using#message_shortcuts
	//
	SlackAppManifestShortcutType_MESSAGE SlackAppManifestShortcutType = "MESSAGE"
	// Global shortcuts are available to users via the shortcuts button in the composer, and when using search in Slack.
	// See: https://api.slack.com/interactivity/shortcuts/using#global_shortcuts
	//
	SlackAppManifestShortcutType_GLOBAL SlackAppManifestShortcutType = "GLOBAL"
)

type SlackAppManifestSlashCommand

type SlackAppManifestSlashCommand struct {
	// The actual slash command.
	//
	// Maximum length is 32 characters.
	Command *string `field:"required" json:"command" yaml:"command"`
	// The description of the slash command.
	//
	// Maximum length is 2000 characters.
	Description *string `field:"required" json:"description" yaml:"description"`
	// Whether channels, users, and links typed with the slash command should be escaped.
	// Default: false.
	//
	ShouldEscape *bool `field:"optional" json:"shouldEscape" yaml:"shouldEscape"`
	// The full https URL that acts as the slash command's request URL.
	// See: https://api.slack.com/interactivity/slash-commands#creating_commands
	//
	Url *string `field:"optional" json:"url" yaml:"url"`
	// The short usage hint about the slash command for users.
	//
	// Maximum length is 1000 characters.
	UsageHint *string `field:"optional" json:"usageHint" yaml:"usageHint"`
}

Slash command configuration. See: https://api.slack.com/interactivity/slash-commands

type SlackAppManifestWorkflowStep

type SlackAppManifestWorkflowStep struct {
	// The callback ID of the workflow step.
	//
	// Maximum length of 50 characters.
	CallbackId *string `field:"required" json:"callbackId" yaml:"callbackId"`
	// The name of the workflow step.
	//
	// Maximum length of 50 characters.
	Name *string `field:"required" json:"name" yaml:"name"`
}

Workflow step. See: https://api.slack.com/workflows/steps

type SlackAppProps

type SlackAppProps struct {
	// An AWS Secrets Manager secret containing the app configuration token.
	//
	// Must use the following JSON format:
	//
	// “`
	// {
	//   "refreshToken": "<token>"
	// }
	// “`.
	ConfigurationTokenSecret awssecretsmanager.ISecret `field:"required" json:"configurationTokenSecret" yaml:"configurationTokenSecret"`
	// The definition of the app manifest.
	// See: https://api.slack.com/reference/manifests
	//
	Manifest SlackAppManifestDefinition `field:"required" json:"manifest" yaml:"manifest"`
	// The AWS Secrets Manager secret where to store the app credentials.
	// Default: - a new secret is created.
	//
	CredentialsSecret awssecretsmanager.ISecret `field:"optional" json:"credentialsSecret" yaml:"credentialsSecret"`
}

Properties for a SlackApp.

type SlackEvents

type SlackEvents interface {
	constructs.Construct
	// The custom event bus where Slack events are sent.
	EventBus() awsevents.EventBus
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Send Slack events to Amazon EventBridge.

func NewSlackEvents

func NewSlackEvents(scope constructs.Construct, id *string, props *SlackEventsProps) SlackEvents

type SlackEventsProps

type SlackEventsProps struct {
	// The signing secret of the Slack app.
	SigningSecret awscdk.SecretValue `field:"required" json:"signingSecret" yaml:"signingSecret"`
	// A name for the API Gateway resource.
	// Default: SlackEventsApi.
	//
	ApiName *string `field:"optional" json:"apiName" yaml:"apiName"`
	// Whether to use a custom event bus.
	// Default: false.
	//
	CustomEventBus *bool `field:"optional" json:"customEventBus" yaml:"customEventBus"`
}

Properties for a SlackEvents.

type SlackTextract

type SlackTextract interface {
	constructs.Construct
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Extract text from images posted to Slack using Amazon Textract.

func NewSlackTextract

func NewSlackTextract(scope constructs.Construct, id *string, props *SlackTextractProps) SlackTextract

type SlackTextractProps

type SlackTextractProps struct {
	// The application id of the Slack app.
	AppId *string `field:"required" json:"appId" yaml:"appId"`
	// The **bot** token of the Slack app.
	//
	// The following scopes are required: `chat:write` and `files:read`.
	BotToken awscdk.SecretValue `field:"required" json:"botToken" yaml:"botToken"`
	// The signing secret of the Slack app.
	SigningSecret awscdk.SecretValue `field:"required" json:"signingSecret" yaml:"signingSecret"`
}

Properties for a SlackTextract.

type SlackkAppManifestBotUser

type SlackkAppManifestBotUser struct {
	// The display name of the bot user.
	//
	// Maximum length is 80 characters.
	DisplayName *string `field:"required" json:"displayName" yaml:"displayName"`
	// Whether the bot user will always appear to be online.
	// Default: false.
	//
	AlwaysOnline *bool `field:"optional" json:"alwaysOnline" yaml:"alwaysOnline"`
}

Bot user configuration. See: https://api.slack.com/bot-users

type SslServerTest added in v0.6.8

type SslServerTest interface {
	constructs.Construct
	// The topic to which the SSL test results are sent when the grade is below the minimum grade.
	AlarmTopic() awssns.ITopic
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Perform SSL server test for a hostname.

func NewSslServerTest added in v0.6.8

func NewSslServerTest(scope constructs.Construct, id *string, props *SslServerTestProps) SslServerTest

type SslServerTestGrade added in v0.6.8

type SslServerTestGrade string

SSL Server test grade.

const (
	SslServerTestGrade_A_PLUS  SslServerTestGrade = "A_PLUS"
	SslServerTestGrade_A       SslServerTestGrade = "A"
	SslServerTestGrade_A_MINUS SslServerTestGrade = "A_MINUS"
	SslServerTestGrade_B       SslServerTestGrade = "B"
	SslServerTestGrade_C       SslServerTestGrade = "C"
	SslServerTestGrade_D       SslServerTestGrade = "D"
	SslServerTestGrade_E       SslServerTestGrade = "E"
	SslServerTestGrade_F       SslServerTestGrade = "F"
)

type SslServerTestProps added in v0.6.8

type SslServerTestProps struct {
	// The hostname to test.
	Host *string `field:"required" json:"host" yaml:"host"`
	// The topic to which the results must be sent when the grade is below the minimum grade.
	// Default: - a new topic is created.
	//
	AlarmTopic awssns.ITopic `field:"optional" json:"alarmTopic" yaml:"alarmTopic"`
	// Minimum grade for the test. The grade is calculated using the worst grade of all endpoints.
	//
	// Used to send the results to an alarm SNS topic.
	// Default: SslServerTestGrade.A_PLUS
	//
	MinimumGrade SslServerTestGrade `field:"optional" json:"minimumGrade" yaml:"minimumGrade"`
	// The schedule for the test.
	// Default: - every day.
	//
	Schedule awsevents.Schedule `field:"optional" json:"schedule" yaml:"schedule"`
}

Properties for a SslServerTest.

type StateMachineCustomResourceProvider

type StateMachineCustomResourceProvider interface {
	constructs.Construct
	// The tree node.
	Node() constructs.Node
	// The service token.
	ServiceToken() *string
	// Returns a string representation of this construct.
	ToString() *string
}

A state machine custom resource provider.

func NewStateMachineCustomResourceProvider

func NewStateMachineCustomResourceProvider(scope constructs.Construct, id *string, props *StateMachineCustomResourceProviderProps) StateMachineCustomResourceProvider

type StateMachineCustomResourceProviderProps

type StateMachineCustomResourceProviderProps struct {
	// The state machine.
	StateMachine IStateMachine `field:"required" json:"stateMachine" yaml:"stateMachine"`
	// Timeout.
	// Default: Duration.minutes(30)
	//
	Timeout awscdk.Duration `field:"optional" json:"timeout" yaml:"timeout"`
}

Properties for a StateMachineCustomResourceProvider.

type StaticWebsite

type StaticWebsite interface {
	constructs.Construct
	// The S3 bucket of this static website.
	Bucket() awss3.Bucket
	// The CloudFront distribution of this static website.
	Distribution() awscloudfront.Distribution
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

A CloudFront static website hosted on S3.

func NewStaticWebsite

func NewStaticWebsite(scope constructs.Construct, id *string, props *StaticWebsiteProps) StaticWebsite

type StaticWebsiteProps

type StaticWebsiteProps struct {
	// The domain name for this static website.
	//
	// Example:
	//   www.my-static-website.com
	//
	DomainName *string `field:"required" json:"domainName" yaml:"domainName"`
	// The hosted zone where records should be added.
	HostedZone awsroute53.IHostedZone `field:"required" json:"hostedZone" yaml:"hostedZone"`
	// A backend configuration that will be saved as `config.json` in the S3 bucket of the static website.
	//
	// The frontend can query this config by doing `fetch('/config.json')`.
	//
	// Example:
	//   { userPoolId: '1234', apiEndoint: 'https://www.my-api.com/api' }
	//
	BackendConfiguration interface{} `field:"optional" json:"backendConfiguration" yaml:"backendConfiguration"`
	// A list of domain names that should redirect to `domainName`.
	// Default: - the domain name of the hosted zone.
	//
	Redirects *[]*string `field:"optional" json:"redirects" yaml:"redirects"`
	// Response headers policy for the default behavior.
	// Default: - a new policy is created with best practice security headers.
	//
	ResponseHeadersPolicy awscloudfront.ResponseHeadersPolicy `field:"optional" json:"responseHeadersPolicy" yaml:"responseHeadersPolicy"`
}

Properties for a StaticWebsite.

type ToolkitCleaner

type ToolkitCleaner interface {
	constructs.Construct
	// The tree node.
	Node() constructs.Node
	// Returns a string representation of this construct.
	ToString() *string
}

Clean unused S3 and ECR assets from your CDK Toolkit.

func NewToolkitCleaner

func NewToolkitCleaner(scope constructs.Construct, id *string, props *ToolkitCleanerProps) ToolkitCleaner

type ToolkitCleanerProps

type ToolkitCleanerProps struct {
	// Only output number of assets and total size that would be deleted but without actually deleting assets.
	DryRun *bool `field:"optional" json:"dryRun" yaml:"dryRun"`
	// Retain unused assets that were created recently.
	// Default: - all unused assets are removed.
	//
	RetainAssetsNewerThan awscdk.Duration `field:"optional" json:"retainAssetsNewerThan" yaml:"retainAssetsNewerThan"`
	// The schedule for the cleaner.
	// Default: - every day.
	//
	Schedule awsevents.Schedule `field:"optional" json:"schedule" yaml:"schedule"`
	// Whether to clean on schedule.
	//
	// If you'd like to run the cleanup manually
	// via the console, set to `false`.
	// Default: true.
	//
	ScheduleEnabled *bool `field:"optional" json:"scheduleEnabled" yaml:"scheduleEnabled"`
}

Properties for a ToolkitCleaner.

type UrlShortener

type UrlShortener interface {
	constructs.Construct
	// The underlying API Gateway REST API.
	Api() awsapigateway.RestApi
	// The endpoint of the URL shortener API.
	ApiEndpoint() *string
	// The tree node.
	Node() constructs.Node
	// Grant access to invoke the URL shortener if protected by IAM authorization.
	GrantInvoke(grantee awsiam.IGrantable) awsiam.Grant
	// Returns a string representation of this construct.
	ToString() *string
}

URL shortener.

func NewUrlShortener

func NewUrlShortener(scope constructs.Construct, id *string, props *UrlShortenerProps) UrlShortener

type UrlShortenerProps

type UrlShortenerProps struct {
	// The hosted zone for the short URLs domain.
	HostedZone awsroute53.IHostedZone `field:"required" json:"hostedZone" yaml:"hostedZone"`
	// Authorizer for API gateway.
	// Default: - do not use an authorizer for the API.
	//
	ApiGatewayAuthorizer awsapigateway.IAuthorizer `field:"optional" json:"apiGatewayAuthorizer" yaml:"apiGatewayAuthorizer"`
	// An interface VPC endpoint for API gateway.
	//
	// Specifying this property will
	// make the API private.
	// See: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html
	//
	// Default: - API is public.
	//
	ApiGatewayEndpoint awsec2.IInterfaceVpcEndpoint `field:"optional" json:"apiGatewayEndpoint" yaml:"apiGatewayEndpoint"`
	// A name for the bucket saving the redirects.
	// Default: - derived from short link domain name.
	//
	BucketName *string `field:"optional" json:"bucketName" yaml:"bucketName"`
	// Allowed origins for CORS.
	// Default: - CORS is not enabled.
	//
	CorsAllowOrigins *[]*string `field:"optional" json:"corsAllowOrigins" yaml:"corsAllowOrigins"`
	// Expiration for short urls.
	// Default: cdk.Duration.days(365)
	//
	Expiration awscdk.Duration `field:"optional" json:"expiration" yaml:"expiration"`
	// Whether to use IAM authorization.
	// Default: - do not use IAM authorization.
	//
	IamAuthorization *bool `field:"optional" json:"iamAuthorization" yaml:"iamAuthorization"`
	// The record name to use in the hosted zone.
	// Default: - zone root.
	//
	RecordName *string `field:"optional" json:"recordName" yaml:"recordName"`
}

Properties for a UrlShortener.

Source Files

Directories

Path Synopsis
Package jsii contains the functionaility needed for jsii packages to initialize their dependencies and themselves.
Package jsii contains the functionaility needed for jsii packages to initialize their dependencies and themselves.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL