athena

package
v0.0.96 Latest Latest
Warning

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

Go to latest
Published: Nov 22, 2023 License: Apache-2.0 Imports: 13 Imported by: 0

README

Vibe-io CDK-Extensions Athena Construct Library

The @cdk-extensions/athena package contains advanced constructs and patterns for setting up named queries. The constructs presented here are intended to be replacements for equivalent AWS constructs in the CDK Athena module, but with additional features included.

AWS CDK Athena API Reference

To import and use this module within your CDK project:

import * as athena from 'cdk-extensions/athena';

Objective

The Athena module is a component of the logging strategy provided by this project defined by stacks/AwsLoggingStack. Athena uses the AWS Glue Data Catalog to store and retrieve table metadata for the Amazon S3 data in your Amazon Web Services account. The table metadata lets the Athena query engine know how to find, read, and process the data that you want to query.

The logging strategy defined in this project accounts for all AWS services that log to S3 including ALB, CloudFront, CloudTrail, Flow Logs, S3 access logs, SES, and WAF. For each service a Glue crawler preforms an ETL process to analyze and categorize data in Amazon S3 and store the associated metadata in AWS Glue Data Catalog.

Usage

The Athena module creates CfnNamedQuery resources when the createQueries property is set to true in the glue-tables module. Several default named queires are defined that aid in improving the security posture of your AWS Account. This package introduces several named queries for the following AWS services:

Examples for each of the services below can be found in src/glue-tables

Example of an Athena query to retrive the 100 most active IP addresses by request count:

