Ana içeriğe geç

AWS CLI Nasıl Kullanılır: Kurulum, Yapılandırma ve Komutlar

Sisteminizde AWS CLI’yi kurmayı, AWS hesabınızla çalışacak şekilde yapılandırmayı ve çeşitli AWS hizmetleriyle etkileşim için komutlar yürütmeyi öğrenin!
· 15 dk. oku

Yapay Zeka ile Keşfedin

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

Güvenlik Gruplarını AWS konsolundan görüntüleyin.

Benzer şekilde, AWS CLI’de aws ec2 describe-security-groups komutunu kullanarak da aynı sonuca ulaşabilirsiniz.

Güvenlik gruplarını betimlemek ve bilgilerini almak için AWS CLI komutu

Güvenlik Gruplarını yerel terminal üzerinden AWS CLI ile görüntüleyin.

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ı

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

AWS CLI lisans sözleşmesi.

Kurulum konumunu onaylayın ve kuruluma devam edin. Kurulumun 5 dakikadan fazla sürmemesi gerekir.

AWS CLI için kurulum konumunu onaylayın

Kurulum konumunu onaylayın.

AWS CLI kurulumu devam ediyor

Kurulum devam ediyor.

AWS CLI kurulumu tamamlandı

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

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.

MacOS üzerinde AWS CLI paket kurulumu

AWS CLI kurulumu.

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

AWS CLI başarılı kurulum mesajı

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

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 komutlarının terminal ekran görüntüsü

brew update ve install

brew ile AWS CLI kurulumunu doğrulayın

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

Linux üzerinde yükleyiciyi indirin ve çıkarın

Yükleyiciyi indirin ve çıkarın.

Linux üzerinde yükleyiciyi çalıştırın ve kurulumu doğrulayı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şi için kullanıcı arayüzü

IAM kullanıcı giriş sayfası.

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

IAM Identity Center kullanıcı girişi için kullanıcı arayüzü

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 hizmetindeki kullanıcılar

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

Bir IAM kullanıcısının güvenlik kimlik bilgileri sekmesi.

“Command Line Interface (CLI)”yi seçin. 

Bir IAM kullanıcısı için erişim anahtarı oluşturma

Erişim anahtarı oluşturun.

Onaylayın ve oluşturun.

Oluşturulan erişim anahtarı

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" CLI komutu

AWS configure komutu.

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

Ev dizinindeki ".aws" klasörü

.aws klasörü.

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

.aws klasörünün içeriği

.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ğrulamak için AWS CLI komutu

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

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 üzerinden bir kullanıcı için kimlik bilgilerini alı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

AWS Access Portal’dan alınan geçerli kimlik bilgileri

Kimlik bilgilerini doğrulayın.

Oturum belirteci sonunda süresi dolacak ve yeni bir tane üretmemiz gerekecek. 

Süresi dolmuş belirteç nedeniyle hata mesajı

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" komutunun çıktısı

AWS configure SSO komutu.

Oturum açmanız istenecektir.

AWS CLI tarafından erişime izin verin

AWS CLI erişimine izin verin.

AWS CLI’ye izin verildi

AWS CLI isteği onaylandı.

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

"aws sso login" komutunun çıktısı

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.

Varsayılan bölge belirtilmediğinde hata mesajı

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.

Tablo çıktı biçimi

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.

Bir rol üstlenen IAM kullanıcısı için kimlik bilgilerini 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_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.

~/.aws/config dosyasının içeriği

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:

Bir AWS CLI komutunun görsel dökümü

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 betimleyen AWS CLI komutu çıktısı

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>

"aws s3" komutlarına örnekler

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>

Bir Lambda işlevinin bilgisini alan AWS CLI komutu çıktısı

İş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 AWS CLI çıktısı

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 AWS CLI çıktısı

Bir örneği betimlemeye ait çıktı.

# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

Bir örneği durdurmaya ait AWS CLI çıktısı

Bir örneği durdurmaya ait çıktı.

# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

Bir örneği başlatmaya ait AWS CLI çıktısı

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 AWS CLI çıktısı

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" komutlarına örnek

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

launch_ec2.sh betiğini çalıştırın

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

stop_all_ec2.sh betiğini çalıştırın

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:

Kurulu jq sürümünü alı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ına örnek

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

AWS CLI komutunun kullanıldığı Gitlab hattı iş günlükleri

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.

Programatik erişim için önerilen yaklaşıma ilişkin AWS ekran görüntüsü

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

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

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

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

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.

AWS CLI yapılandırma hatası

“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

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.

Kenny Ang

Yazar

Kenny Ang

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.

Konular

İlgili