AWS CLI’yi Kurma
AWS CLI’yi Windows, Mac ve Linux üzerinde kurmayı adım adım inceleyeceğiz.
AWS CLI’nin iki ana sürümü vardır: sürüm 1 ve 2. Daha fazla işlevselliğe sahip olan daha yeni sürüm olduğundan yalnızca sürüm 2’yi ele alacağız. AWS CLI’nin en son sürümünü kurma veya güncelleme hakkında güncel bilgiler için AWS dokümantasyonunu ziyaret edin.
Windows’a kurulum
Yükleyiciyi resmi AWS web sitesinden indirin. “AWSCLIV2” Windows yükleme paketini açın; aşağıda gösterildiği gibi bir pencere ile karşılaşacaksınız.

AWS CLI kurulum sihirbazı.
“Next” seçeneğini tıklayın ve lisans sözleşmesini kabul ederek devam edin.

AWS CLI lisans sözleşmesi.
Kurulum konumunu onaylayın ve kuruluma devam edin. Kurulumun 5 dakikadan fazla sürmemesi gerekir.

Kurulum konumunu onaylayın.

Kurulum devam ediyor.

Kurulum tamamlandı.
Kurulumun başarılı olduğunu doğrulamak için terminali açın ve aws --version komutunu çalıştırın. Aşağıdaki çıktıya benzer bir sonuç görmelisiniz.

Windows üzerinde AWS CLI kurulumunu doğrulayın.
macOS’a kurulum
AWS CLI’yi MacOS üzerinde Homebrew veya paket yükleyicisi ile kurabiliriz. Her iki kurulum yöntemini de ele alacağım.
Paket kurulumu
.pkg yükleyicisini resmi AWS web sitesinden indirin. AWSCLIV2.pkg dosyasını açın; aşağıdaki pencere ile karşılaşacaksınız.

AWS CLI kurulumu.
Lisansı kabul edin, kurulum konumunu onaylayın ve kuruluma devam edin.

Başarılı kurulum mesajı.
Kurulumun başarılı olduğunu doğrulamak için terminali açın ve aws --version komutunu çalıştırın. Aşağıdaki çıktıya benzer bir sonuç görmelisiniz.

MacOS üzerinde AWS CLI kurulumunu doğrulayın.
Homebrew
Yerel olarak Homebrew’ün kurulu olduğundan emin olun. Doğrulamak için brew --version çalıştırın. Aksi halde kurulum talimatları için resmi Homebrew sayfasına bakabilirsiniz.
Ardından, CLI’yi kurmak için aşağıdaki komutları çalıştırın:
# With brew installed, update Homebrew's formulae and cask definitions
brew update
# Install AWS CLI
brew install awscli
# Verify the installation
aws --version

brew update ve install

brew kurulumunu doğrulayın.
Linux’a kurulum
Linux üzerinde kurulumu göstermek için ami-0bd55ebedabddc3c0 AMI’si ile bir Amazon Linux EC2 başlattım. Varsayılan olarak AWS CLI sürüm 2 yüklü gelse de en son küçük sürüm olmayabilir. Güncelleme ve kurulum adımları benzerdir.
# Switch to superuser
sudo su -
# If you’re on Amazon Linux, to install the latest version of the AWS CLI, you must first uninstall the pre-installed yum version
yum remove awscli
# Download the AWS CLI zip file
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# Unzip the file
unzip awscliv2.zip
# Run the installer
./aws/install
# Verify AWS CLI
aws --version

Yükleyiciyi indirin ve çıkarın.

Yükleyiciyi çalıştırın ve kurulumu doğrulayın.
AWS CLI’yi Yapılandırma
AWS CLI’yi kurduktan sonra, AWS kaynaklarımızla etkileşimde bulunmadan önce onu yapılandırmamız gerekir. Yapılandırma, AWS kimlik bilgilerinin ve bazı isteğe bağlı varsayılan ayarların belirlenmesini içerir.
AWS konsoluna giriş yaptığımızda ya bir kullanıcı olarak giriş yaparız ya da bir rol üstleniriz. Benzer şekilde, AWS kaynaklarımızla etkileşim kurmak için AWS CLI’yi kullandığımızda da bunu bir kullanıcı olarak yapmalı veya bir rol üstlenmeliyiz.
AWS kimlik bilgilerinin ayarlanması
AWS konsoluna girişin iki yolu vardır. İlki, Identity and Access Management (IAM) hizmeti aracılığıyla oluşturulmuş bir kullanıcıyı kullanmaktır.

IAM kullanıcı giriş sayfası.
İkincisi ise IAM Identity Center hizmeti aracılığıyla oluşturulan bir kullanıcı kullanmaktır.

