Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Malformed credentials file does not communicate the problem #578

Closed
jslootbeek opened this issue Nov 21, 2018 · 2 comments
Closed

Malformed credentials file does not communicate the problem #578

jslootbeek opened this issue Nov 21, 2018 · 2 comments

Comments

@jslootbeek
Copy link

Describe the bug
A typo in the credentials file caused AWS not to connect. There was no communication to the user about this.

To reproduce

  1. create a typo in the credentials file (remove an underscore)
  2. restart PyCharm

Expected behavior

A popup indicating that an exception was encountered due to a missing property.

Screenshots

I dug the following out of the logs:

2018-11-21 15:04:10,754 [  14478]   WARN - lkitCredentialsProviderFactory - Failed to load AWS profiles 
java.lang.IllegalArgumentException: Profile default is missing required property aws_secret_access_key
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProvider$requiredProperty$1.get(AwsProfile.kt:155)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProvider$requiredProperty$1.get(AwsProfile.kt:37)
	at java.util.Optional.orElseThrow(Optional.java:290)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProvider.requiredProperty(AwsProfile.kt:154)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProvider.createInternalCredentialProvider(AwsProfile.kt:108)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProvider.<init>(AwsProfile.kt:44)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProviderFactory$loadFromProfileFile$1$$special$$inlined$forEach$lambda$1.invoke(AwsProfile.kt:194)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProviderFactory$loadFromProfileFile$1$$special$$inlined$forEach$lambda$1.invoke(AwsProfile.kt:167)
	at software.aws.toolkits.core.utils.LogUtilsKt.tryOrNull(LogUtils.kt:18)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProviderFactory$loadFromProfileFile$1.invoke(AwsProfile.kt:193)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProviderFactory$loadFromProfileFile$1.invoke(AwsProfile.kt:167)
	at software.aws.toolkits.core.utils.LogUtilsKt.tryOrNull(LogUtils.kt:18)
	at software.aws.toolkits.core.utils.LogUtilsKt.tryOrNull$default(LogUtils.kt:17)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProviderFactory.loadFromProfileFile(AwsProfile.kt:182)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProviderFactory.<init>(AwsProfile.kt:174)
	at software.aws.toolkits.core.credentials.ProfileToolkitCredentialsProviderFactory.<init>(AwsProfile.kt:171)
	at software.aws.toolkits.jetbrains.core.credentials.ProfileCredentialProviderFactory.createToolkitCredentialProviderFactory(ProfileCredentialProviderFactory.kt:18)
	at software.aws.toolkits.jetbrains.core.credentials.ExtensionPointCredentialsProviderRegistry$Companion$factories$2.invoke(ExtensionPointCredentialsProviderRegistry.kt:51)
	at software.aws.toolkits.jetbrains.core.credentials.ExtensionPointCredentialsProviderRegistry$Companion$factories$2.invoke(ExtensionPointCredentialsProviderRegistry.kt:39)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at software.aws.toolkits.jetbrains.core.credentials.ExtensionPointCredentialsProviderRegistry$Companion.getFactories(ExtensionPointCredentialsProviderRegistry.kt)
	at software.aws.toolkits.jetbrains.core.credentials.ExtensionPointCredentialsProviderRegistry$Companion.access$getFactories$p(ExtensionPointCredentialsProviderRegistry.kt:39)
	at software.aws.toolkits.jetbrains.core.credentials.ExtensionPointCredentialsProviderRegistry.listFactories(ExtensionPointCredentialsProviderRegistry.kt:37)
	at software.aws.toolkits.core.credentials.ToolkitCredentialsProviderManager.getCredentialProvider(ToolkitCredentialsProviderManager.kt:12)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultCredentialManager.getCredentialProvider(CredentialManager.kt:37)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager$getCredentialProviderOrNull$1.invoke(ProjectAccountSettingsManager.kt:148)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager$getCredentialProviderOrNull$1.invoke(ProjectAccountSettingsManager.kt:86)
	at software.aws.toolkits.core.utils.ExceptionUtilsKt.tryOrNull(ExceptionUtils.kt:10)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager.getCredentialProviderOrNull(ProjectAccountSettingsManager.kt:147)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager.access$getCredentialProviderOrNull(ProjectAccountSettingsManager.kt:86)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager$activeCredentialProvider$1.invoke(ProjectAccountSettingsManager.kt:110)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager$activeCredentialProvider$1.invoke(ProjectAccountSettingsManager.kt:86)
	at software.aws.toolkits.core.utils.ExceptionUtilsKt.tryOrNull(ExceptionUtils.kt:10)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager.getActiveCredentialProvider(ProjectAccountSettingsManager.kt:109)
	at software.aws.toolkits.jetbrains.core.credentials.ProjectAccountSettingsManager$DefaultImpls.hasActiveCredentials(ProjectAccountSettingsManager.kt:44)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager.hasActiveCredentials(ProjectAccountSettingsManager.kt:86)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager.getState(ProjectAccountSettingsManager.kt:125)
	at software.aws.toolkits.jetbrains.core.credentials.DefaultProjectAccountSettingsManager.getState(ProjectAccountSettingsManager.kt:86)
	at com.intellij.configurationStore.StateGetterImpl.close(StorageBaseEx.kt:64)
	at com.intellij.configurationStore.ComponentStoreImpl.doInitComponent(ComponentStoreImpl.kt:381)
	at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:333)
	at com.intellij.configurationStore.ComponentStoreImpl.initPersistenceStateComponent(ComponentStoreImpl.kt:119)
	at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:93)
	at com.intellij.configurationStore.ComponentStoreWithExtraComponents.initComponent(ComponentStoreWithExtraComponents.kt:15)
	at com.intellij.openapi.components.impl.PlatformComponentManagerImpl.initializeComponent(PlatformComponentManagerImpl.java:54)
	at com.intellij.openapi.components.impl.ServiceManagerImpl$MyComponentAdapter.getComponentInstance(ServiceManagerImpl.java:214)
	at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:246)
	at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:213)
	at com.intellij.openapi.components.ServiceManager.doGetService(ServiceManager.java:52)
	at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:30)
	at software.aws.toolkits.jetbrains.core.credentials.ProjectAccountSettingsManager$Companion.getInstance(ProjectAccountSettingsManager.kt:71)
	at software.aws.toolkits.jetbrains.core.explorer.ExplorerToolWindow.updateModel$jetbrains_core(ExplorerToolWindow.kt:76)
	at software.aws.toolkits.jetbrains.core.explorer.ExplorerToolWindow.<init>(ExplorerToolWindow.kt:64)
	at software.aws.toolkits.jetbrains.core.explorer.AwsExplorerFactory.createToolWindowContent(AwsExplorerFactory.kt:24)
	at com.intellij.openapi.wm.impl.ToolWindowImpl.ensureContentInitialized(ToolWindowImpl.java:526)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.lambda$initToolWindow$8(ToolWindowManagerImpl.java:514)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.initToolWindow(ToolWindowManagerImpl.java:517)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$6.run(ToolWindowManagerImpl.java:469)
	at com.intellij.openapi.wm.impl.CommandProcessor.runNext(CommandProcessor.java:78)
	at com.intellij.openapi.wm.impl.CommandProcessor.run(CommandProcessor.java:59)
	at com.intellij.openapi.wm.impl.CommandProcessor.flush(CommandProcessor.java:32)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.flushCommands(ToolWindowManagerImpl.java:600)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.access$3200(ToolWindowManagerImpl.java:69)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$InitToolWindowsActivity.lambda$runActivity$0(ToolWindowManagerImpl.java:2316)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:732)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:719)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:668)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:363)
	at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:776)
	at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:202)
	at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:188)
	at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:606)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:454)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:110)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:216)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.loadProjectWithProgress(ProjectManagerImpl.java:552)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.convertAndLoadProject(ProjectManagerImpl.java:538)
	at com.intellij.platform.PlatformProjectOpenProcessor.doOpenProject(PlatformProjectOpenProcessor.java:212)
	at com.intellij.ide.RecentProjectsManagerBase.doOpenProject(RecentProjectsManagerBase.java:578)
	at com.intellij.ide.RecentProjectsManagerBase.doReopenLastProject(RecentProjectsManagerBase.java:697)
	at com.intellij.ide.RecentProjectsManagerBase$MyAppLifecycleListener.appStarting(RecentProjectsManagerBase.java:742)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:117)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:358)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:347)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:324)
	at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:29)
	at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:196)
	at com.sun.proxy.$Proxy61.appStarting(Unknown Source)
	at com.intellij.idea.IdeaApplication$IdeStarter.lambda$main$1(IdeaApplication.java:372)
	at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
	at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:111)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:120)
	at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:122)
	at com.intellij.idea.IdeaApplication$IdeStarter.main(IdeaApplication.java:370)
	at com.intellij.idea.IdeaApplication.lambda$run$1(IdeaApplication.java:211)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:195)
	at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:211)
	at com.intellij.idea.IdeaApplication.lambda$initApplication$0(IdeaApplication.java:74)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:732)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:342)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Your Environment

  • OS: OS X
  • JetBrains' Product: PyCharm
  • JetBrains' Product Version: 2018.3
  • Toolkit Version:0.3

Additional context

@jslootbeek
Copy link
Author

This also goes for credentials without correct permissions. The logs show much more information that what is provided to the user:

software.amazon.awssdk.services.lambda.model.LambdaException: User: arn:aws:iam::xxxxxx:user/pycharm-test is not authorized to perform: lambda:ListFunctions on resource: * (Service: null, Status Code: 403, Request ID: c255eafc-edc9-11e8-b8e6-db46e33caf01)

@awschristou
Copy link
Contributor

Thank you for the report.

We've got a couple of fixes now in the master branch. Look for these in a future Toolkit release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants