Estou com um problema há um tempo, e não consigo entender o que está acontecendo. na classe principal, tudo parece estar passando normalmente, exceto o "AluraRdsStack", (no caso do meu código é ferreira,mas enfim, vou enviar a classe aqui)
import software.amazon.awscdk.App;
public class FerreiraAwsInfraApp {
public static void main(final String[] args) {
App app = new App();
FerreiraVpcStack vpcStack = new FerreiraVpcStack(app, "Vpc");
FerreiraClusterStack clusterStack = new FerreiraClusterStack(app, "Cluster", vpcStack.getVpc());
clusterStack.addDependency(vpcStack);
FerreiraRdsStack rdsStack = new FerreiraRdsStack(app, "Rds", vpcStack.getVpc());
rdsStack.addDependency(vpcStack);
FerreiraServiceStack ferreiraServiceStack = new FerreiraServiceStack(app, "Service", clusterStack.getCluster());
ferreiraServiceStack.addDependency(clusterStack);
ferreiraServiceStack.addDependency(rdsStack);
app.synth();
}
}
Ao fazer o deploy, me volta o seguinte erro:
PS C:\Users\Edmilson Ferreira\Desktop\ALURA\ferreirafood-aws-infra> cdk deploy Service
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.1.0:java (default-cli) on project ferreirafood-aws-infra: An exception occurred while executin
g the Java class. VPC não deve ser nula -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.1.0:java (default-cli) on project ferreirafood
-aws-infra: An exception occurred while executing the Java class. VPC não deve ser nula
Eu joguei um throw para caso a vpc estivesse vindo nula (era o que parecia estar acontecendo segundo o erro, vou disponibilizar agora a classe FerreiraRdsStack(seria a alurardsstack)
public class FerreiraRdsStack extends Stack {
public FerreiraRdsStack(final Construct scope, final String id, final Vpc vpc) {
this(scope, id, null, vpc);
}
public FerreiraRdsStack(final Construct scope, final String id, final StackProps props, final Vpc vpc) {
super(scope, id, props);
if (vpc == null) {
throw new IllegalArgumentException("VPC não deve ser nula");
}
String securityGroup = vpc.getVpcDefaultSecurityGroup();
CfnParameter senha = CfnParameter.Builder.create(this, "senha")
.type("String")
.description("Senha do database pedidos-ms")
.build();
ISecurityGroup iSecurityGroup = SecurityGroup.fromSecurityGroupId(this, id, vpc.getVpcDefaultSecurityGroup());
iSecurityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(3306));
DatabaseInstance database = DatabaseInstance.Builder
.create(this, "Rds-pedidos")
.instanceIdentifier("ferreira-aws-pedido-db")
.engine(DatabaseInstanceEngine.mysql(MySqlInstanceEngineProps.builder()
.version(MysqlEngineVersion.VER_8_0)
.build()))
.vpc(vpc)
.credentials(Credentials.fromUsername("admin",
CredentialsFromUsernameOptions.builder()
.password(SecretValue.unsafePlainText(senha.getValueAsString()))
.build()))
.instanceType(InstanceType.of(InstanceClass.BURSTABLE2, InstanceSize.MICRO))
.multiAz(false)
.allocatedStorage(10)
.securityGroups(Collections.singletonList(iSecurityGroup))
.vpcSubnets(SubnetSelection.builder()
.subnets(vpc.getPrivateSubnets())
.build())
.build();
CfnOutput.Builder.create(this, "pedidos-db-endpoint")
.exportName("pedidos-db-endpoint")
.value(database.getDbInstanceEndpointAddress())
.build();
CfnOutput.Builder.create(this, "pedidos-db-senha")
.exportName("pedidos-db-senha")
.value(senha.getValueAsString())
.build();
}
}
Enfim, não sei se passou coisa mínima que não consegui ver, mas estou travado nisso há um certo tempo, e tive que recorrer ao forum :)