AWS Access Portal giriş sayfası.
AWS CLI’yi ayarlamak, yerel sisteminizde aws_access_key_id ve aws_secret_access_key değerlerini yapılandırmayı gerektirir. Bu anahtar çifti hesabınızı tanımlar ve AWS’ye erişim sağlar. Hangi yöntemle giriş yaptığınıza bağlı olarak bunları edinme şekli biraz farklılık gösterir.
IAM kullanıcısı
AWS CLI’yi IAM’deki bir kullanıcı olarak kullanmak için AWS konsolu üzerinden IAM hizmetine gidin, mevcut bir kullanıcıyı seçin veya yeni bir kullanıcı oluşturun. Ben mevcut bir kullanıcıyı kullanacağım.

IAM kullanıcısı.
Kullanıcıyı seçin ve “Security Credentials” sekmesine gidin. “Access keys” bölümüne ulaşmak için aşağı kaydırın. Bu eğitim için başka bir erişim anahtarı oluşturacağım. “Create access key” seçeneğini seçin.

Bir IAM kullanıcısının güvenlik kimlik bilgileri sekmesi.
“Command Line Interface (CLI)”yi seçin.

Erişim anahtarı oluşturun.
Onaylayın ve oluşturun.

Erişim anahtarı oluşturuldu.
Güvenli saklama için .csv dosyasını indirin. Ardından yerelde aws configure komutunu çalıştırın ve erişim anahtarı ile gizli erişim anahtarı değerlerini girin. --profile bayrağıyla bir profil belirtmediğimiz için bu kimlik bilgilerini “default” profiline yazıyoruz. Profilleri bir sonraki bölümde ele alacağız.

AWS configure komutu.
Ev (~) dizininizde “.aws” adlı gizli bir klasör oluşturulacaktır.

.aws klasörü.
Bu klasör, config ve credentials olmak üzere iki dosya içerir.

.aws klasörünün içeriği.
config dosyası yukarıda girdiğiniz varsayılan bölge ve çıktı seçeneğini saklar. credentials dosyası ise aws_access_key_id ve aws_secret_access_key değerlerini saklar. İçeriklerini görüntülemek için cat config ve cat credentials komutlarını çalıştırabilirsiniz.
Kimlik bilgilerinin çalıştığını ve doğru IAM kimliğinin döndüğünü doğrulamak için aws sts get-caller-identity komutunu çalıştırın.

Kimlik bilgilerini doğrulayın.
IAM identity center kullanıcısı
Giriş yaptıktan sonra, konsola giriş yaparken üstleneceğiniz AWS hesabını ve rolünü seçmek için AWS Access Portal’a yönlendirileceksiniz. AWS CLI için kullanmak istediğiniz hesap ve rol için “Access keys” seçeneğini seçin.

AWS Access Portal.
Aşağıdaki ekran görüntüsüyle aynı bir pencere açılacaktır. Seçenek 2’yi seçin, sağlanan metni kopyalayıp AWS kimlik bilgileri dosyanıza yapıştırın.

AWS Access Portal’dan alınan kimlik bilgileri.
Dikkat ederseniz, aws_access_key_id ve aws_secret_access_key’e ek olarak bir de aws_session_token bulunur; önceki bölümde ele alınan IAM kullanıcısına ait kimlik bilgilerinden farklı olarak. Bu, IAM Identity Center aracılığıyla oluşturulan kullanıcının kimlik bilgilerine ek bir güvenlik katmanı ekler; oturum belirteci süresi dolacak ve kullanıcı belirteci yenilemek için yeniden kimlik doğrulaması yapmak zorunda kalacaktır.
Seçenek 2’den aldığınız metni AWS kimlik bilgileri dosyanıza yapıştırdıktan sonra:
# Use the AWS profile that you have just added
export AWS_PROFILE=<<Account Number>_<Role Name>>
# Valid that the credentials work
aws sts get-caller-identity

Kimlik bilgilerini doğrulayın.
Oturum belirteci sonunda süresi dolacak ve yeni bir tane üretmemiz gerekecek.
![]()
Süresi dolmuş belirteç.
Yukarıda yaptığımız gibi Access Portal’dan tekrar kopyalamak yerine, yerelinizden aws sso login komutunu çalıştırabiliriz. Yerelinizde Tek Oturum Açma (SSO) ayarlarını yapılandırmak için aşağıdaki komutları izleyin.
# Configure SSO to refresh your session token. The ~/.aws/sso folder will be created.
aws configure sso

AWS configure SSO komutu.
Oturum açmanız istenecektir.

AWS CLI erişimine izin verin.

