Ρύθμιση Amazon S3

Για να μπορέσουμε, να χρησιμοποιήσουμε το AmazonS3, πρέπει να δημιουργήσουμε μια configuration κλάση. Επίσης, θα χρειαστούμε το access key id και access key secret, που πήραμε εδώ.

Προσθήκη dependency

Προσθέτουμε στο αρχείο pom.xml τo ακόλουθo dependency:

                    
                            <dependency>
                                <groupId>com.amazonaws</groupId>
                                <artifactId<aws-java-sdk</artifactId>
                                <version<1.11.433</version>
                            </dependency>
                    
                

Δημιουργία μεταβλητών config

Για να μην φαίνονται στο GitHub τα access key id και access key secret, που πήραμε από το Amazon S3, πρέπει να δημιουργήσουμε μεταβλητές config στο Heroku.

  1. Κάνουμε login στο Heroku
  2. Επιλέγουμε την εφαρμογή springeshop
  3. Επιλέγουμε την καρτέλα Settings
  4. Πατάμε το Reveal Config Vars Config vars
  5. Δημιουργούμε δύο μεταβλητές AWS_ACCESS_KEY_ID και AWS_ACCESS_KEY_ID, δίνοντας τις τιμές που πήραμε από το AmazonS3
Δημιουργία μεταβλητών περιβάλλοντος τοπικά

Αντίστοιχα, πρέπει να δημιουργήσουμε δύο μεταβλητές περιβάλλοντος AWS_ACCESS_KEY_ID και AWS_ACCESS_KEY_ID. Η διαδικασία περιγράφεται εδώ.

Προσθήκη Application Properties

Προσθέτουμε τα ακόλουθα 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
                    
                
Δημιουργία κλάσης AmazonS3Configuration

Στην κλάση αυτή δημιουργούμε κάποια 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;
                              }

                        }
                
            
Πηγές