if (this.createQueries) {
    this.topIpsNamedQuery = new NamedQuery(this, 'top-ips-named-query', {
    database: this.database,
    description: 'Gets the 100 most actvie IP addresses by request count.',
    name: this.friendlyQueryNames ? 'alb-top-ips' : undefined,
    queryString: [
        'SELECT client_ip,',
        '    COUNT(*) AS requests,',
        '    COUNT_IF(elb_status_code BETWEEN 400 AND 499) AS errors_4xx,',
        '    COUNT_IF(elb_status_code BETWEEN 500 AND 599) AS errors_5xx,',
        '    SUM(sent_bytes) AS sent,',
        '    SUM(received_bytes) AS received,',
        '    SUM(sent_bytes + received_bytes) AS total,',
        '    ARBITRARY(user_agent) as user_agent',
        `FROM ${this.tableName}`,
        "WHERE day >= DATE_FORMAT(NOW() - PARSE_DURATION('1d'), '%Y/%m/%d')",
        "    AND FROM_ISO8601_TIMESTAMP(time) >= NOW() - PARSE_DURATION('1d')",
        'GROUP BY client_ip',
        'ORDER by total DESC LIMIT 100;',
    ].join('\n'),
    });
ALB

See src/glue-tables/alb-logs-table.ts

Gets the 100 most actvie IP addresses by request count.

Gets the 100 most recent ELB 5XX responses.

CloudFront

See src/glue-tables/cloudfront-logs-table.ts

Gets statistics for CloudFront distributions for the last day.

Gets the 100 most recent requests that resulted in an error from CloudFront.

Gets the 100 most active IP addresses by request count.

Gets the 100 most requested CloudFront objects.

CloudTrail

See src/glue-tables/cloudtrail-logs-table.ts

Gets the 100 most recent unauthorized AWS API calls.

Gets the 100 most recent AWS user logins.

Flow Logs

See src/glue-tables/flow-logs-table.ts

Gets the 100 most recent rejected packets that stayed within the private network ranges.

S3 Access Logs

See src/glue-tables/s3-access-logs-table.ts

Gets the 100 most recent failed S3 access requests.

SES Logs

See src/glue-tables/ses-logs-table.ts

Gets the 100 most recent bounces from the last day.

Gets the 100 most recent complaints from the last day.

WAF Logs

See src/glue-tables/waf-logs-table.ts

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NamedQuery_IsConstruct

func NamedQuery_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 NamedQuery_IsOwnedResource

func NamedQuery_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func NamedQuery_IsResource

func NamedQuery_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func NewAnalyticsEngineVersion_Override added in v0.0.56

func NewAnalyticsEngineVersion_Override(a AnalyticsEngineVersion)

func NewAnalyticsEngine_Override added in v0.0.56

func NewAnalyticsEngine_Override(a AnalyticsEngine)

func NewApacheSparkEngineOptions_Override added in v0.0.56

func NewApacheSparkEngineOptions_Override(a ApacheSparkEngineOptions)

func NewApacheSparkOutputEncryption_Override added in v0.0.56

func NewApacheSparkOutputEncryption_Override(a ApacheSparkOutputEncryption)

func NewAthenaSqlOutputEncryption_Override added in v0.0.56

func NewAthenaSqlOutputEncryption_Override(a AthenaSqlOutputEncryption)

func NewNamedQuery_Override

func NewNamedQuery_Override(n NamedQuery, scope constructs.Construct, id *string, props *NamedQueryProps)

Creates a new instance of the NamedQuery class.

func NewWorkGroup_Override added in v0.0.56

func NewWorkGroup_Override(w WorkGroup, scope constructs.IConstruct, id *string, props *WorkGroupProps)

func WorkGroup_ARN_FORMAT added in v0.0.56

func WorkGroup_ARN_FORMAT() awscdk.ArnFormat

func WorkGroup_IsConstruct added in v0.0.56

func WorkGroup_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 WorkGroup_IsOwnedResource added in v0.0.56

func WorkGroup_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func WorkGroup_IsResource added in v0.0.56

func WorkGroup_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

Types

type AddNamedQueryOptions added in v0.0.56

type AddNamedQueryOptions struct {
	// The AWS account ID this resource belongs to.
	// Default: - the resource is in the same account as the stack it belongs to.
	//
	Account *string `field:"optional" json:"account" yaml:"account"`
	// ARN to deduce region and account from.
	//
	// The ARN is parsed and the account and region are taken from the ARN.
	// This should be used for imported resources.
	//
	// Cannot be supplied together with either `account` or `region`.
	// Default: - take environment from `account`, `region` parameters, or use Stack environment.
	//
	EnvironmentFromArn *string `field:"optional" json:"environmentFromArn" yaml:"environmentFromArn"`
	// The value passed in by users to the physical name prop of the resource.
	//
	// - `undefined` implies that a physical name will be allocated by
	//   CloudFormation during deployment.
	// - a concrete value implies a specific physical name
	// - `PhysicalName.GENERATE_IF_NEEDED` is a marker that indicates that a physical will only be generated
	//   by the CDK if it is needed for cross-environment references. Otherwise, it will be allocated by CloudFormation.
	// Default: - The physical name will be allocated by CloudFormation at deployment time.
	//
	PhysicalName *string `field:"optional" json:"physicalName" yaml:"physicalName"`
	// The AWS region this resource belongs to.
	// Default: - the resource is in the same region as the stack it belongs to.
	//
	Region *string `field:"optional" json:"region" yaml:"region"`
	// The Glue database to which the query belongs.
	// See: [NamedQuery Database](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-database)
	//
	Database glue.Database `field:"required" json:"database" yaml:"database"`
	// The SQL statements that make up the query.
	// See: [Athena SQL reference](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html)
	//
	QueryString *string `field:"required" json:"queryString" yaml:"queryString"`
	// A human friendly description explaining the functionality of the query.
	// See: [NamedQuery Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-description)
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The name of the query.
	// See: [NamedQuery Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-name)
	//
	Name *string `field:"optional" json:"name" yaml:"name"`
}

Configuration for adding a NamedQuery to a WorkGroup.

type AnalyticsEngine added in v0.0.56

type AnalyticsEngine interface {
}

func NewAnalyticsEngine added in v0.0.56

func NewAnalyticsEngine() AnalyticsEngine

type AnalyticsEngineBindProps added in v0.0.56

type AnalyticsEngineBindProps struct {
	WorkGroupName *string `field:"required" json:"workGroupName" yaml:"workGroupName"`
}

type AnalyticsEngineConfiguration added in v0.0.56

type AnalyticsEngineConfiguration struct {
	EncrpytionKey               awskms.IKey            `field:"optional" json:"encrpytionKey" yaml:"encrpytionKey"`
	EnforceConfiguration        *bool                  `field:"optional" json:"enforceConfiguration" yaml:"enforceConfiguration"`
	EngineVersion               AnalyticsEngineVersion `field:"optional" json:"engineVersion" yaml:"engineVersion"`
	ExpectedBucketOwner         *string                `field:"optional" json:"expectedBucketOwner" yaml:"expectedBucketOwner"`
	OutputLocation              *string                `field:"optional" json:"outputLocation" yaml:"outputLocation"`
	PublishMetrics              *bool                  `field:"optional" json:"publishMetrics" yaml:"publishMetrics"`
	QueryScannedBytesLimit      core.DataSize          `field:"optional" json:"queryScannedBytesLimit" yaml:"queryScannedBytesLimit"`
	RequesterPays               *bool                  `field:"optional" json:"requesterPays" yaml:"requesterPays"`
	ResultsBucket               awss3.IBucket          `field:"optional" json:"resultsBucket" yaml:"resultsBucket"`
	ResultsBucketEncryptionKey  awskms.IKey            `field:"optional" json:"resultsBucketEncryptionKey" yaml:"resultsBucketEncryptionKey"`
	ResultsBucketEncryptionType *string                `field:"optional" json:"resultsBucketEncryptionType" yaml:"resultsBucketEncryptionType"`
	Role                        awsiam.IRole           `field:"optional" json:"role" yaml:"role"`
}

type AnalyticsEngineOutputOptions added in v0.0.56

type AnalyticsEngineOutputOptions struct {
	Bucket          awss3.IBucket           `field:"optional" json:"bucket" yaml:"bucket"`
	Encryption      IAthenaResultEncryption `field:"optional" json:"encryption" yaml:"encryption"`
	ExpectedOwnerId *string                 `field:"optional" json:"expectedOwnerId" yaml:"expectedOwnerId"`
	KeyPrefix       *string                 `field:"optional" json:"keyPrefix" yaml:"keyPrefix"`
}

type AnalyticsEngineVersion added in v0.0.56

type AnalyticsEngineVersion interface {
	Name() *string
}

type ApacheSparkEngineOptions added in v0.0.56

type ApacheSparkEngineOptions interface {
	EncryptionKey() awskms.IKey
	EngineVersion() ApacheSparkEngineVersion
	Output() *AnalyticsEngineOutputOptions
	PublishMetrics() *bool
	Role() awsiam.IRole
}

func NewApacheSparkEngineOptions added in v0.0.56

func NewApacheSparkEngineOptions() ApacheSparkEngineOptions

type ApacheSparkEngineVersion added in v0.0.56

type ApacheSparkEngineVersion interface {
	AnalyticsEngineVersion
	Name() *string
}

func ApacheSparkEngineVersion_AUTO added in v0.0.56

func ApacheSparkEngineVersion_AUTO() ApacheSparkEngineVersion

func ApacheSparkEngineVersion_Of added in v0.0.56

func ApacheSparkEngineVersion_Of(name *string) ApacheSparkEngineVersion

func ApacheSparkEngineVersion_V3 added in v0.0.56

func ApacheSparkEngineVersion_V3() ApacheSparkEngineVersion

type ApacheSparkOutputEncryption added in v0.0.56

type ApacheSparkOutputEncryption interface {
}

func NewApacheSparkOutputEncryption added in v0.0.56

func NewApacheSparkOutputEncryption() ApacheSparkOutputEncryption

type AthenaResultEncryptionConfiguration added in v0.0.56

type AthenaResultEncryptionConfiguration struct {
	BucketEncryption awss3.BucketEncryption `field:"required" json:"bucketEncryption" yaml:"bucketEncryption"`
	EncryptionLabel  *string                `field:"required" json:"encryptionLabel" yaml:"encryptionLabel"`
	EncryptionKey    awskms.IKey            `field:"optional" json:"encryptionKey" yaml:"encryptionKey"`
}

type AthenaResultKmsEncryptionOptions added in v0.0.56

type AthenaResultKmsEncryptionOptions struct {
	EncryptionKey awskms.IKey `field:"optional" json:"encryptionKey" yaml:"encryptionKey"`
}

type AthenaSqlEngineOptions added in v0.0.56

type AthenaSqlEngineOptions struct {
	EnforceConfiguration   *bool                         `field:"optional" json:"enforceConfiguration" yaml:"enforceConfiguration"`
	EngineVersion          AthenaSqlEngineVersion        `field:"optional" json:"engineVersion" yaml:"engineVersion"`
	Output                 *AnalyticsEngineOutputOptions `field:"optional" json:"output" yaml:"output"`
	PublishMetrics         *bool                         `field:"optional" json:"publishMetrics" yaml:"publishMetrics"`
	QueryScannedBytesLimit core.DataSize                 `field:"optional" json:"queryScannedBytesLimit" yaml:"queryScannedBytesLimit"`
	RequesterPays          *bool                         `field:"optional" json:"requesterPays" yaml:"requesterPays"`
}

type AthenaSqlEngineVersion added in v0.0.56

type AthenaSqlEngineVersion interface {
	AnalyticsEngineVersion
	Name() *string
}

func AthenaSqlEngineVersion_AUTO added in v0.0.56

func AthenaSqlEngineVersion_AUTO() AthenaSqlEngineVersion

func AthenaSqlEngineVersion_Of added in v0.0.56

func AthenaSqlEngineVersion_Of(name *string) AthenaSqlEngineVersion

func AthenaSqlEngineVersion_V2 added in v0.0.56

func AthenaSqlEngineVersion_V2() AthenaSqlEngineVersion

func AthenaSqlEngineVersion_V3 added in v0.0.56

func AthenaSqlEngineVersion_V3() AthenaSqlEngineVersion

type AthenaSqlOutputEncryption added in v0.0.56

type AthenaSqlOutputEncryption interface {
}

func NewAthenaSqlOutputEncryption added in v0.0.56

func NewAthenaSqlOutputEncryption() AthenaSqlOutputEncryption

type IAnalyticsEngine added in v0.0.56

type IAnalyticsEngine interface {
	Bind(scope constructs.IConstruct, options *AnalyticsEngineBindProps) *AnalyticsEngineConfiguration
}

func AnalyticsEngine_ApacheSpark added in v0.0.56

func AnalyticsEngine_ApacheSpark(options ApacheSparkEngineOptions) IAnalyticsEngine

func AnalyticsEngine_AthenaSql added in v0.0.56

func AnalyticsEngine_AthenaSql(options *AthenaSqlEngineOptions) IAnalyticsEngine

type IAthenaResultEncryption added in v0.0.56

type IAthenaResultEncryption interface {
	Bind(scope constructs.IConstruct) *AthenaResultEncryptionConfiguration
}

func ApacheSparkOutputEncryption_SseKms added in v0.0.56

func ApacheSparkOutputEncryption_SseKms(options *AthenaResultKmsEncryptionOptions) IAthenaResultEncryption

func ApacheSparkOutputEncryption_SseS3 added in v0.0.56

func ApacheSparkOutputEncryption_SseS3() IAthenaResultEncryption

func AthenaSqlOutputEncryption_CseKms added in v0.0.56

func AthenaSqlOutputEncryption_CseKms(options *AthenaResultKmsEncryptionOptions) IAthenaResultEncryption

func AthenaSqlOutputEncryption_SseKms added in v0.0.56

func AthenaSqlOutputEncryption_SseKms(options *AthenaResultKmsEncryptionOptions) IAthenaResultEncryption

func AthenaSqlOutputEncryption_SseS3 added in v0.0.56

func AthenaSqlOutputEncryption_SseS3() IAthenaResultEncryption

type IWorkGroup added in v0.0.56

type IWorkGroup interface {
	WorkGroupArn() *string
	WorkGroupCreationTime() *string
	WorkGroupEffectiveEngineVersion() *string
	WorkGroupName() *string
}

func WorkGroup_FromWorkGroupArn added in v0.0.56

func WorkGroup_FromWorkGroupArn(scope constructs.IConstruct, id *string, arn *string) IWorkGroup

func WorkGroup_FromWorkGroupAttributes added in v0.0.56

func WorkGroup_FromWorkGroupAttributes(scope constructs.IConstruct, id *string, attrs *WorkGroupAttributes) IWorkGroup

func WorkGroup_FromWorkGroupName added in v0.0.56

func WorkGroup_FromWorkGroupName(scope constructs.IConstruct, id *string, name *string) IWorkGroup

type NamedQuery

type NamedQuery interface {
	awscdk.Resource
	// The Glue database to which the query belongs.
	// See: [NamedQuery Database](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-database)
	//
	Database() glue.Database
	// A human friendly description explaining the functionality of the query.
	// See: [NamedQuery Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-description)
	//
	Description() *string
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The name of the query.
	// See: [NamedQuery Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-name)
	//
	Name() *string
	// The unique ID of the query.
	NamedQueryId() *string
	// The name of the query.
	NamedQueryName() *string
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The SQL statements that make up the query.
	// See: [Athena SQL reference](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html)
	//
	QueryString() *string
	// The underlying NamedQuery CloudFormation resource.
	// See: [AWS::Athena::NamedQuery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html)
	//
	Resource() awsathena.CfnNamedQuery
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// The name of the workgroup that contains the named query.
	// See: [Setting up workgroups](https://docs.aws.amazon.com/athena/latest/ug/workgroups-procedure.html)
	//
	WorkGroup() IWorkGroup
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
}

func NewNamedQuery

func NewNamedQuery(scope constructs.Construct, id *string, props *NamedQueryProps) NamedQuery

Creates a new instance of the NamedQuery class.

type NamedQueryProps

type NamedQueryProps struct {
	// The AWS account ID this resource belongs to.
	// Default: - the resource is in the same account as the stack it belongs to.
	//
	Account *string `field:"optional" json:"account" yaml:"account"`
	// ARN to deduce region and account from.
	//
	// The ARN is parsed and the account and region are taken from the ARN.
	// This should be used for imported resources.
	//
	// Cannot be supplied together with either `account` or `region`.
	// Default: - take environment from `account`, `region` parameters, or use Stack environment.
	//
	EnvironmentFromArn *string `field:"optional" json:"environmentFromArn" yaml:"environmentFromArn"`
	// The value passed in by users to the physical name prop of the resource.
	//
	// - `undefined` implies that a physical name will be allocated by
	//   CloudFormation during deployment.
	// - a concrete value implies a specific physical name
	// - `PhysicalName.GENERATE_IF_NEEDED` is a marker that indicates that a physical will only be generated
	//   by the CDK if it is needed for cross-environment references. Otherwise, it will be allocated by CloudFormation.
	// Default: - The physical name will be allocated by CloudFormation at deployment time.
	//
	PhysicalName *string `field:"optional" json:"physicalName" yaml:"physicalName"`
	// The AWS region this resource belongs to.
	// Default: - the resource is in the same region as the stack it belongs to.
	//
	Region *string `field:"optional" json:"region" yaml:"region"`
	// The Glue database to which the query belongs.
	// See: [NamedQuery Database](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-database)
	//
	Database glue.Database `field:"required" json:"database" yaml:"database"`
	// The SQL statements that make up the query.
	// See: [Athena SQL reference](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html)
	//
	QueryString *string `field:"required" json:"queryString" yaml:"queryString"`
	// A human friendly description explaining the functionality of the query.
	// See: [NamedQuery Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-description)
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The name of the query.
	// See: [NamedQuery Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-name)
	//
	Name *string `field:"optional" json:"name" yaml:"name"`
	// The name of the workgroup that contains the named query.
	// See: [Setting up workgroups](https://docs.aws.amazon.com/athena/latest/ug/workgroups-procedure.html)
	//
	WorkGroup IWorkGroup `field:"optional" json:"workGroup" yaml:"workGroup"`
}

Configuration for a NamedQuery.

type WorkGroup added in v0.0.56

type WorkGroup interface {
	awscdk.Resource
	IWorkGroup
	Description() *string
	Engine() IAnalyticsEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	Name() *string
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	RecursiveDelete() *bool
	Resource() awsathena.CfnWorkGroup
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	State() WorkGroupState
	WorkGroupArn() *string
	WorkGroupCreationTime() *string
	WorkGroupEffectiveEngineVersion() *string
	WorkGroupName() *string
	AddNamedQuery(id *string, options *AddNamedQueryOptions) NamedQuery
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
}

func NewWorkGroup added in v0.0.56

func NewWorkGroup(scope constructs.IConstruct, id *string, props *WorkGroupProps) WorkGroup

type WorkGroupAttributes added in v0.0.56

type WorkGroupAttributes struct {
	Arn                    *string `field:"optional" json:"arn" yaml:"arn"`
	CreationTime           *string `field:"optional" json:"creationTime" yaml:"creationTime"`
	EffectiveEngineVersion *string `field:"optional" json:"effectiveEngineVersion" yaml:"effectiveEngineVersion"`
	Name                   *string `field:"optional" json:"name" yaml:"name"`
}

type WorkGroupOptions added in v0.0.56

type WorkGroupOptions struct {
	Description     *string          `field:"optional" json:"description" yaml:"description"`
	Engine          IAnalyticsEngine `field:"optional" json:"engine" yaml:"engine"`
	Name            *string          `field:"optional" json:"name" yaml:"name"`
	RecursiveDelete *bool            `field:"optional" json:"recursiveDelete" yaml:"recursiveDelete"`
	State           WorkGroupState   `field:"optional" json:"state" yaml:"state"`
}

type WorkGroupProps added in v0.0.56

type WorkGroupProps struct {
	// The AWS account ID this resource belongs to.
	// Default: - the resource is in the same account as the stack it belongs to.
	//
	Account *string `field:"optional" json:"account" yaml:"account"`
	// ARN to deduce region and account from.
	//
	// The ARN is parsed and the account and region are taken from the ARN.
	// This should be used for imported resources.
	//
	// Cannot be supplied together with either `account` or `region`.
	// Default: - take environment from `account`, `region` parameters, or use Stack environment.
	//
	EnvironmentFromArn *string `field:"optional" json:"environmentFromArn" yaml:"environmentFromArn"`
	// The value passed in by users to the physical name prop of the resource.
	//
	// - `undefined` implies that a physical name will be allocated by
	//   CloudFormation during deployment.
	// - a concrete value implies a specific physical name
	// - `PhysicalName.GENERATE_IF_NEEDED` is a marker that indicates that a physical will only be generated
	//   by the CDK if it is needed for cross-environment references. Otherwise, it will be allocated by CloudFormation.
	// Default: - The physical name will be allocated by CloudFormation at deployment time.
	//
	PhysicalName *string `field:"optional" json:"physicalName" yaml:"physicalName"`
	// The AWS region this resource belongs to.
	// Default: - the resource is in the same region as the stack it belongs to.
	//
	Region          *string          `field:"optional" json:"region" yaml:"region"`
	Description     *string          `field:"optional" json:"description" yaml:"description"`
	Engine          IAnalyticsEngine `field:"optional" json:"engine" yaml:"engine"`
	Name            *string          `field:"optional" json:"name" yaml:"name"`
	RecursiveDelete *bool            `field:"optional" json:"recursiveDelete" yaml:"recursiveDelete"`
	State           WorkGroupState   `field:"optional" json:"state" yaml:"state"`
}

type WorkGroupState added in v0.0.56

type WorkGroupState interface {
	Name() *string
}

func WorkGroupState_DISABLED added in v0.0.56

func WorkGroupState_DISABLED() WorkGroupState

func WorkGroupState_ENABLED added in v0.0.56

func WorkGroupState_ENABLED() WorkGroupState

func WorkGroupState_Of added in v0.0.56

func WorkGroupState_Of(name *string) WorkGroupState

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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