@@ -134,7 +134,8 @@ credentials(Profile) ->
134134 lookup_credentials (
135135 Profile ,
136136 os :getenv (" AWS_ACCESS_KEY_ID" ),
137- os :getenv (" AWS_SECRET_ACCESS_KEY" )
137+ os :getenv (" AWS_SECRET_ACCESS_KEY" ),
138+ os :getenv (" AWS_SESSION_TOKEN" )
138139 ).
139140
140141-spec region () -> {ok , string ()}.
@@ -452,43 +453,53 @@ instance_id_url() ->
452453-spec lookup_credentials (
453454 Profile :: string (),
454455 AccessKey :: string () | false ,
455- SecretKey :: string () | false
456+ SecretKey :: string () | false ,
457+ SessionToken :: string () | false
456458) ->
457459 security_credentials ().
458460% % @doc Return the access key and secret access key if they are set in
459461% % environment variables, otherwise lookup the credentials from the config
460462% % file for the specified profile.
461463% % @end
462- lookup_credentials (Profile , false , _ ) ->
464+ lookup_credentials (Profile , false , _ , _ ) ->
463465 lookup_credentials_from_config (
464466 Profile ,
465467 value (Profile , aws_access_key_id ),
466- value (Profile , aws_secret_access_key )
468+ value (Profile , aws_secret_access_key ),
469+ value (Profile , aws_session_token )
467470 );
468- lookup_credentials (Profile , _ , false ) ->
471+ lookup_credentials (Profile , _ , false , _ ) ->
469472 lookup_credentials_from_config (
470473 Profile ,
471474 value (Profile , aws_access_key_id ),
472- value (Profile , aws_secret_access_key )
475+ value (Profile , aws_secret_access_key ),
476+ value (Profile , aws_session_token )
473477 );
474- lookup_credentials (_ , AccessKey , SecretKey ) ->
475- {ok , AccessKey , SecretKey , undefined , undefined }.
478+ lookup_credentials (_ , AccessKey , SecretKey , SessionToken ) ->
479+ case SessionToken of
480+ false -> {ok , AccessKey , SecretKey , undefined , undefined };
481+ SessionToken -> {ok , AccessKey , SecretKey , undefined , SessionToken }
482+ end .
476483
477484-spec lookup_credentials_from_config (
478485 Profile :: string (),
479486 access_key () | {error , Reason :: atom ()},
480- secret_access_key () | {error , Reason :: atom ()}
487+ secret_access_key () | {error , Reason :: atom ()},
488+ security_token () | {error , Reason :: atom ()}
481489) ->
482490 security_credentials ().
483491% % @doc Return the access key and secret access key if they are set in
484492% % for the specified profile in the config file, if it exists. If it does
485493% % not exist or the profile is not set or the values are not set in the
486494% % profile, look up the values in the shared credentials file
487495% % @end
488- lookup_credentials_from_config (Profile , {error , _ }, _ ) ->
496+ lookup_credentials_from_config (Profile , {error , _ }, _ , _ ) ->
489497 lookup_credentials_from_file (Profile , credentials_file_data ());
490- lookup_credentials_from_config (_ , AccessKey , SecretKey ) ->
491- {ok , AccessKey , SecretKey , undefined , undefined }.
498+ lookup_credentials_from_config (_ , AccessKey , SecretKey , SessionToken ) ->
499+ case SessionToken of
500+ {error , _ } -> {ok , AccessKey , SecretKey , undefined , undefined };
501+ SessionToken -> {ok , AccessKey , SecretKey , undefined , SessionToken }
502+ end .
492503
493504-spec lookup_credentials_from_file (
494505 Profile :: string (),
@@ -518,22 +529,24 @@ lookup_credentials_from_section(undefined) ->
518529lookup_credentials_from_section (Credentials ) ->
519530 AccessKey = proplists :get_value (aws_access_key_id , Credentials , undefined ),
520531 SecretKey = proplists :get_value (aws_secret_access_key , Credentials , undefined ),
521- lookup_credentials_from_proplist (AccessKey , SecretKey ).
532+ SessionToken = proplists :get_value (aws_session_token , Credentials , undefined ),
533+ lookup_credentials_from_proplist (AccessKey , SecretKey , SessionToken ).
522534
523535-spec lookup_credentials_from_proplist (
524536 AccessKey :: access_key (),
525- SecretAccessKey :: secret_access_key ()
537+ SecretAccessKey :: secret_access_key (),
538+ SessionToken :: security_token ()
526539) ->
527540 security_credentials ().
528541% % @doc Process the contents of the Credentials proplists checking if the
529542% % access key and secret access key are both set.
530543% % @end
531- lookup_credentials_from_proplist (undefined , _ ) ->
544+ lookup_credentials_from_proplist (undefined , _ , _ ) ->
532545 lookup_credentials_from_instance_metadata ();
533- lookup_credentials_from_proplist (_ , undefined ) ->
546+ lookup_credentials_from_proplist (_ , undefined , _ ) ->
534547 lookup_credentials_from_instance_metadata ();
535- lookup_credentials_from_proplist (AccessKey , SecretKey ) ->
536- {ok , AccessKey , SecretKey , undefined , undefined }.
548+ lookup_credentials_from_proplist (AccessKey , SecretKey , SessionToken ) ->
549+ {ok , AccessKey , SecretKey , undefined , SessionToken }.
537550
538551-spec lookup_credentials_from_instance_metadata () ->
539552 security_credentials ().
@@ -773,7 +786,7 @@ load_imdsv2_token() ->
773786% % @doc Return headers used for instance metadata service requests.
774787% % @end
775788instance_metadata_request_headers () ->
776- case application :get_env (rabbit , aws_prefer_imdsv2 ) of
789+ case application :get_env (rabbitmq_aws , aws_prefer_imdsv2 ) of
777790 {ok , false } ->
778791 [];
779792 % % undefined or {ok, true}
0 commit comments