AWS CLI isteği onaylandı.
Oturum belirtecinin süresi tekrar dolduğunda, sadece aws sso login komutunu çalıştırın.

AWS SSO giriş çıktısı.
Yapılandırma seçenekleri
Tercihlerimize uygun olacak şekilde bazı yapılandırmaları varsayılan seçenekler olarak özelleştirebiliriz. Açıkça belirtilmediği sürece bu varsayılan yapılandırmalar AWS CLI komutuna uygulanır.
config dosyasındaki yapılandırma değerlerini güncellemek veya eklemek için aşağıdaki komutu çalıştırabilir ya da vim veya nano ile manuel olarak düzenleyebilirsiniz.
aws configure set <setting> <value>
region
Bir bölgede bulunan AWS kaynakları, AWS CLI komutları yürütülürken region parametresinin belirtilmesini gerektirir.
Komutta “--region <region name>” bayrağı belirtilmemişse, config dosyasında belirtilen varsayılan bölge kullanılır. Eğer varsayılan bölge tanımlı değilse aşağıdaki hatayla karşılaşırsınız.

Bölge belirtilmediğinde hata.
output
output ayarı, AWS CLI komutunun döndürdüğü çıktı biçimini yapılandırır.
Örneğin, yukarıda varsayılan çıktı biçimini “JSON” olarak yapılandırdık ve aws sts get-caller-identity komutu çıktıyı JSON formatında döndürdü. Diğer geçerli seçenekler “table” ve “text”tir.
Tablo çıktısı aşağıdaki gibidir. Varsayılan “JSON” çıktı değerini geçersiz kılmak için --output table bayrağını ekledim.

aws sts get-caller-identity --output table.
role_arn & source_profile
IAM kullanıcınızı doğrudan kullanmak istemiyor ve bunun yerine bir rol üstlenmek istiyorsanız, role_arn ve source_profile yapılandırmalarını belirtin.
aws configure set role_arn arn:aws:iam::<Account ID>:role/<Role name>
# Put “default” as the profile name if you do not know what to put
aws configure set source_profile <profile name>
Bunları belirttikten sonra, IAM rolünün gerçekten üstlenildiğini doğrulayın.

Kimlik bilgilerini doğrulayın.
cli_pager
Varsayılan olarak AWS CLI, çıktısını less gibi bir sayfalayıcıdan geçirir ve çıkmak için q tuşuna basılması gerekir. Bu davranışı, sayfalayıcıyı devre dışı bırakarak çıktının doğrudan terminalde görüntülenmesini sağlayacak şekilde değiştirebiliriz:
aws configure set cli_pager ""

cli_pager devre dışıyken çıktı.
cli_history
Yürütülen AWS CLI komutlarının kaydını tutmak için cli_history’yi etkinleştirin:
aws configure set cli_history enabled
Geçmiş, ~/.aws/cli/history konumunda bulunan bir SQLite veritabanında tutulur.
# View your AWS CLI history
aws history list
# Show details of a specific command
aws history show <command-id>
Yapılandırma özeti
Standart yapılandırma seçeneklerinin özeti:
|
Yapılandırma Anahtarı |
Açıklama |
|
region |
Varsayılan AWS bölgesi (ör. us-east-1, ap-southeast-1). |
|
output |
Çıktı biçimi: json, text veya table. |
|
role_arn |
Üstlenilecek IAM rolünün ARN’i. |
|
source_profile |
Bir rol üstlenirken kaynak olarak kullanılacak profil. |
|
cli_pager |
Komut çıktı sayfalayıcısı (ör. less veya devre dışı bırakmak için ""). |
|
cli_history |
CLI geçmiş dosyasını etkinleştir veya devre dışı bırak (enabled veya disabled). |
|
cli_timestamp_format |
Zaman damgası biçimini özelleştirme (none, iso8601, iso8601_ms). |
Yukarıdaki örnekleri takip ettiyseniz, ~/.aws/config dosyanız aşağıdaki gibi görünmelidir.

config dosyasının içeriği.
AWS CLI Komutlarını Anlama
Tüm AWS CLI komutlarının standart bir biçimi vardır:

AWS CLI komutlarının formatı—Yazarın görseli.
Her hizmete özgü işlem, eklenecek isteğe bağlı veya zorunlu seçenekler/bayraklara sahip olacaktır.
Temel komutlar
AWS CLI’miz artık AWS hesabımıza programatik olarak erişerek hizmetlerle etkileşim kurabilir. Haydi, yaygın kullanılan bazı AWS hizmetlerinde temel komutları deneyelim!
EC2
|
Açıklama |
Komut |
|
Belirtilen örnekleri veya tüm örnekleri betimler. |
aws ec2 describe-instances [--instance-ids <value>] |
|
Belirtilen güvenlik gruplarını veya tüm güvenlik gruplarınızı betimler |
aws ec2 describe-security-groups [--group-ids <value>] |
|
Bir EBS biriminin anlık görüntüsünü oluşturur ve Amazon S3’te saklar |
aws ec2 create-snapshot --volume-id <value> |
|
Bir VPC oluşturur |
aws ec2 create-vpc [--cidr-block <value>] |

