jayaprakash R
jayaprakash R

Reputation: 192

How can i configure my aws credentials in shared credentials file for github action

I am trying to deploy the ci/cd pipeline for ECR in AWS.

It will push/pull the image from ECR

We are trying to migrate the azure pipeline to GitHub actions pipeline

When I try to implement the pipeline I am facing the below error,

[05:25:00] CredentialsProviderError: Profile Pinz could not be found or parsed in shared credentials file.
    at resolveProfileData (/home/runner/work/test-api/test-api/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveProfileData.js:26:11)
    at /home/runner/work/test-api/test-api/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/fromIni.js:8:56
    at async loadFromProfile (/home/runner/work/test-api/test-api/node_modules/@pinzgolf/pinz-build/dist/publish/aws/GetCredentialsFromProfile.js:23:25)
    at async BuildDeployContext (/home/runner/work/test-api/test-api/node_modules/@pinzgolf/pinz-build/dist/publish/DeployContext.js:95:70)
    at async Publish (/home/runner/work/test-api/test-api/node_modules/@pinzgolf/pinz-build/dist/publish/Publish.js:14:21)
Error: Process completed with exit code 1.

Here is my workflow YAML file,

on:
  push:
    branches: [ main ]

name: Node Project `my-app` CI on ECRjobs
jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v2
    - name: Use Node 14.17.X
      uses: actions/setup-node@v2
      with:
        node-version: 14.17.X     
    
    - name: 'Yarn'
      uses: borales/[email protected]
      with:
        cmd: install --frozen-lockfile --non-interactive
    
    - name: Update SAM version
      uses: aws-actions/setup-sam@v1
    - run: |
        wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip
        unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
        sudo ./sam-installation/install --update
        sam --version

    - name: Configure AWS credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-2

    - name: Login to Amazon ECR
      id: login-ecr
      uses: aws-actions/amazon-ecr-login@v1

    - name: Build, tag, and push the image to Amazon ECR
      env:
        ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
        ECR_REPOSITORY: test-pinz-api
        IMAGE_TAG: latest
      run: |
        gulp publish --profile-name development

Using gulp we publish the environment using below config file,

{
    "apiDomainName": "domain",
    "assetsDomainName": "domain",
    "awsProfile": "Pinz",
    "bastionBucket": "bucketname",
    "corsDomains": ["domain"],
    "dbBackupSources": ["db source", "db source"],
    "dbClusterIdentifier": "cluster identfier",
    "designDomainName": "domain",
    "lambdaEcr": "ecr",
    "snsApplication": "sns",
    "snsServerKeySecretName": "name",
    "stackName": "name",
    "templateBucket": "bucketname",
    "userJwtPublicKey": "token",
    "websiteUrl": "domain",
    "wwwDomainName": "domain",
    "wwwEcr": "ecr repo"
}

I couldn't find the shared credential file where the AWS credentials are saved.

I don't have any idea where the below profile configured

"awsProfile": "Pinz"

I analyzed all project files but couldn't get the shared credentials

I analyzed this in many documents and ended up with some nearer answers but couldn't get the exact answer. below it says ~/.aws/credentials. but how does above JSON file get the credentials from there?

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html

Honestly, this ECR pipeline deployment is my first time. Also, I didn't get proper KT about the process as well. I think am almost done on this but for gulp it shows this error

Can anyone please guide me to where will be this shared credentials file? If not how can I configure the AWS credentials to authenticate with AWS?

Upvotes: 1

Views: 4129

Answers (1)

Ermiya Eskandary
Ermiya Eskandary

Reputation: 23602

Your gulp file has the profile set to Pinz, remove this line completely.

{
    ...
    "awsProfile": "Pinz",
    ...
}

The action will automatically pick up on your access key ID & secret access key, proceeding to then exporting them as environment variables that the AWS SDK can use.

The rest of the pipeline should pick up on the configured credentials automatically.

Upvotes: 1

Related Questions