Skip to content

Commit 59b45ff

Browse files
committed
end
1 parent 20ff04b commit 59b45ff

9 files changed

Lines changed: 146 additions & 10 deletions

File tree

README.md

Lines changed: 80 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -615,9 +615,6 @@ E outra, não é para comparar se é IGUAL e sim "LIKE", por isso, estamos falan
615615

616616
### Controller
617617

618-
619-
620-
621618
## FindEventById (com lista de cupom)
622619

623620
### Repository
@@ -840,3 +837,83 @@ Desmarca.
840837
E crie o banco de dados! Ele vai demorar um tempo para aparecer o localhost e as credenciais.
841838

842839
## Colocando informações AWS na aplicação
840+
841+
Coloque a url do banco no app.properties, assim como a senha.
842+
843+
Para pegar a senha vá em configurações do RDS e em "retrieve secret value".
844+
845+
### IAM
846+
847+
Vá em funções (roles) e crie um perfil para usar no EC2, para que ele tenha acesso ao nosso S3. Afinal o EC2 vai
848+
impulsionar dados dentro do bucket do S3.
849+
850+
Selecione um serviço da AWS > EC2 e coloque para ele ter AmazonS3FullAccess.
851+
852+
Assim, criaremos credenciais para os nossos serviços.
853+
854+
O nome da role será EC2ServiceS3FullAccess
855+
856+
### EC2
857+
858+
Volte para o EC2, vá na nossa instância criada > ações > segurança > modificar função IAM > coloque a que criamos.
859+
860+
## Modificações pré-build
861+
862+
Antes de fazer o build da aplicação, vamos fazer umas modificações no código em virtude dos testes unitários.
863+
864+
Coloque a dependência do H2 para realizar os testes unitários (para que não seja utilizado o banco do RDS).
865+
866+
Já sabemos, só criar um ``application-test.properties`` para que seja usado as configurações para se conectar ao
867+
banco H2.
868+
869+
No nossa classe main de test, colocamos o profile para o properties de test:
870+
871+
![img_15.png](img_15.png)
872+
873+
Dê o comando maven:
874+
875+
>mvn clean install
876+
877+
Copiaremos o arquivo de build para a máquina do EC2.
878+
879+
Primeiro, teste a conexão com a instãncia do EC2. Vá no EC2 > Instances > InstanceID > Connect (campo superior direito).
880+
881+
Pegaremos o IP público (ec2-user...) para conectar via SSH.
882+
883+
Vá no terminal e crie um terminal para conectar a uma nova ``SSH Session``. Preencha os campos corretamente e conecte-se.
884+
885+
Digite java --version para identificar se ele foi instalado, caso não tenha sido, digite ``sudo yum install java-21-amazon
886+
-correto-headless`` e digite ``y`` para confirmar.
887+
888+
Para encerrar a conexão digite ``exit``.
889+
890+
## Copiando arquivo JAR para maquina do EC2
891+
892+
O arquivo está dentro do pacote target.
893+
894+
Use o comando abaixo para copiar o arquivo para a máquina virtual.
895+
896+
>scp -i C:\Users\SEUPC\.ssh\suaKEY.pem .\target\api-0.0.1-SNAPSHOT.jar ec2-user@oIPaqui:/home/ec2-user
897+
898+
Para se conectar:
899+
900+
> ssh -i C:\Users\seuPC\.ssh\suaKEY.pem ec2-user@IpAqui
901+
902+
903+
Com o arquivo lá dentro, só dar o comando:
904+
905+
> java -jar api-0.0.1-SNAPSHOT.jar
906+
907+
‼️ Para que não dê nenhum problema de conexão com o banco de dados:
908+
909+
Vá até o RDS > databases > clique na data base > scrolla até o final (Security group rules (1)) > clique no security
910+
group (vai abrir uma outra guia) > clique no security group ID > edit inbound rules > adicione regra de (Todo tráfego)
911+
que vier do security group.
912+
913+
![img_16.png](img_16.png)
914+
915+
## Para testar
916+
917+
Vá até o EC2, pega o IP público e vá até o Postman para testar as requisições.
918+
919+
Ip será: ``ipdoec2:8080/api/event``

ec2-user@52.72.235.146

55 MB
Binary file not shown.

img_15.png

45.6 KB
Loading

img_16.png

23 KB
Loading

