aws / aws-toolkit-jetbrains

AWS Toolkit for JetBrains - a plugin for interacting with AWS from JetBrains IDEs
https://plugins.jetbrains.com/plugin/11349-aws-toolkit
Apache License 2.0
753 stars 219 forks source link

config file editor support: java.lang.IllegalArgumentException: Expected a profile or property definition #3279

Open sjh37 opened 2 years ago

sjh37 commented 2 years ago

Describe the bug This bug happened whilst scrolling around code in JetBrains Rider.

java.lang.IllegalArgumentException: Expected a profile or property definition on line 5
    at software.amazon.awssdk.utils.Validate.isTrue(Validate.java:76)
    at software.amazon.awssdk.profiles.internal.ProfileFileReader.readPropertyContinuationLine(ProfileFileReader.java:167)
    at software.amazon.awssdk.profiles.internal.ProfileFileReader.parseLine(ProfileFileReader.java:76)
    at software.amazon.awssdk.profiles.internal.ProfileFileReader.lambda$parseFile$0(ProfileFileReader.java:58)
    at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
    at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
    at software.amazon.awssdk.profiles.internal.ProfileFileReader.parseFile(ProfileFileReader.java:58)
    at software.amazon.awssdk.profiles.ProfileFile$BuilderImpl.build(ProfileFile.java:266)
    at software.amazon.awssdk.profiles.ProfileFile.lambda$addConfigFile$1(ProfileFile.java:150)
    at java.base/java.util.Optional.ifPresent(Optional.java:178)
    at software.amazon.awssdk.profiles.ProfileFile.addConfigFile(ProfileFile.java:147)
    at software.amazon.awssdk.utils.builder.SdkBuilder.applyMutation(SdkBuilder.java:61)
    at software.amazon.awssdk.profiles.ProfileFile.defaultProfileFile(ProfileFile.java:91)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.mergeGlobalDefaults(SdkDefaultClientBuilder.java:258)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:174)
    at software.amazon.awssdk.services.cognitoidentity.DefaultCognitoIdentityClientBuilder.buildClient(DefaultCognitoIdentityClientBuilder.java:29)
    at software.amazon.awssdk.services.cognitoidentity.DefaultCognitoIdentityClientBuilder.buildClient(DefaultCognitoIdentityClientBuilder.java:22)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:145)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryPublisher$Companion.createDefaultTelemetryClient(DefaultTelemetryPublisher.kt:109)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryPublisher$Companion.access$createDefaultTelemetryClient(DefaultTelemetryPublisher.kt:94)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryPublisher.<init>(DefaultTelemetryPublisher.kt:24)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion$publisher$2.invoke(TelemetryService.kt:136)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion$publisher$2.invoke(TelemetryService.kt:136)
    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion.getPublisher(TelemetryService.kt:136)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion.access$getPublisher(TelemetryService.kt:135)
    at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService.<init>(TelemetryService.kt:133)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47)
    at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:890)
    at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:51)
    at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:41)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:119)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:73)
    at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:66)
    at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:609)
    at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:583)
    at com.intellij.openapi.client.ClientAwareComponentManager.getFromSelfOrCurrentSession(ClientAwareComponentManager.kt:37)
    at com.intellij.openapi.client.ClientAwareComponentManager.getService(ClientAwareComponentManager.kt:22)
    at software.aws.toolkits.jetbrains.services.telemetry.TelemetryService$Companion.getInstance(TelemetryService.kt:142)
    at software.aws.toolkits.telemetry.CodewhispererTelemetry.codePercentage(TelemetryDefinitions.kt:9212)
    at software.aws.toolkits.telemetry.CodewhispererTelemetry.codePercentage$default(TelemetryDefinitions.kt:9200)
    at software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhispererCodeCoverageTracker.emitCodeWhispererCodeContribution(CodeWhispererCodeCoverageTracker.kt:156)
    at software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhispererCodeCoverageTracker.flush(CodeWhispererCodeCoverageTracker.kt:104)
    at software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhispererCodeCoverageTracker.scheduleCodeWhispererCodeCoverageTracker$lambda-2(CodeWhispererCodeCoverageTracker.kt:113)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:241)
    at com.intellij.util.Alarm$Request.runSafely(Alarm.java:388)
    at com.intellij.util.Alarm$Request.run(Alarm.java:377)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:223)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:241)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:214)
    at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:203)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base/java.lang.Thread.run(Thread.java:833)

To reproduce Difficult to reproduce as this is intermittent.

Your Environment

rli commented 2 years ago

Could you by any chance share line 5 of your AWS config file and some of the surrounding context with the secrets redacted?

sjh37 commented 2 years ago
[default]
region = eu-west-1

[profile RedactedUatAdmin]
    role_arn = arn:aws:iam::44redacted94:role/RedactedAdminRole
    source_profile = default

Line 5 in my config is the role_arn.

This is also my complete config file, I do not have any else in the file.

rli commented 2 years ago

You need to remove the leading spaces:

[default]
region = eu-west-1

[profile RedactedUatAdmin]
role_arn = arn:aws:iam::44redacted94:role/RedactedAdminRole
source_profile = default

The .ini type is a good approximation of the config/credentials format, but there are cases where that breaks down, so it would be nice to have proper syntax highlighting for these files.

sjh37 commented 2 years ago

Thanks

rli commented 2 years ago

Keeping open to track the customer need for this feature