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

Role creation fails on first invocation. #2

Closed
trieloff opened this issue May 20, 2016 · 1 comment
Closed

Role creation fails on first invocation. #2

trieloff opened this issue May 20, 2016 · 1 comment

Comments

@trieloff
Copy link

When I'm running lein lambda install dev, the process fails the first time during role creation with following error message java.lang.IllegalArgumentException: No matching field found: getRole for class clojure.lang.PersistentArrayMap. On the second try it works, albeit with a warning message: Note! Role salvador-dev-role already exists.

Complete log:

➜  salvador git:(master) ✗ lein lambda install dev
Compiling salvador.core
Compiling salvador.handler
Created /Users/lars/Documents/salvador/target/salvador-0.1.0-SNAPSHOT.jar
Created /Users/lars/Documents/salvador/target/server.jar
Creating role salvador-dev-role with policy salvador-dev-policy
java.lang.IllegalArgumentException: No matching field found: getRole for class clojure.lang.PersistentArrayMap
 at clojure.lang.Reflector.getInstanceField (Reflector.java:271)
    clojure.lang.Reflector.invokeNoArgInstanceMember (Reflector.java:315)
    leiningen.lambda$create_role_and_policy.invokeStatic (lambda.clj:72)
    leiningen.lambda$create_role_and_policy.invoke (lambda.clj:58)
    leiningen.lambda$install_lambda.invokeStatic (lambda.clj:126)
    leiningen.lambda$install_lambda.invoke (lambda.clj:121)
    leiningen.lambda$lambda.invokeStatic (lambda.clj:140)
    leiningen.lambda$lambda.doInvoke (lambda.clj:137)
    clojure.lang.RestFn.invoke (RestFn.java:439)
    clojure.lang.Var.invoke (Var.java:388)
    clojure.lang.AFn.applyToHelper (AFn.java:160)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.core.main$partial_task$fn__5829.doInvoke (main.clj:272)
    clojure.lang.RestFn.applyTo (RestFn.java:139)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$apply.invoke (core.clj:641)
    leiningen.core.main$apply_task.invokeStatic (main.clj:322)
    leiningen.core.main$apply_task.invoke (main.clj:308)
    lein_environ.plugin$write_env_to_file.invokeStatic (plugin.clj:11)
    lein_environ.plugin$write_env_to_file.invoke (plugin.clj:9)
    clojure.lang.Var.invoke (Var.java:394)
    clojure.lang.AFn.applyToHelper (AFn.java:165)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.core$apply.invokeStatic (core.clj:648)
    clojure.core$apply.invoke (core.clj:641)
    robert.hooke$compose_hooks$fn__11923.doInvoke (hooke.clj:40)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:646)
    clojure.core$apply.invoke (core.clj:641)
    robert.hooke$run_hooks.invokeStatic (hooke.clj:46)
    robert.hooke$run_hooks.invoke (hooke.clj:45)
    robert.hooke$prepare_for_hooks$fn__11928$fn__11929.doInvoke (hooke.clj:54)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:328)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:324)
    leiningen.core.main$_main$fn__5895.invoke (main.clj:401)
    leiningen.core.main$_main.invokeStatic (main.clj:394)
    leiningen.core.main$_main.doInvoke (main.clj:391)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    clojure.lang.Var.invoke (Var.java:388)
    clojure.lang.AFn.applyToHelper (AFn.java:160)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.core$apply.invokeStatic (core.clj:646)
    clojure.main$main_opt.invokeStatic (main.clj:314)
    clojure.main$main_opt.invoke (main.clj:310)
    clojure.main$main.invokeStatic (main.clj:421)
    clojure.main$main.doInvoke (main.clj:384)
    clojure.lang.RestFn.invoke (RestFn.java:482)
    clojure.lang.Var.invoke (Var.java:401)
    clojure.lang.AFn.applyToHelper (AFn.java:171)
    clojure.lang.Var.applyTo (Var.java:700)
    clojure.main.main (main.java:37)
➜  salvador git:(master) ✗ lein lambda install dev
Compiling salvador.core
Compiling salvador.handler
Created /Users/lars/Documents/salvador/target/salvador-0.1.0-SNAPSHOT.jar
Created /Users/lars/Documents/salvador/target/server.jar
Creating role salvador-dev-role with policy salvador-dev-policy
Note! Role salvador-dev-role already exists.
Installing to region us-east-1
leinrepo already exists. Skipping creation.
Uploading code to S3 bucket leinrepo with name salvador-dev.jar
Creating Lambda function salvador-dev to region us-east-1
@mhjort
Copy link
Owner

mhjort commented May 22, 2016

Thanks for noticing! The role was created successfully but there was a bug in code. The arn of the created role was not returned correctly. I fixed this and released version 0.4.1.

The default behaviour of the plugin is to skip creation of role and s3 bucket if they already exist. It seemed that is something people usually need. However, if there is a need to make this configurable that could be implemented too.

@mhjort mhjort closed this as completed Aug 2, 2016
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

2 participants