-
Notifications
You must be signed in to change notification settings - Fork 300
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
30 changed files
with
3,768 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
Transform: 'AWS::Serverless-2016-10-31' | ||
Metadata: | ||
'AWS::ServerlessRepo::Application': | ||
Name: AthenaAwsCmdbConnector | ||
Description: 'This connector enables Amazon Athena to communicate with various AWS Services, making your resource inventories accessible via SQL.' | ||
Author: 'default author' | ||
SpdxLicenseId: Apache-2.0 | ||
LicenseUrl: LICENSE.txt | ||
ReadmeUrl: README.md | ||
Labels: | ||
- athena-federation | ||
HomePageUrl: 'https://github.com/awslabs/aws-athena-query-federation' | ||
SemanticVersion: 2022.47.1 | ||
SourceCodeUrl: 'https://github.com/awslabs/aws-athena-query-federation' | ||
Parameters: | ||
AthenaCatalogName: | ||
Description: 'This is the name of the lambda function that will be created. This name must satisfy the pattern ^[a-z0-9-_]{1,64}$' | ||
Type: String | ||
AllowedPattern: ^[a-z0-9-_]{1,64}$ | ||
SpillBucket: | ||
Description: 'The name of the bucket where this function can spill data.' | ||
Type: String | ||
SpillPrefix: | ||
Description: 'The prefix within SpillBucket where this function can spill data.' | ||
Type: String | ||
Default: athena-spill | ||
LambdaTimeout: | ||
Description: 'Maximum Lambda invocation runtime in seconds. (min 1 - 900 max)' | ||
Default: 900 | ||
Type: Number | ||
LambdaMemory: | ||
Description: 'Lambda memory in MB (min 128 - 3008 max).' | ||
Default: 3008 | ||
Type: Number | ||
DisableSpillEncryption: | ||
Description: "WARNING: If set to 'true' encryption for spilled data is disabled." | ||
Default: 'false' | ||
Type: String | ||
PermissionsBoundaryARN: | ||
Description: "(Optional) An IAM policy ARN to use as the PermissionsBoundary for the created Lambda function's execution role" | ||
Default: '' | ||
Type: String | ||
Conditions: | ||
HasPermissionsBoundary: !Not [ !Equals [ !Ref PermissionsBoundaryARN, "" ] ] | ||
Resources: | ||
ConnectorConfig: | ||
Type: 'AWS::Serverless::Function' | ||
Properties: | ||
Environment: | ||
Variables: | ||
disable_spill_encryption: !Ref DisableSpillEncryption | ||
spill_bucket: !Ref SpillBucket | ||
spill_prefix: !Ref SpillPrefix | ||
FunctionName: !Ref AthenaCatalogName | ||
Handler: "com.amazonaws.athena.connectors.aws.cmdb.AwsCmdbCompositeHandler" | ||
CodeUri: "./target/athena-aws-cmdb-2022.47.1.jar" | ||
Description: "Enables Amazon Athena to communicate with various AWS Services, making your resource inventories accessible via SQL." | ||
Runtime: java11 | ||
Timeout: !Ref LambdaTimeout | ||
MemorySize: !Ref LambdaMemory | ||
PermissionsBoundary: !If [ HasPermissionsBoundary, !Ref PermissionsBoundaryARN, !Ref "AWS::NoValue" ] | ||
Policies: | ||
- Statement: | ||
- Action: | ||
- autoscaling:Describe* | ||
- elasticloadbalancing:Describe* | ||
- ec2:Describe* | ||
- elasticmapreduce:Describe* | ||
- elasticmapreduce:List* | ||
- rds:Describe* | ||
- rds:ListTagsForResource | ||
- athena:GetQueryExecution | ||
- s3:ListBucket | ||
- athena:GetQueryExecution | ||
Effect: Allow | ||
Resource: '*' | ||
Version: '2012-10-17' | ||
#S3CrudPolicy allows our connector to spill large responses to S3. You can optionally replace this pre-made policy | ||
#with one that is more restrictive and can only 'put' but not read,delete, or overwrite files. | ||
- S3CrudPolicy: | ||
BucketName: !Ref SpillBucket |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
|
||
Transform: 'AWS::Serverless-2016-10-31' | ||
Metadata: | ||
'AWS::ServerlessRepo::Application': | ||
Name: AthenaClickHouseConnector | ||
Description: 'This connector enables Amazon Athena to communicate with your ClickHouse instance(s) using JDBC driver.' | ||
Author: 'default author' | ||
SpdxLicenseId: Apache-2.0 | ||
LicenseUrl: LICENSE.txt | ||
ReadmeUrl: README.md | ||
Labels: | ||
- athena-federation | ||
HomePageUrl: 'https://github.com/awslabs/aws-athena-query-federation' | ||
SemanticVersion: 2022.47.1 | ||
SourceCodeUrl: 'https://github.com/awslabs/aws-athena-query-federation' | ||
Parameters: | ||
LambdaFunctionName: | ||
Description: 'This is the name of the lambda function that will be created. This name must satisfy the pattern ^[a-z0-9-_]{1,64}$' | ||
Type: String | ||
AllowedPattern: ^[a-z0-9-_]{1,64}$ | ||
DefaultConnectionString: | ||
Description: 'The default connection string is used when catalog is "lambda:${LambdaFunctionName}". Catalog specific Connection Strings can be added later. Format: ${DatabaseType}://${NativeJdbcConnectionString}.' | ||
Type: String | ||
SecretNamePrefix: | ||
Description: 'Used to create resource-based authorization policy for "secretsmanager:GetSecretValue" action. E.g. All Athena Clickhouse Federation secret names can be prefixed with "AthenaClickHouseFederation" and authorization policy will allow "arn:${AWS::Partition}:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:AthenaJdbcFederation*". Parameter value in this case should be "AthenaClickhouseFederation". If you do not have a prefix, you can manually update the IAM policy to add allow any secret names.' | ||
Type: String | ||
SpillBucket: | ||
Description: 'The name of the bucket where this function can spill data.' | ||
Type: String | ||
SpillPrefix: | ||
Description: 'The prefix within SpillBucket where this function can spill data.' | ||
Type: String | ||
Default: athena-spill | ||
LambdaTimeout: | ||
Description: 'Maximum Lambda invocation runtime in seconds. (min 1 - 900 max)' | ||
Default: 900 | ||
Type: Number | ||
LambdaMemory: | ||
Description: 'Lambda memory in MB (min 128 - 3008 max).' | ||
Default: 3008 | ||
Type: Number | ||
LambdaRoleARN: | ||
Description: "(Optional) A custom role to be used by the Connector lambda" | ||
Type: String | ||
Default: "" | ||
DisableSpillEncryption: | ||
Description: 'If set to ''false'' data spilled to S3 is encrypted with AES GCM' | ||
Default: 'false' | ||
Type: String | ||
SecurityGroupIds: | ||
Description: 'One or more SecurityGroup IDs corresponding to the SecurityGroup that should be applied to the Lambda function. (e.g. sg1,sg2,sg3)' | ||
Type: 'List<AWS::EC2::SecurityGroup::Id>' | ||
SubnetIds: | ||
Description: 'One or more Subnet IDs corresponding to the Subnet that the Lambda function can use to access you data source. (e.g. subnet1,subnet2)' | ||
Type: 'List<AWS::EC2::Subnet::Id>' | ||
PermissionsBoundaryARN: | ||
Description: "(Optional) An IAM policy ARN to use as the PermissionsBoundary for the created Lambda function's execution role" | ||
Default: '' | ||
Type: String | ||
Conditions: | ||
HasPermissionsBoundary: !Not [ !Equals [ !Ref PermissionsBoundaryARN, "" ] ] | ||
NotHasLambdaRole: !Equals [!Ref LambdaRoleARN, ""] | ||
Resources: | ||
JdbcConnectorConfig: | ||
Type: 'AWS::Serverless::Function' | ||
Properties: | ||
Environment: | ||
Variables: | ||
disable_spill_encryption: !Ref DisableSpillEncryption | ||
spill_bucket: !Ref SpillBucket | ||
spill_prefix: !Ref SpillPrefix | ||
default: !Ref DefaultConnectionString | ||
FunctionName: !Ref LambdaFunctionName | ||
Handler: "com.amazonaws.athena.connectors.clickhouse.ClickHouseMuxCompositeHandler" | ||
CodeUri: "./target/athena-clickhouse-2022.47.1.jar" | ||
Description: "Enables Amazon Athena to communicate with ClickHouse using JDBC" | ||
Runtime: java11 | ||
Timeout: !Ref LambdaTimeout | ||
MemorySize: !Ref LambdaMemory | ||
PermissionsBoundary: !If [ HasPermissionsBoundary, !Ref PermissionsBoundaryARN, !Ref "AWS::NoValue" ] | ||
Role: !If [NotHasLambdaRole, !GetAtt FunctionRole.Arn, !Ref LambdaRoleARN] | ||
VpcConfig: | ||
SecurityGroupIds: !Ref SecurityGroupIds | ||
SubnetIds: !Ref SubnetIds | ||
FunctionRole: | ||
Condition: NotHasLambdaRole | ||
Type: AWS::IAM::Role | ||
Properties: | ||
ManagedPolicyArns: | ||
- !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole" | ||
AssumeRolePolicyDocument: | ||
Version: 2012-10-17 | ||
Statement: | ||
- Effect: Allow | ||
Principal: | ||
Service: | ||
- lambda.amazonaws.com | ||
Action: | ||
- "sts:AssumeRole" | ||
FunctionExecutionPolicy: | ||
Condition: NotHasLambdaRole | ||
Type: "AWS::IAM::Policy" | ||
Properties: | ||
Roles: | ||
- !Ref FunctionRole | ||
PolicyName: FunctionExecutionPolicy | ||
PolicyDocument: | ||
Version: 2012-10-17 | ||
Statement: | ||
- Action: | ||
- secretsmanager:DescribeSecret | ||
- secretsmanager:GetSecretValue | ||
- secretsmanager:GetResourcePolicy | ||
- secretsmanager:ListSecretVersionIds | ||
Effect: Allow | ||
Resource: !Sub 'arn:${AWS::Partition}:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:*' | ||
- Action: | ||
- secretsmanager:ListSecrets | ||
Effect: Allow | ||
Resource: '*' | ||
- Action: | ||
- logs:CreateLogGroup | ||
Effect: Allow | ||
Resource: !Sub 'arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:*' | ||
- Action: | ||
- logs:CreateLogStream | ||
- logs:PutLogEvents | ||
Effect: Allow | ||
Resource: !Sub 'arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/${LambdaFunctionName}:*' | ||
- Action: | ||
- athena:GetQueryExecution | ||
Effect: Allow | ||
Resource: '*' | ||
- Action: | ||
- ec2:CreateNetworkInterface | ||
- ec2:DeleteNetworkInterface | ||
- ec2:DescribeNetworkInterfaces | ||
- ec2:DetachNetworkInterface | ||
Effect: Allow | ||
Resource: '*' | ||
- Action: | ||
- s3:GetObject | ||
- s3:ListBucket | ||
- s3:GetBucketLocation | ||
- s3:GetObjectVersion | ||
- s3:PutObject | ||
- s3:PutObjectAcl | ||
- s3:GetLifecycleConfiguration | ||
- s3:PutLifecycleConfiguration | ||
- s3:DeleteObject | ||
Effect: Allow | ||
Resource: | ||
- Fn::Sub: | ||
- arn:${AWS::Partition}:s3:::${bucketName} | ||
- bucketName: | ||
Ref: SpillBucket | ||
- Fn::Sub: | ||
- arn:${AWS::Partition}:s3:::${bucketName}/* | ||
- bucketName: | ||
Ref: SpillBucket |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
Transform: 'AWS::Serverless-2016-10-31' | ||
Metadata: | ||
'AWS::ServerlessRepo::Application': | ||
Name: AthenaClouderaHiveConnector | ||
Description: 'This connector enables Amazon Athena to communicate with your Cloudera Hive instance(s) using JDBC driver.' | ||
Author: 'default author' | ||
SpdxLicenseId: Apache-2.0 | ||
LicenseUrl: LICENSE.txt | ||
ReadmeUrl: README.md | ||
Labels: | ||
- athena-federation | ||
HomePageUrl: 'https://github.com/awslabs/aws-athena-query-federation' | ||
SemanticVersion: 2022.47.1 | ||
SourceCodeUrl: 'https://github.com/awslabs/aws-athena-query-federation' | ||
Parameters: | ||
LambdaFunctionName: | ||
Description: 'This is the name of the lambda function that will be created. This name must satisfy the pattern ^[a-z0-9-_]{1,64}$' | ||
Type: String | ||
AllowedPattern: ^[a-z0-9-_]{1,64}$ | ||
DefaultConnectionString: | ||
Description: 'The default connection string is used when catalog is "lambda:${LambdaFunctionName}". Catalog specific Connection Strings can be added later. Format: ${DatabaseType}://${NativeJdbcConnectionString}.' | ||
Type: String | ||
SecretNamePrefix: | ||
Description: 'Used to create resource-based authorization policy for "secretsmanager:GetSecretValue" action. E.g. All Athena JDBC Federation secret names can be prefixed with "AthenaJdbcFederation" and authorization policy will allow "arn:${AWS::Partition}:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:AthenaJdbcFederation*". Parameter value in this case should be "AthenaJdbcFederation". If you do not have a prefix, you can manually update the IAM policy to add allow any secret names.' | ||
Type: String | ||
SpillBucket: | ||
Description: 'The name of the bucket where this function can spill data.' | ||
Type: String | ||
SpillPrefix: | ||
Description: 'The prefix within SpillBucket where this function can spill data.' | ||
Type: String | ||
Default: athena-spill | ||
LambdaTimeout: | ||
Description: 'Maximum Lambda invocation runtime in seconds. (min 1 - 900 max)' | ||
Default: 900 | ||
Type: Number | ||
LambdaMemory: | ||
Description: 'Lambda memory in MB (min 128 - 3008 max).' | ||
Default: 3008 | ||
Type: Number | ||
DisableSpillEncryption: | ||
Description: 'If set to ''false'' data spilled to S3 is encrypted with AES GCM' | ||
Default: 'false' | ||
Type: String | ||
SecurityGroupIds: | ||
Description: 'One or more SecurityGroup IDs corresponding to the SecurityGroup that should be applied to the Lambda function. (e.g. sg1,sg2,sg3)' | ||
Type: 'List<AWS::EC2::SecurityGroup::Id>' | ||
SubnetIds: | ||
Description: 'One or more Subnet IDs corresponding to the Subnet that the Lambda function can use to access you data source. (e.g. subnet1,subnet2)' | ||
Type: 'List<AWS::EC2::Subnet::Id>' | ||
PermissionsBoundaryARN: | ||
Description: "(Optional) An IAM policy ARN to use as the PermissionsBoundary for the created Lambda function's execution role" | ||
Default: '' | ||
Type: String | ||
Conditions: | ||
HasPermissionsBoundary: !Not [ !Equals [ !Ref PermissionsBoundaryARN, "" ] ] | ||
Resources: | ||
JdbcConnectorConfig: | ||
Type: 'AWS::Serverless::Function' | ||
Properties: | ||
Environment: | ||
Variables: | ||
disable_spill_encryption: !Ref DisableSpillEncryption | ||
spill_bucket: !Ref SpillBucket | ||
spill_prefix: !Ref SpillPrefix | ||
default: !Ref DefaultConnectionString | ||
FunctionName: !Ref LambdaFunctionName | ||
Handler: "com.amazonaws.athena.connectors.cloudera.HiveMuxCompositeHandler" | ||
CodeUri: "./target/athena-cloudera-hive-2022.47.1.jar" | ||
Description: "Enables Amazon Athena to communicate with Coludera Hive using JDBC" | ||
Runtime: java11 | ||
Timeout: !Ref LambdaTimeout | ||
MemorySize: !Ref LambdaMemory | ||
PermissionsBoundary: !If [ HasPermissionsBoundary, !Ref PermissionsBoundaryARN, !Ref "AWS::NoValue" ] | ||
Policies: | ||
- Statement: | ||
- Action: | ||
- secretsmanager:GetSecretValue | ||
Effect: Allow | ||
Resource: !Sub 'arn:${AWS::Partition}:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:${SecretNamePrefix}*' | ||
Version: '2012-10-17' | ||
- Statement: | ||
- Action: | ||
- logs:CreateLogGroup | ||
Effect: Allow | ||
Resource: !Sub 'arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:*' | ||
Version: '2012-10-17' | ||
- Statement: | ||
- Action: | ||
- logs:CreateLogStream | ||
- logs:PutLogEvents | ||
Effect: Allow | ||
Resource: !Sub 'arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/${LambdaFunctionName}:*' | ||
Version: '2012-10-17' | ||
- Statement: | ||
- Action: | ||
- athena:GetQueryExecution | ||
Effect: Allow | ||
Resource: '*' | ||
Version: '2012-10-17' | ||
#S3CrudPolicy allows our connector to spill large responses to S3. You can optionally replace this pre-made policy | ||
#with one that is more restrictive and can only 'put' but not read,delete, or overwrite files. | ||
- S3CrudPolicy: | ||
BucketName: !Ref SpillBucket | ||
#VPCAccessPolicy allows our connector to run in a VPC so that it can access your data source. | ||
- VPCAccessPolicy: {} | ||
VpcConfig: | ||
SecurityGroupIds: !Ref SecurityGroupIds | ||
SubnetIds: !Ref SubnetIds |
Oops, something went wrong.