Tüm örnekleri betimleme çıktısı.
Daha fazla bilgi için EC2 için resmi dokümantasyona bakın.
S3
|
Açıklama |
Komut |
|
Tüm S3 bucket’larını listele |
aws s3 ls |
|
Bir S3 bucket’ındaki nesneleri listele |
aws s3 ls s3://<bucket-name> --recursive |
|
Yerel bir dosyayı veya S3 nesnesini yerelde veya S3’te başka bir konuma taşır |
aws s3 mv <LocalPath> <S3Uri> veya <S3Uri> <LocalPath> veya <S3Uri> <S3Uri> |
|
Bir S3 bucket’ındaki bir nesneyi siler |
aws s3 rm <S3Uri> |

S3 komutları.
Daha fazla bilgi için S3 için resmi dokümantasyona bakın.
AWS S3 hizmeti için, yukarıda ele alınan aws s3 CLI komutuna ek olarak aws s3api CLI komutu da olduğunu unutmayın. aws s3 komutları oldukça geneldir; aws s3api komutları ise daha ayrıntılı ve düşük seviyelidir.
Daha fazla bilgi için s3api için resmi dokümantasyona bakın.
Lambda
|
Açıklama |
Komut |
|
Tüm Lambda işlevlerini listelemek için |
aws lambda list-functions |
|
Bir Lambda işlevi hakkında bilgi almak için |
aws lambda get-function --function-name <function name> |
|
Bir Lambda işlevini çağırır |
aws lambda invoke --function-name <function name> |

İşlev hakkında bilgi döndürür.
Daha fazla bilgi için Lambda için resmi dokümantasyona bakın.
Örnek: EC2 yönetimi için AWS CLI kullanımı
EC2’nin temellerini tazelemek için AWS EC2 Yeni Başlayanlar Eğitimi blog yazısına göz atın! Aşağıdaki komutları daha iyi anlamanıza yardımcı olacaktır.
# To create an EC2 instance
aws ec2 run-instances \
--image-id ami-0bd55ebedabddc3c0 \
--count 1 \
--instance-type t2.micro

Bir örnek oluşturmaya ait çıktı.
aws ec2 describe-instances komutunu çalıştırarak temel komutlarda ele aldığımız üzere tüm EC2 örneklerinin ayrıntılarını görüntüleyin.
Komutu belirli bir örnek veya örnekleri sorgulayacak şekilde çalıştırmak isterseniz, örnek kimliği ile --instance-ids bayrağını ekleyin. Örn., aws ec2 describe-instances --instance-ids i-00836ea7575852f10.

Bir örneği betimlemeye ait çıktı.
# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

Bir örneği durdurmaya ait çıktı.
# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

Bir örneği başlatmaya ait çıktı.
# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10

Bir örneği sonlandırmaya ait çıktı.
Örnek: S3 bucket’larıyla çalışmak
İşte AWS’nin temellerinden biri olan S3 bucket’larıyla yaygın işlemleri gerçekleştirmek için kullanışlı bazı komutlar!
# To create an S3 bucket. “mb” is short for “make bucket”
aws s3 mb s3://<bucket name> --region <region name>
# To list out all buckets
aws s3 ls
# To copy an object from your local or S3 object to another location locally or in S3. In the screenshot below, I used aws s3 cp <LocalPath> <S3Uri>
aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To delete an object from the S3 bucket
aws s3 rm <S3Uri>
# To sync the source directory to the destination. In the screenshot below, I used aws s3 sync <LocalPath> <S3Uri>
aws s3 sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To list the objects in the bucket
aws s3 ls <S3Uri>
# To delete an S3 bucket, it has to be empty of objects and versioned objects before it can be deleted. “rb” is short for “remove bucket”
aws s3 rb s3://my-unique-bucket-name-gfht68
# The “aws s3 rb” command comes with the --force parameter to first remove all of the objects in the bucket and then remove the bucket itself.
aws s3 rb s3://mybucket --force

