AWS Prerequisites #
- 
Create a S3 bucket, in this tutorial it’s named jkw-gitlab
- 
Create an IAM user 
- 
Create Access keys for the user 
# Access key
AKIAIOSFODNN7EXAMPLE
# Secret access key
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
- Create IAM Policy and attach it to the IAM user
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::jkw-gitlab/*", # Define S3 bucket name
                "arn:aws:s3:::jkw-gitlab" # Define S3 bucket name
            ]
        }
    ]
}
GitLab #
GitLab Project #
Create a folder s3-data for the files that should be pushed into the S3 bucket.
# Repository folder structure
deploy-into_s3
├── .gitlab-ci.yml
└── s3-data
    ├── File1.txt
    └── File2.txt
 
GitLab Variables #
Add the Access keys of your IAM user as variables to the GitLab project.
- 
Go to: Settings>CI/CD
- 
Expand the Variablessection and add the IAM credentials:
# Variable 1
AWS_ACCESS_KEY_ID
# Variable 1 Value
AKIAIOSFODNN7EXAMPLE
# Variable 2
AWS_SECRET_ACCESS_KEY
# Variable 2 Value
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
 
GitLab CI Pipeline #
Add the GitLab CI pipeline to the repository:
# .gitlab-ci.yml
stages:
  - deploy
deploy-into_s3:
  stage: deploy
  image: python:latest
  script:
    - pip install awscli
    - aws s3 cp ./s3-data s3://jkw-gitlab/ --recursive
  only:
    - main
The pipeline job will start automatically and every time new data is pushed to the GitLab repository.
Wait till pipeline completes #
- Go to Build>Jobsand click on the job for the logs.
# Job logs
...
$ aws s3 cp ./s3-data s3://jkw-gitlab/ --recursive
upload: s3-data/File1.txt to s3://jkw-gitlab/File1.txt           
upload: s3-data/File2.txt to s3://jkw-gitlab/File2.txt            
Cleaning up project directory and file based variables 00:00
Job succeeded
- Refresh the browser till the status jumps to Passed
 
AWS S3 Bucket #
The files from the GitLab folder s3-data should now be available in the S3 bucket:
 
Git PowerShell Commands #
Install Git with Winget #
- Open PowerShell as Administrator
# Install Git
winget install Git.Git
- Close and open a new PowerShell
# Check Git version
git --version
Prerequisites #
Set the username and email address that will be associated with any commits you create across all Git repositories on your computer.
# Define your name
git config --global user.name "Your Name"
# Define youremail
git config --global user.email "you@example.com"
Repository #
- Clone the repository
# Clone the repository
git clone git@gitlab.com:jueklug/deploy-into_s3.git
# CD into the repository
cd .\deploy-into_s3\
# Create main branch & switch into main branch
git switch --create main
- Commit the “s3-data” folder
# Stages the "s3-data" folder and its contents for the next commit
git add .\s3-data\
# Commit the changes
git commit -m "Added folder"
# Push the commit to the main branch of the remote repository on GitLab
git push origin main
- Commit the CI pipeline
# Stages the "s3-data" folder and its contents for the next commit
git add .\.gitlab-ci.yml
# Commit the changes
git commit -m "Added CI pipeline"
# Push the commit to the main branch of the remote repository on GitLab
git push origin main
- Other Commands
# Stage all new and modified files in current folder
git add .