# Connecting to different ARN/Role/Amazon Account when trying to deploy

**URL:** <https://forum.serverless.com/t/connecting-to-different-arn-role-amazon-account-when-trying-to-deploy/6980>\
**Category:** Serverless Framework\
**Created:** [January 11, 2019, 6:23pm UTC](https://forum.serverless.com/t/connecting-to-different-arn-role-amazon-account-when-trying-to-deploy/6980 "2019-01-11T18:23:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![zachisit](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.serverless.com/zachisit/32/2928_2.png) [@zachisit](https://forum.serverless.com/u/zachisit)\
**Post date:** [January 11, 2019, 6:23pm UTC](https://forum.serverless.com/t/connecting-to-different-arn-role-amazon-account-when-trying-to-deploy/6980/1 "2019-01-11T18:23:38Z")

</div>

I have previously had Serverless installed on a server, and then when I tried to edit the function and package it back up to edit the zip file I broke it, so I have to start all over. So to begin this issue: I had Serverless running and was using it with this package - [https://github.com/adieuadieu/serverless-chrome/tree/master/examples/serverless-framework/aws](https://github.com/adieuadieu/serverless-chrome/tree/master/examples/serverless-framework/aws)

When I `sudo npm run deploy`, I get the ServerlessError:

> ServerlessError: User: arn:aws:sts::XXX:assumed-role/EC2CodeDeploy/i-268b1acf is not authorized to perform: cloudformation:DescribeStackResources on resource: arn:aws:cloudformation:us-east-1:YYY:stack/aws-dev/\*

I’m not sure why it is trying to connect to a Role and not an IAM. So I check the Role, and it is in an entirely different AWS account than the account I’ve configured. Let’s call this Account B.

When it comes to configuration, I’ve installed AWS CLI and entered in the key, id, and region in my Account A in AWS. Not touching Account B whatsoever. When I run `aws s3 ls` I see the correct s3 buckets of the account with the key/id/regioin, so I know CLI is working with the correct account. Sounds good. I check the `~/.aws/creditionals` file and just has one profile `[default]` which seems normal. No other profiles are in here. I copied this over to the `~/.aws/config` file so now both files are same. Works great.

I then go into my SSH where I’ve installed serverless, and run `npm run deploy` and it gives me the same message above. I think maybe somehow it is not using the correct account for whatever reason. So I manually set the access key and secret with the following commands:

`serverless config credentials --provider aws --key XXX --secret YYY`

It tells me there already is a profile in the aws creds file, so I then add --o to the end to overwrite. I run `sudo npm run deploy` and still same error.

I then run this command to manually set a profile in the creds for serverless, with the profile name matching the IAM user name:

`serverless config credentials --provider aws --key XXX --secret YYY --profile serverless-agent`

Where “serverless-agent” is the name of my IAM user I’ve been trying to use to deploy. I run this, it tells me there already is an existing profile in the aws creds file so I run it with --o and it tells me the aws file is now updated. In bash I go to Vim the file and I only see the single “[default]” settings, as if nothing has changed. I run `sudo npm run deploy` and it gives me the same Error.

I then go and manually set the access and secret:

```
export AWS_ACCESS_KEY_ID=XXX
export AWS_SECRET_ACCESS_KEY=YYY

```

I run `sudo npm run deploy` and it gives me the same Error.

I even removed AWS CLI, and the directory that holds the `creditionals` and `config` files - and when I manually set my account creds via `serverless config` it tells me there already is a profile set up in my aws file, prompting me to use the `overwrite` command - how is this possible when the file is literally not on my computer?

So I then think that serverless itself has a cache or something, calling the wrong file or whatever for creds, so I uninstall serverless via `sudo npm uninstall -g serverless` so that I can start from zero again. I then do all of the above steps and more all over again, and nothing has changed. Same error message.

I do have Apex.run set up, but that should be using my AWS CLI config file so I’m not sure if that is causing any problems. But then again I’ve no clue of anything deep on this subject, and I can’t find any ability to remove Apex itself in their docs.

In the package I am trying to deploy, I do not have a `profile:XXX` set in the `serverless.yml` file, because I’ve read if you do not then it just defaults to the `[default]` profile you have set in the aws creds file on your computer. Just to check, I go into the `serverless.yml` file and set the `profile: default`, and the error I now get when I run `npm run deploy` is

> Profile default does not exist

How is that possible when I have the “default” profile set in my creds file? So I remember that previously I ran the `serverless config creditionals` command and added the profile name of `serverless-agent` to it (yet didn’t save in the aws creds file as I mentioned above), so I add that profile name to the `serverless.yml` file just to see if this works, and same error of “Profile default does not exist”.

So back to the error message. The Role is an account not even related to the IAM user I’m using in my aws creds. Without knowing a lot about this, it’s as if the config in serverless via ssh isn’t correct or something. Is it using old creds I had set up in Apex.run? Why is the aws creds file not updated with the profile when I manually set it in `serverless config` command? I am using the same user account (but with new key and secret) that I used a few weeks ago when I correctly deployed and my Lambda and API was set up for me on AWS. Boy do I miss those time and wish I didn’t mess up my existing Lambda functions, without setting version number prior, forcing me to start all over.

I am so confused. Any help would be greatly appreciated.
