Skip to content

Commit a890288

Browse files
committed
Update
1 parent 40feb5c commit a890288

File tree

2 files changed

+48
-22
lines changed

2 files changed

+48
-22
lines changed

bolt/src/main/java/com/slack/api/bolt/service/builtin/AmazonS3InstallationService.java

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
import software.amazon.awssdk.core.ResponseBytes;
1515
import software.amazon.awssdk.core.sync.RequestBody;
1616
import software.amazon.awssdk.core.sync.ResponseTransformer;
17+
import software.amazon.awssdk.regions.Region;
1718
import software.amazon.awssdk.services.s3.S3Client;
1819
import software.amazon.awssdk.services.s3.model.*;
1920

2021
import java.io.IOException;
22+
import java.net.URI;
2123
import java.nio.charset.StandardCharsets;
2224
import java.util.Map;
2325
import java.util.Optional;
@@ -26,23 +28,38 @@
2628
public class AmazonS3InstallationService implements InstallationService {
2729

2830
private final String bucketName;
29-
private AwsCredentialsProvider credentialsProvider;
31+
32+
private final AwsCredentialsProvider credentialsProvider;
33+
private final Region region;
34+
private final URI endpointOverride;
35+
3036
private boolean historicalDataEnabled;
3137

3238
public AmazonS3InstallationService(String bucketName) {
33-
this(bucketName, null);
39+
this(bucketName, DefaultCredentialsProvider.create(), null, null);
3440
}
3541

3642
public AmazonS3InstallationService(String bucketName, AwsCredentialsProvider credentialsProvider) {
43+
this(bucketName, credentialsProvider, null, null);
44+
}
45+
46+
public AmazonS3InstallationService(
47+
String bucketName,
48+
AwsCredentialsProvider credentialsProvider,
49+
Region region,
50+
String endpointOverride
51+
) {
3752
this.bucketName = bucketName;
3853
this.credentialsProvider = credentialsProvider;
54+
this.region = region != null ? region : Region.of(System.getenv("AWS_REGION"));
55+
this.endpointOverride = (endpointOverride != null && !endpointOverride.isEmpty()) ? URI.create(endpointOverride) : null;
3956
}
4057

4158
@Override
4259
public Initializer initializer() {
4360
return (app) -> {
4461
// The first access to S3 tends to be slow on AWS Lambda.
45-
AwsCredentials credentials = createCredentials(getAwsCredentialsProvider());
62+
AwsCredentials credentials = createCredentials(this.credentialsProvider);
4663
if (credentials == null || credentials.accessKeyId() == null) {
4764
throw new IllegalStateException("AWS credentials not found");
4865
}
@@ -303,19 +320,16 @@ private Installer toInstaller(ResponseBytes<GetObjectResponse> s3Object) throws
303320
return JsonOps.fromJson(json, DefaultInstaller.class);
304321
}
305322

306-
protected AwsCredentialsProvider getAwsCredentialsProvider() {
307-
if (this.credentialsProvider == null) {
308-
this.credentialsProvider = DefaultCredentialsProvider.create();
309-
}
310-
return this.credentialsProvider;
311-
}
312-
313323
protected AwsCredentials createCredentials(AwsCredentialsProvider provider) {
314324
return provider.resolveCredentials();
315325
}
316326

317327
protected S3Client createS3Client() {
318-
return S3Client.builder().credentialsProvider(this.credentialsProvider).build();
328+
return S3Client.builder()
329+
.credentialsProvider(this.credentialsProvider)
330+
.region(this.region)
331+
.endpointOverride(this.endpointOverride)
332+
.build();
319333
}
320334

321335
private String getInstallerKey(Installer i) {

bolt/src/main/java/com/slack/api/bolt/service/builtin/AmazonS3OAuthStateService.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
import lombok.extern.slf4j.Slf4j;
66
import software.amazon.awssdk.auth.credentials.AwsCredentials;
77
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
8-
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
98
import software.amazon.awssdk.core.ResponseBytes;
109
import software.amazon.awssdk.core.sync.RequestBody;
1110
import software.amazon.awssdk.core.sync.ResponseTransformer;
11+
import software.amazon.awssdk.regions.Region;
1212
import software.amazon.awssdk.services.s3.S3Client;
1313
import software.amazon.awssdk.services.s3.model.*;
1414

15+
import java.net.URI;
1516
import java.nio.charset.StandardCharsets;
1617

1718
/**
@@ -23,22 +24,36 @@
2324
public class AmazonS3OAuthStateService implements OAuthStateService {
2425

2526
private final String bucketName;
26-
private AwsCredentialsProvider credentialsProvider;
27+
28+
private final AwsCredentialsProvider credentialsProvider;
29+
private final Region region;
30+
private final URI endpointOverride;
2731

2832
public AmazonS3OAuthStateService(String bucketName) {
2933
this(bucketName, null);
3034
}
3135

3236
public AmazonS3OAuthStateService(String bucketName, AwsCredentialsProvider credentialsProvider) {
37+
this(bucketName, credentialsProvider, null, null);
38+
}
39+
40+
public AmazonS3OAuthStateService(
41+
String bucketName,
42+
AwsCredentialsProvider credentialsProvider,
43+
Region region,
44+
String endpointOverride
45+
) {
3346
this.bucketName = bucketName;
3447
this.credentialsProvider = credentialsProvider;
48+
this.region = region != null ? region : Region.of(System.getenv("AWS_REGION"));
49+
this.endpointOverride = (endpointOverride != null && !endpointOverride.isEmpty()) ? URI.create(endpointOverride) : null;
3550
}
3651

3752
@Override
3853
public Initializer initializer() {
3954
return (app) -> {
4055
// The first access to S3 tends to be slow on AWS Lambda.
41-
AwsCredentials credentials = createCredentials(getAwsCredentialsProvider());
56+
AwsCredentials credentials = createCredentials(this.credentialsProvider);
4257
if (credentials == null || credentials.accessKeyId() == null) {
4358
throw new IllegalStateException("AWS credentials not found");
4459
}
@@ -102,19 +117,16 @@ public void deleteStateFromDatastore(String state) throws Exception {
102117
}
103118
}
104119

105-
protected AwsCredentialsProvider getAwsCredentialsProvider() {
106-
if (this.credentialsProvider == null) {
107-
this.credentialsProvider = DefaultCredentialsProvider.create();
108-
}
109-
return this.credentialsProvider;
110-
}
111-
112120
protected AwsCredentials createCredentials(AwsCredentialsProvider provider) {
113121
return provider.resolveCredentials();
114122
}
115123

116124
protected S3Client createS3Client() {
117-
return S3Client.builder().credentialsProvider(this.credentialsProvider).build();
125+
return S3Client.builder()
126+
.credentialsProvider(this.credentialsProvider)
127+
.region(this.region)
128+
.endpointOverride(this.endpointOverride)
129+
.build();
118130
}
119131

120132
private String getKey(String state) {

0 commit comments

Comments
 (0)