AWS S3 komut çıktıları.
Gelişmiş AWS CLI Özellikleri
Artık bazı temel CLI komutlarını pratiğe döktüğümüze göre, birkaç gelişmiş arayüz özelliğini ve kullanım senaryosunu gözden geçirebiliriz.
AWS CLI ile görevleri otomatikleştirme
Buraya kadar ele aldığımız AWS CLI örnekleri, bilgi almak veya hizmet üzerinde bir işlem yapmak için tek bir komutu içeriyor. Görevleri otomatikleştirmek için birkaç CLI komutunu bir betikte bir araya getirme örneklerine bakalım.
Örnek: Otomatik EC2 örneği başlatma betiği
launch_ec2.sh adlı bir dosya oluşturun ve aşağıdaki içeriği ekleyin.
#!/bin/bash
# Set variables
INSTANCE_NAME="My_Demo_Instance"
AMI_ID="ami-0bd55ebedabddc3c0" # Replace with your preferred AMI ID
INSTANCE_TYPE="t2.micro" # Replace with the desired instance type
REGION="ap-southeast-1"
# Launch the EC2 instance
INSTANCE_ID=$(aws ec2 run-instances \
--image-id "$AMI_ID" \
--instance-type "$INSTANCE_TYPE" \
--region "$REGION" \
--query "Instances[0].InstanceId" \
--output text)
echo "Instance launched with ID: $INSTANCE_ID"
# Add a Name tag to the instance
aws ec2 create-tags \
--resources "$INSTANCE_ID" \
--tags Key=Name,Value="$INSTANCE_NAME" \
--region "$REGION"
echo "Tag added: Name=$INSTANCE_NAME"
# Wait for the instance to reach a running state
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" --region "$REGION"
echo "Instance is now running."
Betiği, anahtar adı (--key-name), güvenlik grubu kimliği (--security-group-ids), alt ağ kimliği (--subnet-id) gibi daha fazla parametreyi içerecek şekilde özelleştirebilirsiniz.
# Grant the user permission to execute the shell script
chmod u+x ./launch_ec2.sh
# Run the script
./launch_ec2.sh

EC2 başlatma betiği.
Örnek: Çalışan tüm EC2 örneklerinin otomatik durdurulması
stop_ec2.sh adlı bir dosya oluşturun ve aşağıdaki içeriği ekleyin:
#!/bin/bash
# Check if a region is provided as an argument
if [ -n "$1" ]; then
REGION="$1"
else
# Get the default region from AWS CLI configuration
REGION=$(aws configure get region)
if [ -z "$REGION" ]; then
echo "No region provided, and no default region found in AWS CLI configuration."
echo "Please provide a region as an argument: ./stop-all-ec2.sh <region>"
exit 1
fi
fi
echo "Using region: $REGION"
# Get a list of all running EC2 instance IDs
RUNNING_INSTANCES=$(aws ec2 describe-instances \
--filters Name=instance-state-name,Values=running \
--query "Reservations[*].Instances[*].InstanceId" \
--output text \
--region "$REGION")
if [ -z "$RUNNING_INSTANCES" ]; then
echo "No running EC2 instances found in region $REGION."
else
echo "Stopping the following EC2 instances in region $REGION:"
echo "$RUNNING_INSTANCES"
echo "Give it around 1 minute for the instances to be stopped."
# Stop the instances
aws ec2 stop-instances --instance-ids $RUNNING_INSTANCES --region "$REGION"
# Wait for the instances to stop
aws ec2 wait instance-stopped --instance-ids $RUNNING_INSTANCES --region "$REGION"
echo "All instances have been stopped successfully."
fi
# Grant the user permission to execute the shell script
chmod u+x ./stop_all_ec2.sh
# Run the script with the default region
./stop_all_ec2.sh
# Run the script overwriting the default region
./stop_all_ec2.sh us-west-1

EC2 durdurma betiği.
AWS CLI’yi JSON ve JQ ile kullanma
AWS CLI komut çıktıları oldukça fazla bilgi içerir. Bazı durumlarda döndürülen tüm bilgilere ihtiyaç duymayabilir, yalnızca çıktının bir alt kümesini isteyebiliriz.
Örneğin, yukarıdaki “Temel komutlar”ın “EC2” bölümünde, aws ec2 describe-instances komutunun uzun bir JSON çıktısı döndürdüğünü gördük. Bu çıktıyı ayrıştırmak ve yalnızca ihtiyaç duyulanı almak için --query bayrağını veya jq komutunu kullanabiliriz.
--query bayrağına ilişkin örnekler için yukarıdaki “AWS CLI ile görevleri otomatikleştirme” bölümündeki otomasyon betiklerine bakın.
jq komutunun yalnızca JSON çıktı üzerinde çalıştığını unutmayın. Bu nedenle varsayılan çıktıyı “JSON” olarak yapılandırın veya her komut için --output json bayrağını geçin.
jq’nun kurulu olduğunu doğrulayın:

