Describe the bug
The plugin is rejecting an aws_secret_access_key that contains special characters +/
To reproduce
With a correct and working AWSCLI configuration and a fresh install of PyCharm.
Install AWS Toolkit.
See Problem: AWS: No Credentials Selected
Click Problem then click Edit AWS Credential file(s)
Type into ~/.aws/config editor:
line4 > aws_access_key_id=MYACCESSKEY
line5 > aws_secret_access_key=MySecretAccessKeyWithNumbersAnd+/chars
Click Save
See dialog IDE Error occurred
Expected behavior
I would expect that the plugin would validate an AWS generated aws_secret_access_key.
Screenshots
Your Environment
- OS: MacOS 11.6.5
- JetBrains product: PyCharm (Professional Edition)
- JetBrains product version: 2022.1.1
- Build #PY-221.5591.52, built on May 10, 2022
- Runtime version: 11.0.14.1+1-b2043.45 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
- AWS Toolkit version: 1.43-221
- SAM CLI version: 1.50.0
- JVM/Python version: 3.9
Additional context
I expect that this is related to issue 1010
stacktrace.txt
java.lang.IllegalArgumentException: Expected an '=' sign defining a property on line 5
at software.amazon.awssdk.utils.Validate.isTrue(Validate.java:76)
at software.amazon.awssdk.profiles.internal.ProfileFileReader.parsePropertyDefinition(ProfileFileReader.java:250)
at software.amazon.awssdk.profiles.internal.ProfileFileReader.readPropertyDefinitionLine(ProfileFileReader.java:132)
at software.amazon.awssdk.profiles.internal.ProfileFileReader.parseLine(ProfileFileReader.java:78)
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:1801)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
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$addCredentialsFile$0(ProfileFile.java:142)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at software.amazon.awssdk.profiles.ProfileFile.addCredentialsFile(ProfileFile.java:139)
at software.amazon.awssdk.utils.builder.SdkBuilder.applyMutation(SdkBuilder.java:61)
at software.amazon.awssdk.profiles.ProfileFile.defaultProfileFile(ProfileFile.java:90)
at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.mergeGlobalDefaults(SdkDefaultClientBuilder.java:253)
at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:169)
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:140)
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.(DefaultTelemetryPublisher.kt:24)
at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion$publisher$2.invoke(TelemetryService.kt:133)
at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion$publisher$2.invoke(TelemetryService.kt:133)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion.getPublisher(TelemetryService.kt:133)
at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion.access$getPublisher(TelemetryService.kt:132)
at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService.(TelemetryService.kt:130)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47)
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:891)
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:610)
at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:584)
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:139)
at software.aws.toolkits.telemetry.AwsTelemetry.saveCredentials(TelemetryDefinitions.kt:2969)
at software.aws.toolkits.telemetry.AwsTelemetry.saveCredentials$default(TelemetryDefinitions.kt:2963)
at software.aws.toolkits.jetbrains.core.credentials.CredentialsFileHelpNotificationProvider$CredentialFileNotificationPanel.init$lambda-0(CredentialsFileHelpNotificationProvider.kt:42)
at com.intellij.ui.EditorNotificationPanel$2.handlePanelActionClick(EditorNotificationPanel.java:297)
at com.intellij.ui.EditorNotificationPanel$ActionHyperlinkLabel$1.hyperlinkActivated(EditorNotificationPanel.java:342)
at com.intellij.ui.HyperlinkAdapter.hyperlinkUpdate(HyperlinkAdapter.java:11)
at com.intellij.ui.HyperlinkLabel.fireHyperlinkEvent(HyperlinkLabel.java:240)
at com.intellij.ui.HyperlinkLabel.processMouseEvent(HyperlinkLabel.java:162)
at java.desktop/java.awt.Component.processEvent(Component.java:6419)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2793)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:820)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:743)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:803)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:119)
at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Is there a more specific example you could provide? I am unable to reproduce this.

However, putting Unicode whitespace in the file does seem to trigger an error

May 20
'22 18:05
rli
Well I'm not going to post my secret key. If that's not the issue then a better error message would help.
java.lang.IllegalArgumentException: Expected an '=' sign defining a property on line 5
I cut an issue to the Java SDK, but can you also confirm that the = on line 5 is actually an ASCII 'equals' (0x3d) and not a Unicode character that looks like an equals sign?
May 25
'22 22:05
rli