Wenjun Ruan
5 months ago
committed by
GitHub
49 changed files with 899 additions and 592 deletions
@ -0,0 +1,64 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
~ contributor license agreements. See the NOTICE file distributed with |
||||||
|
~ this work for additional information regarding copyright ownership. |
||||||
|
~ The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
~ (the "License"); you may not use this file except in compliance with |
||||||
|
~ the License. You may obtain a copy of the License at |
||||||
|
~ |
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
~ |
||||||
|
~ Unless required by applicable law or agreed to in writing, software |
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
~ See the License for the specific language governing permissions and |
||||||
|
~ limitations under the License. |
||||||
|
--> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-authentication</artifactId> |
||||||
|
<version>dev-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>dolphinscheduler-aws-authentication</artifactId> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.amazonaws</groupId> |
||||||
|
<artifactId>aws-java-sdk-emr</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.amazonaws</groupId> |
||||||
|
<artifactId>aws-java-sdk-s3</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.amazonaws</groupId> |
||||||
|
<artifactId>aws-java-sdk-sagemaker</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.amazonaws</groupId> |
||||||
|
<artifactId>aws-java-sdk-dms</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>software.amazon.awssdk</groupId> |
||||||
|
<artifactId>datasync</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.slf4j</groupId> |
||||||
|
<artifactId>slf4j-api</artifactId> |
||||||
|
<scope>provided</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
</dependencies> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,74 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
import static org.apache.dolphinscheduler.authentication.aws.AwsConfigurationKeys.AWS_AUTHENTICATION_TYPE; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
|
||||||
|
import com.amazonaws.auth.AWSCredentialsProvider; |
||||||
|
import com.amazonaws.auth.AWSStaticCredentialsProvider; |
||||||
|
import com.amazonaws.auth.BasicAWSCredentials; |
||||||
|
import com.amazonaws.auth.InstanceProfileCredentialsProvider; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
@UtilityClass |
||||||
|
public class AWSCredentialsProviderFactor { |
||||||
|
|
||||||
|
public static AWSCredentialsProvider credentialsProvider(Map<String, String> awsProperties) { |
||||||
|
String awsAuthenticationType = awsProperties.getOrDefault( |
||||||
|
AWS_AUTHENTICATION_TYPE, AWSCredentialsProviderType.STATIC_CREDENTIALS_PROVIDER.getName()); |
||||||
|
AWSCredentialsProviderType awsCredentialsProviderType = |
||||||
|
AWSCredentialsProviderType.of(awsAuthenticationType).orElse(null); |
||||||
|
if (awsCredentialsProviderType == null) { |
||||||
|
throw new IllegalArgumentException( |
||||||
|
"The aws.credentials.provider.type: " + awsAuthenticationType + " is invalidated"); |
||||||
|
} |
||||||
|
switch (awsCredentialsProviderType) { |
||||||
|
case STATIC_CREDENTIALS_PROVIDER: |
||||||
|
return createAWSStaticCredentialsProvider(awsProperties); |
||||||
|
case INSTANCE_PROFILE_CREDENTIALS_PROVIDER: |
||||||
|
return createInstanceProfileCredentialsProvider(); |
||||||
|
default: |
||||||
|
throw new IllegalArgumentException( |
||||||
|
"The aws.credentials.provider.type: " + awsAuthenticationType + " is invalidated"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private static AWSCredentialsProvider createAWSStaticCredentialsProvider(Map<String, String> awsProperties) { |
||||||
|
String awsAccessKeyId = awsProperties.get(AwsConfigurationKeys.AWS_ACCESS_KEY_ID); |
||||||
|
String awsSecretAccessKey = awsProperties.get(AwsConfigurationKeys.AWS_SECRET); |
||||||
|
final BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(awsAccessKeyId, awsSecretAccessKey); |
||||||
|
AWSStaticCredentialsProvider awsStaticCredentialsProvider = |
||||||
|
new AWSStaticCredentialsProvider(basicAWSCredentials); |
||||||
|
log.info("AWSStaticCredentialsProvider created successfully"); |
||||||
|
return awsStaticCredentialsProvider; |
||||||
|
} |
||||||
|
|
||||||
|
private static AWSCredentialsProvider createInstanceProfileCredentialsProvider() { |
||||||
|
InstanceProfileCredentialsProvider instanceProfileCredentialsProvider = |
||||||
|
InstanceProfileCredentialsProvider.getInstance(); |
||||||
|
log.info("InstanceProfileCredentialsProvider created successfully"); |
||||||
|
return instanceProfileCredentialsProvider; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
import java.util.Optional; |
||||||
|
|
||||||
|
import lombok.Getter; |
||||||
|
|
||||||
|
@Getter |
||||||
|
public enum AWSCredentialsProviderType { |
||||||
|
|
||||||
|
STATIC_CREDENTIALS_PROVIDER("AWSStaticCredentialsProvider"), |
||||||
|
INSTANCE_PROFILE_CREDENTIALS_PROVIDER("InstanceProfileCredentialsProvider"), |
||||||
|
; |
||||||
|
|
||||||
|
private final String name; |
||||||
|
|
||||||
|
AWSCredentialsProviderType(String name) { |
||||||
|
this.name = name; |
||||||
|
} |
||||||
|
|
||||||
|
public static Optional<AWSCredentialsProviderType> of(String name) { |
||||||
|
if (name == null) { |
||||||
|
return Optional.empty(); |
||||||
|
} |
||||||
|
for (AWSCredentialsProviderType type : values()) { |
||||||
|
if (type.getName().equalsIgnoreCase(name)) { |
||||||
|
return Optional.of(type); |
||||||
|
} |
||||||
|
} |
||||||
|
return Optional.empty(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass; |
||||||
|
|
||||||
|
import com.amazonaws.auth.AWSCredentialsProvider; |
||||||
|
import com.amazonaws.client.builder.AwsClientBuilder; |
||||||
|
import com.amazonaws.regions.Regions; |
||||||
|
import com.amazonaws.services.databasemigrationservice.AWSDatabaseMigrationService; |
||||||
|
import com.amazonaws.services.databasemigrationservice.AWSDatabaseMigrationServiceClientBuilder; |
||||||
|
|
||||||
|
@UtilityClass |
||||||
|
public class AWSDatabaseMigrationServiceClientFactory { |
||||||
|
|
||||||
|
public AWSDatabaseMigrationService createAWSDatabaseMigrationServiceClient(Map<String, String> awsProperties) { |
||||||
|
AWSCredentialsProvider awsCredentialsProvider = AWSCredentialsProviderFactor.credentialsProvider(awsProperties); |
||||||
|
Regions regions = Regions.fromName(awsProperties.get(AwsConfigurationKeys.AWS_REGION)); |
||||||
|
String endpoint = awsProperties.get(AwsConfigurationKeys.AWS_ENDPOINT); |
||||||
|
|
||||||
|
if (endpoint != null && !endpoint.isEmpty()) { |
||||||
|
return AWSDatabaseMigrationServiceClientBuilder |
||||||
|
.standard() |
||||||
|
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, regions.getName())) |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.build(); |
||||||
|
} else { |
||||||
|
return AWSDatabaseMigrationServiceClientBuilder |
||||||
|
.standard() |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.withRegion(regions) |
||||||
|
.build(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass; |
||||||
|
|
||||||
|
import com.amazonaws.auth.AWSCredentialsProvider; |
||||||
|
import com.amazonaws.client.builder.AwsClientBuilder; |
||||||
|
import com.amazonaws.regions.Regions; |
||||||
|
import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce; |
||||||
|
import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder; |
||||||
|
|
||||||
|
@UtilityClass |
||||||
|
public class AmazonElasticMapReduceClientFactory { |
||||||
|
|
||||||
|
public AmazonElasticMapReduce createAmazonElasticMapReduceClient(Map<String, String> awsProperties) { |
||||||
|
AWSCredentialsProvider awsCredentialsProvider = AWSCredentialsProviderFactor.credentialsProvider(awsProperties); |
||||||
|
Regions regions = Regions.fromName(awsProperties.get(AwsConfigurationKeys.AWS_REGION)); |
||||||
|
String endpoint = awsProperties.get(AwsConfigurationKeys.AWS_ENDPOINT); |
||||||
|
|
||||||
|
if (endpoint != null && !endpoint.isEmpty()) { |
||||||
|
return AmazonElasticMapReduceClientBuilder |
||||||
|
.standard() |
||||||
|
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, regions.getName())) |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.build(); |
||||||
|
} else { |
||||||
|
return AmazonElasticMapReduceClientBuilder |
||||||
|
.standard() |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.withRegion(regions) |
||||||
|
.build(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass; |
||||||
|
|
||||||
|
import com.amazonaws.auth.AWSCredentialsProvider; |
||||||
|
import com.amazonaws.client.builder.AwsClientBuilder; |
||||||
|
import com.amazonaws.regions.Regions; |
||||||
|
import com.amazonaws.services.s3.AmazonS3; |
||||||
|
import com.amazonaws.services.s3.AmazonS3ClientBuilder; |
||||||
|
|
||||||
|
@UtilityClass |
||||||
|
public class AmazonS3ClientFactory { |
||||||
|
|
||||||
|
public AmazonS3 createAmazonS3Client(Map<String, String> awsProperties) { |
||||||
|
AWSCredentialsProvider awsCredentialsProvider = AWSCredentialsProviderFactor.credentialsProvider(awsProperties); |
||||||
|
Regions regions = Regions.fromName(awsProperties.get(AwsConfigurationKeys.AWS_REGION)); |
||||||
|
String endpoint = awsProperties.get(AwsConfigurationKeys.AWS_ENDPOINT); |
||||||
|
|
||||||
|
if (endpoint != null && !endpoint.isEmpty()) { |
||||||
|
return AmazonS3ClientBuilder |
||||||
|
.standard() |
||||||
|
.withPathStyleAccessEnabled(true) |
||||||
|
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, regions.getName())) |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.build(); |
||||||
|
} else { |
||||||
|
return AmazonS3ClientBuilder |
||||||
|
.standard() |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.withRegion(regions) |
||||||
|
.build(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass; |
||||||
|
|
||||||
|
import com.amazonaws.auth.AWSCredentialsProvider; |
||||||
|
import com.amazonaws.client.builder.AwsClientBuilder; |
||||||
|
import com.amazonaws.regions.Regions; |
||||||
|
import com.amazonaws.services.sagemaker.AmazonSageMaker; |
||||||
|
import com.amazonaws.services.sagemaker.AmazonSageMakerClientBuilder; |
||||||
|
|
||||||
|
@UtilityClass |
||||||
|
public class AmazonSageMakerClientFactory { |
||||||
|
|
||||||
|
public AmazonSageMaker createAmazonSageMakerClient(Map<String, String> awsProperties) { |
||||||
|
AWSCredentialsProvider awsCredentialsProvider = AWSCredentialsProviderFactor.credentialsProvider(awsProperties); |
||||||
|
Regions regions = Regions.fromName(awsProperties.get(AwsConfigurationKeys.AWS_REGION)); |
||||||
|
String endpoint = awsProperties.get(AwsConfigurationKeys.AWS_ENDPOINT); |
||||||
|
|
||||||
|
if (endpoint != null && !endpoint.isEmpty()) { |
||||||
|
return AmazonSageMakerClientBuilder |
||||||
|
.standard() |
||||||
|
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, regions.getName())) |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.build(); |
||||||
|
} else { |
||||||
|
return AmazonSageMakerClientBuilder |
||||||
|
.standard() |
||||||
|
.withCredentials(awsCredentialsProvider) |
||||||
|
.withRegion(regions) |
||||||
|
.build(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
public class AwsConfigurationKeys { |
||||||
|
|
||||||
|
public static final String AWS_AUTHENTICATION_TYPE = "credentials.provider.type"; |
||||||
|
public static final String AWS_REGION = "region"; |
||||||
|
public static final String AWS_ENDPOINT = "endpoint"; |
||||||
|
|
||||||
|
public static final String AWS_ACCESS_KEY_ID = "access.key.id"; |
||||||
|
public static final String AWS_SECRET = "access.key.secret"; |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.authentication.aws; |
||||||
|
|
||||||
|
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; |
||||||
|
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; |
||||||
|
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; |
||||||
|
import software.amazon.awssdk.regions.Region; |
||||||
|
import software.amazon.awssdk.services.datasync.DataSyncClient; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass; |
||||||
|
|
||||||
|
@UtilityClass |
||||||
|
public class DataSyncClientFactory { |
||||||
|
|
||||||
|
public DataSyncClient createDataSyncClient(Map<String, String> awsProperties) { |
||||||
|
// todo: upgrade the version of aws sdk
|
||||||
|
String awsAccessKeyId = awsProperties.get(AwsConfigurationKeys.AWS_ACCESS_KEY_ID); |
||||||
|
String awsSecretAccessKey = awsProperties.get(AwsConfigurationKeys.AWS_SECRET); |
||||||
|
final AwsBasicCredentials basicAWSCredentials = AwsBasicCredentials.create(awsAccessKeyId, awsSecretAccessKey); |
||||||
|
final AwsCredentialsProvider awsCredentialsProvider = StaticCredentialsProvider.create(basicAWSCredentials); |
||||||
|
|
||||||
|
// create a datasync client
|
||||||
|
return DataSyncClient.builder() |
||||||
|
.region(Region.of(awsProperties.get(AwsConfigurationKeys.AWS_REGION))) |
||||||
|
.credentialsProvider(awsCredentialsProvider) |
||||||
|
.build(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
# |
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
# contributor license agreements. See the NOTICE file distributed with |
||||||
|
# this work for additional information regarding copyright ownership. |
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
# (the "License"); you may not use this file except in compliance with |
||||||
|
# the License. You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
# |
||||||
|
|
||||||
|
aws: |
||||||
|
s3: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: accessKey123 |
||||||
|
access.key.secret: secretKey123 |
||||||
|
region: us-east-1 |
||||||
|
bucket.name: dolphinscheduler |
||||||
|
endpoint: http://s3:9000 |
||||||
|
emr: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
sagemaker: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
dms: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
datasync: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
|
@ -0,0 +1,46 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
~ contributor license agreements. See the NOTICE file distributed with |
||||||
|
~ this work for additional information regarding copyright ownership. |
||||||
|
~ The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
~ (the "License"); you may not use this file except in compliance with |
||||||
|
~ the License. You may obtain a copy of the License at |
||||||
|
~ |
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
~ |
||||||
|
~ Unless required by applicable law or agreed to in writing, software |
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
~ See the License for the specific language governing permissions and |
||||||
|
~ limitations under the License. |
||||||
|
--> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler</artifactId> |
||||||
|
<version>dev-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>dolphinscheduler-authentication</artifactId> |
||||||
|
<packaging>pom</packaging> |
||||||
|
|
||||||
|
<modules> |
||||||
|
<module>dolphinscheduler-aws-authentication</module> |
||||||
|
</modules> |
||||||
|
|
||||||
|
<dependencyManagement> |
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-bom</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
<type>pom</type> |
||||||
|
<scope>import</scope> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</dependencyManagement> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,65 @@ |
|||||||
|
# |
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
# contributor license agreements. See the NOTICE file distributed with |
||||||
|
# this work for additional information regarding copyright ownership. |
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
# (the "License"); you may not use this file except in compliance with |
||||||
|
# the License. You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
# |
||||||
|
|
||||||
|
aws: |
||||||
|
s3: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: accessKey123 |
||||||
|
access.key.secret: secretKey123 |
||||||
|
region: us-east-1 |
||||||
|
bucket.name: dolphinscheduler |
||||||
|
endpoint: http://s3:9000 |
||||||
|
emr: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
sagemaker: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
dms: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
datasync: |
||||||
|
# The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider |
||||||
|
# AWSStaticCredentialsProvider: use the access key and secret key to authenticate |
||||||
|
# InstanceProfileCredentialsProvider: use the IAM role to authenticate |
||||||
|
credentials.provider.type: AWSStaticCredentialsProvider |
||||||
|
access.key.id: minioadmin |
||||||
|
access.key.secret: minioadmin |
||||||
|
region: cn-north-1 |
||||||
|
endpoint: http://localhost:9000 |
||||||
|
|
Loading…
Reference in new issue