jq sürümünü kontrol edin.
# Get a list of all EC2 instances and filter only the instance ID and state
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId: .InstanceId, State: .State.Name}'
# Count the number of EC2 instances in the "running" state.
aws ec2 describe-instances --output json | jq '[.Reservations[].Instances[] | select(.State.Name == "running")] | length'
# Extract Lambda Function Names and their runtimes
aws lambda list-functions --output json | jq '.Functions[] | {FunctionName: .FunctionName, Runtime: .Runtime}'

jq ile AWS CLI komutları.
AWS CLI’yi bir CI/CD hattında kullanma
AWS CLI’yi, CI/CD hattımız her çalıştığında AWS kaynaklarımızı dağıtmak ve güncellemek gibi AWS hizmetleriyle etkileşimleri otomatikleştirmek için hat yapılandırmamızda kullanabiliriz.
Aşağıdaki örnekte bir Lambda işlevi dağıtımını göstermek için GitLab hattını kullanacağım.
# .gitlab-ci.yml file configuration
stages:
- demo-cicd
datacamp_job:
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
stage: demo-cicd
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.com
variables:
ROLE_ARN: "arn:aws:iam::<AWS Account ID>:role/<Name of IAM Role that pipeline will use>"
AWS_DEFAULT_REGION: "ap-southeast-1"
script:
- aws --version
- >
export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
$(aws sts assume-role-with-web-identity
--role-arn ${ROLE_ARN}
--role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}"
--web-identity-token ${GITLAB_OIDC_TOKEN}
--duration-seconds 3600
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
--output text))
- aws sts get-caller-identity
- ls -l
- aws lambda create-function --function-name <function name> --runtime python3.13 --role <ARN of IAM role that Lambda function will use> --handler index.lambda_handler --zip-file fileb://lambda.zip
- unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

GitLab hat iş günlükleri.
Yukarıdaki ekran görüntüsünde yaptığım gibi sabitlemek yerine, hat yapılandırmasını değiştirerek parametreleri hattaki değişkenler olarak AWS CLI komutuna iletebilirsiniz.
Böylece, bir Lambda işlevi oluşturmak istediğinizde, değişkenleri hat yapılandırmanızla birlikte Git deposuna girip gönderebilirsiniz.
AWS CLI Kullanımı için En İyi Uygulamalar
Tüm en iyi uygulamalarda olduğu gibi, ister kullanıcı ister rol kullanın, görevi gerçekleştirmek için gereken en az ayrıcalığı verin.
AWS CLI’ye özgü diğer en iyi uygulamaları inceleyelim!
Güvenlik için AWS IAM rolleri kullanma
AWS IAM rolleri, AWS kaynaklarına erişim için geçici güvenlik kimlik bilgileri sağlar. Bu kimlik bilgileri otomatik olarak döndürülür ve belirli bir rolün izinleriyle sınırlıdır; bu da uzun vadeli erişim anahtarlarıyla ilişkili riskleri azaltır.
Bir rolü kullanmanın önerilen yolu, yukarıda “AWS kimlik bilgilerinin ayarlanması” altındaki “IAM Identity Center” bölümünde gösterildiği gibi IAM Identity Center üzerinden oluşturulan roldür. Bu, AWS’nin de önerdiği yaklaşımdır.

AWS tarafından önerilen yaklaşım. Görsel kaynağı: AWS.
Bulut yöneticisi, IAM Identity Center üzerinden kullanıcınızı oluşturduğunda bir izin seti atamalıdır.

IAM Identity Center’daki kullanıcılar.
Her izin seti için AWS bir IAM rolü oluşturacaktır.

IAM Identity Center’daki izin setleri.
Birden çok profili yönetme
İş ortamınızda muhtemelen birden fazla AWS hesabını yöneteceksiniz. ~/.aws/credentials ve ~/.aws/config dosyalarında birden çok kimlik bilgisi kümesini yapılandırmak için profilleri kullanırız.
Yukarıdaki “AWS kimlik bilgilerinin ayarlanması” bölümünde, --profile bayrağı veya AWS_PROFILE ortam değişkeni ile profil belirtmeden aws configure komutunu çalıştırdık. Bu nedenle kimlik bilgileri ve yapılandırma bilgileri varsayılan profile eklendi. Yeni bir profil eklemek için aws configure --profile <profile name> komutunu çalıştırarak yeni profil altında ayrı bir kimlik bilgisi kümesine sahip olabilirsiniz.
# Create a new profile called “dev”
aws configure --profile dev
# To run AWS CLI commands using the dev profile instead of the default profile, set the AWS_PROFILE environment variable to “dev”. Alternatively, add the “--profile dev” for every AWS CLI command.
export AWS_PROFILE=dev
# Validate that the IAM identity under the new profile is returned
aws sts get-caller-identity

