Για να μπορέσουμε, να χρησιμοποιήσουμε το AmazonS3, πρέπει να δημιουργήσουμε μια configuration κλάση. Επίσης, θα χρειαστούμε το access key id και access key secret, που πήραμε εδώ.
Προσθέτουμε στο αρχείο pom.xml τo ακόλουθo dependency:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId<aws-java-sdk</artifactId>
<version<1.11.433</version>
</dependency>
Για να μην φαίνονται στο GitHub τα access key id και access key secret, που πήραμε από το Amazon S3, πρέπει να δημιουργήσουμε μεταβλητές config στο Heroku.
Αντίστοιχα, πρέπει να δημιουργήσουμε δύο μεταβλητές περιβάλλοντος AWS_ACCESS_KEY_ID και AWS_ACCESS_KEY_ID. Η διαδικασία περιγράφεται εδώ.
Προσθέτουμε τα ακόλουθα properties στο αρχείο application.properties. Τα properties αφορο
#Amazon S3
aws.access.key.id = ${AWS_ACCESS_KEY_ID}
aws.access.key.secret = ${AWS_ACCESS_KEY_SECRET}
aws.region = eu-central-1
aws.s3.audio.bucket = springeshop-bucket
Στην κλάση αυτή δημιουργούμε κάποια beanς, που θα χρειαστούμε, για να δημιουργήσουμε ένα αντικείμενο AmazonS3ClientServiceImpl, με το οποίο θα προσθέτουμε φωτογραφίες στο AmazonS3 bucket μας. Θα δημιουργηθεί στο πακέτο springeshop.configuration .
package springeshop.configuration;
@Configuration
public class AmazonS3Configuration {
@Value("${aws.access.key.id}")
private String awsKeyId;
@Value("${aws.access.key.secret}")
private String awsKeySecret;
@Value("${aws.region}")
private String awsRegion;
@Value("${aws.s3.audio.bucket}")
private String awsS3AudioBucket;
@Bean(name ="awsKeyId")
public String getAWSKeyId() {
return awsKeyId;
}
@Bean(name ="awsKeySecret")
public String getAWSKeySecret() {
return awsKeySecret;
}
@Bean(name ="awsRegion")
public Region getAWSPollyRegion() {
return Region.getRegion(Regions.fromName(awsRegion));
}
@Bean(name ="awsCredentialsProvider")
public AWSCredentialsProvider getAWSCredentials() {
BasicAWSCredentials awsCredentials = new BasicAWSCredentials(this.awsKeyId, this.awsKeySecret);
return new AWSStaticCredentialsProvider(awsCredentials);
}
@Bean(name ="awsS3AudioBucket")
public String getAWSS3AudioBucket() {
return awsS3AudioBucket;
}
}