pom.xml

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,51 @@
7171
<version>1.11.913</version>
7272
</dependency>
7373
<dependency>
74-
<groupId>com.fasterxml.jackson.core</groupId>
75-
<artifactId>jackson-databind</artifactId>
74+
<groupId>com.amazonaws</groupId>
75+
<artifactId>aws-java-sdk-core</artifactId>
76+
<version>1.11.913</version>
7677
</dependency>
78+
7779
<dependency>
7880
<groupId>org.springframework.boot</groupId>
7981
<artifactId>spring-boot-starter-validation</artifactId>
8082
</dependency>
83+
<dependency>
84+
<groupId>com.h2database</groupId>
85+
<artifactId>h2</artifactId>
86+
<scope>runtime</scope>
87+
</dependency>
88+
89+
<dependency>
90+
<groupId>javax.xml.bind</groupId>
91+
<artifactId>jaxb-api</artifactId>
92+
<version>2.3.1</version>
93+
</dependency>
94+
95+
<!-- Dependência para o JAXB Runtime -->
96+
<dependency>
97+
<groupId>org.glassfish.jaxb</groupId>
98+
<artifactId>jaxb-runtime</artifactId>
99+
<version>2.3.1</version>
100+
</dependency>
101+
102+
<dependency>
103+
<groupId>com.fasterxml.jackson.core</groupId>
104+
<artifactId>jackson-databind</artifactId>
105+
<version>2.15.0</version> <!-- ou versão mais recente -->
106+
</dependency>
107+
108+
<dependency>
109+
<groupId>com.fasterxml.jackson.core</groupId>
110+
<artifactId>jackson-core</artifactId>
111+
<version>2.15.0</version> <!-- ou versão mais recente -->
112+
</dependency>
113+
114+
<dependency>
115+
<groupId>com.fasterxml.jackson.core</groupId>
116+
<artifactId>jackson-annotations</artifactId>
117+
<version>2.15.0</version> <!-- ou versão mais recente -->
118+
</dependency>
81119
</dependencies>
82120

83121
<build>
@@ -94,6 +132,14 @@
94132
</excludes>
95133
</configuration>
96134
</plugin>
135+
<plugin>
136+
<groupId>org.apache.maven.plugins</groupId>
137+
<artifactId>maven-resources-plugin</artifactId>
138+
<version>3.3.1</version>
139+
<configuration>
140+
<encoding>UTF-8</encoding>
141+
</configuration>
142+
</plugin>
97143
</plugins>
98144
</build>
99145

src/main/java/com/eventostec/api/config/AWSConfig.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ public AmazonS3 createS3Instance() {
2020
//no computador
2121
.standard()
2222
//se o upload der algum problema use o código abaixo
23-
//.withCredentials(new DefaultAWSCredentialsProviderChain())
23+
24+
.withCredentials(new DefaultAWSCredentialsProviderChain())
2425

2526
//você pode também instalar plugin do AWS, pois o intelij
2627
//identifica o profile default configurado
27-
.withRegion(awsRegion).build();
28+
.withRegion(awsRegion)
29+
.build();
2830
}
2931
}

src/main/resources/application.properties

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
2+
13
spring.application.name=api
24

3-
spring.datasource.url=jdbc:postgresql://localhost:5432/eventostec
5+
spring.datasource.url=jdbc:postgresql://url/postgres
46
spring.datasource.username=postgres
5-
spring.datasource.password=789456
7+
spring.datasource.password=
68

79
aws.region=us-east-2
8-
#nome temporário
10+
#nome temporário
911
aws.bucket.name=eventostec-imagens-p
1012

1113
spring.flyway.baseline-on-migrate=true

src/test/java/com/eventostec/api/ApiApplicationTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import org.junit.jupiter.api.Test;
44
import org.springframework.boot.test.context.SpringBootTest;
5+
import org.springframework.test.context.ActiveProfiles;
56

67
@SpringBootTest
8+
@ActiveProfiles("test")
79
class ApiApplicationTests {
810

911
@Test
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
spring.datasource.url=jdbc:h2:mem:testdb
2+
spring.datasource.driver-class-name=org.h2.Driver
3+
spring.datasource.username=sa
4+
spring.datasource.password=password
5+
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
6+
7+
spring.flyway.enabled=false

0 commit comments

Comments
 (0)