Yeni bir profil altında yeni kimlik bilgileri.
AWS CLI’yi güncel tutun
AWS CLI’yi güncellemek, AWS hizmetlerimizle etkili bir şekilde etkileşim kurmak ve en son özelliklerden ve iyileştirmelerden yararlanmak için önemlidir.
Windows ve Mac için yükleyici paketini kullanarak AWS CLI’yi kurduysanız, yerel bilgisayarınıza bir dosya indirip çalıştırmıştınız. Güncelleme de aynı adımlarla olacaktır: En son yükleyici paketini indirin ve çalıştırın.
Mac’te AWS CLI’yi brew ile kurduysanız, güncelleme brew upgrade awscli çalıştırmak kadar basittir. Burada zaten en son sürüm kurulu.

brew upgrade awscli komut çıktısı.
Linux için adımlar kurulumla aynıdır. “Linux’a kurulum” bölümündeki kod parçacığına bakın. Zip dosyasını indirmek, çıkarmak ve yükleyiciyi çalıştırmak için komutları izleyin.
Günlükleme ve Sorun Giderme
AWS CLI harika bir araçtır, ancak onunla çalışırken zorluklarla da karşılaşabiliriz. Bunların nasıl aşılacağını gözden geçirelim.
CLI geçmiş günlüğü
Bazen daha önce çalıştırdığımız bir komutu ve parametrelerini unutabiliriz ya da çalıştırılan bir komutun çıktısını görmek isteyebiliriz. cli_history’yi etkinleştirmek bu ihtiyaçları karşılayabilir. Daha fazla bilgi için yukarıdaki “Yapılandırma seçenekleri” bölümüne bakın.
CLI yapılandırma hataları
AWS CLI yapılandırma hatalarıyla karşılaştığınızda, aws configure komutunu çalıştırmak CLI’nin kimlik bilgileri ve config dosyanızdaki bilgileri doğru okuyup okumadığını belirlemenize yardımcı olur.

“Unable to parse config file” hatası.
# View configuration for the existing profile
aws configure list
# Verify credentials
aws sts get-caller-identity
# Verify configuration values
aws configure get region
aws configure get role_arn
# Review Environment Variables. Variables like AWS_PROFILE, AWS_ACCESS_KEY_ID, and AWS_REGION can override configuration
env | grep AWS
Diğer hatalar
Nadir durumlarda, AWS CLI komutlarını yürütürken bilinmeyen bir hatayla karşılaşabiliriz. API çağrısıyla ilgili sorunu ayıklamak veya hatayı anlamak için daha fazla bilgi toplamak amacıyla komuta --debug bayrağını eklemek yardımcı olabilir.
# Add the “--debug” flag
aws ec2 describe-instances --debug

Hata ayıklama bayrağı ile AWS CLI komutu.
Ek bilgiler, sorunu anlamanıza ve gidermenize yardımcı olacaktır.
Sonuç
AWS CLI, AWS hizmetleriyle verimli şekilde etkileşime geçmenizi, rutin görevleri otomatikleştirmenizi ve bulut kaynaklarını kolayca yönetmenizi sağlayan güçlü bir araçtır. Bu eğitimde, AWS CLI’yi çeşitli yaygın AWS hizmetlerinde temel işlemleri gerçekleştirmek üzere nasıl kuracağınızı, yapılandıracağınızı ve kullanacağınızı öğrettim.
İster buluta yeni başlayan olun ister deneyimli bir DevOps profesyoneli, AWS CLI’yi ustalıkla kullanmak üretkenliği önemli ölçüde artırabilir. Kaynakları oluşturmaktan ve yönetmekten dağıtımları otomatikleştirmeye kadar, AWS CLI araç setinizdeyken olanaklar neredeyse sınırsızdır.
Komutlarla denemeler yapmaya, hattınızda gelişmiş betik yazma yeteneklerini keşfetmeye ve AWS CLI’yi günlük işlerinize entegre etmeye zaman ayırın. Mutlu bulut bilişimler!
AWS konusunda uzmanlaşmak için DataCamp’teki AWS Cloud Practitioner beceri yoluna göz atmanızı öneririm.
SSS
AWS Management Console yerine neden AWS CLI kullanmalıyım?
AWS CLI, AWS hizmetleriyle doğrudan terminalinizden etkileşim kurmanızı sağlar; böylece AWS Console ile kolayca elde edilemeyen otomasyon yetenekleri ve daha hızlı iş akışları sunar.
AWS’den yükleyici paketini indirdikten sonra dosyanın sağlama toplamını doğrulamam gerekir mi?
Zorunlu olmasa da yükleyici paketinin sağlama toplamını doğrulamak iyi bir uygulamadır.
Yerelimde AWS CLI’nin zaten kurulu olup olmadığını nasıl kontrol edebilirim?
Terminalinizi açın ve “aws --version” komutunu çalıştırın. Eğer “aws-cli/x.x.x…” dönerse, AWS CLI kuruludur. Yine de en son sürüme yükseltmek en iyi uygulamadır.
AWS CLI kullanırken kimlik doğrulama veya izin hatalarıyla karşılaşırsam ne yapmalıyım?
Bu hatalar, yanlış kimlik bilgileri veya yetersiz izinler nedeniyle oluşur. AWS erişim anahtarlarınızı tekrar kontrol edin, doğru IAM kullanıcı veya rolüyle ilişkili olduklarından emin olun ve IAM ilkelerinizin gerekli eylemlere izin verdiğini doğrulayın. Bir rol kullanıyorsanız ve oturum belirtecinin süresi dolduysa, “aws sso login” komutunu çalıştırın. Ayrıntılı adımlar için “IAM Identity Center Kullanıcısı” bölümüne bakın.
AWS CLI’yi birden fazla bölgedeki kaynakları yönetmek için nasıl kullanabilirim?
Komutlarınızda “--region” bayrağını kullanarak AWS bölgesini belirtebilir veya “aws configure” komutunu kullanarak varsayılan bir bölge ayarlayabilirsiniz. Daha fazla bilgi için “Yapılandırma seçenekleri” bölümüne bakın.

Terraform, GitLab CI/CD ardışık düzenleri ve geniş bir AWS hizmet yelpazesinde uzmanlığa sahip deneyimli bir Bulut Altyapısı ve DevOps Mühendisi olan Kenny, ölçeklenebilir, güvenli ve maliyet açısından optimize edilmiş bulut çözümleri tasarlamakta uzmandır. Yeniden kullanılabilir altyapılar inşa etmede, Python ve Bash ile iş akışlarını otomatikleştirmede ve CI/CD ardışık düzenlerine güvenlikle ilgili en iyi uygulamaları yerleştirmede başarılıdır. Kubernetes ve çeşitli gözlemlenebilirlik araçları konusunda kapsamlı saha deneyimiyle, Kenny mikro hizmetleri yönetme ve orkestre etme konusunda yetkindir; aynı zamanda güçlü gözlemlenebilirlik ve performans izlemesini güvence altına alır. Liderliği, mentorluk yaklaşımı ve yeniliğe bağlılığıyla tanınan Kenny, modern bulut-yerel uygulamalar için güvenilir ve ölçeklenebilir çözümler sunmayı sürekli başarır. Sektör trendlerinin ve ortaya çıkan teknolojilerin ön saflarında yer alma kararlılığını sürdürerek yetkinliklerini sürekli genişletip derinleştirir.

AWS, dünya genelindeki veri merkezlerinden hesaplama gücü, depolama, veritabanları, makine öğrenimi, ağ iletişimi, analitik ve daha fazlasını içeren geniş bir yelpazede ölçeklenebilir ve talep üzerine hizmetler sunan bir bulut servis sağlayıcısıdır. Daha fazlasını öğrenmek için Introduction to AWS ve AWS Cloud Technology and Services kurslarına göz atın!
AWS üzerindeki kaynaklarla etkileşim kurmak ve onları yapılandırmak için AWS Management Console’u veya AWS CLI’yi kullanabiliriz.
Bu eğitimde, AWS CLI’yi sıfırdan kurmanıza, AWS hesabınızla iletişim kuracak şekilde yapılandırmanıza ve CLI kullanarak bazı temel kaynakları nasıl oluşturacağınıza adım adım rehberlik edeceğiz.
AWS CLI Nedir?
AWS CLI, kullanıcıların bilgisayarlarındaki komut satırından AWS hizmetleriyle doğrudan etkileşim kurmasını sağlayan güçlü bir araçtır. AWS CLI komutları, AWS Management Console’da yapılan işlemlere eşdeğer işlevsellik sunar.
Örneğin, belirli bir AWS bölgesindeki tüm güvenlik gruplarını listelemek için konsol üzerinden EC2 hizmetindeki "Security Groups" bölümüne gidersiniz.
Güvenlik Gruplarını AWS konsolundan görüntüleyin.
Benzer şekilde, AWS CLI’de
aws ec2 describe-security-groupskomutunu kullanarak da aynı sonuca ulaşabilirsiniz.Güvenlik Gruplarını yerel terminal üzerinden AWS CLI ile görüntüleyin.