0Pricing
AWS Solutions Architect · Ders

ECS Kümeleri, Görev Tanımları ve Hizmetler

Konteyner imajları ve kaynak sınırlarıyla ECS görev tanımlarını tanımlayın, bunları bir kümeye kaydedin ve istenen sayıyı koruyacak bir hizmet oluşturun.

ECS Kümeleri, Görev Tanımları ve Hizmetler, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.

AWS'de Neden Kapsayıcılar Kullanılır

Kapsayıcılar, bir uygulamayı ve tüm bağımlılıklarını farklı ortamlarda tutarlı şekilde çalışan taşınabilir ve yalıtılmış bir birimde paketler. Amazon ECS (Elastic Container Service), bir denetim düzlemini sizin yönetmenize gerek kalmadan Docker kapsayıcılarını çalıştıran, AWS'nin tam olarak yönetilen kapsayıcı düzenleme hizmetidir. ECS, AWS hizmetleriyle (IAM, ALB, CloudWatch, Secrets Manager) derinlemesine tümleşir ve Kubernetes karmaşıklığı olmadan AWS'de kapsayıcı çalıştırmanın önerilen yoludur.

ECS Kümeleri: Gruplama Birimi

Bir ECS Kümesi, kapsayıcılarınızın çalıştığı işlem kaynaklarının mantıksal grubudur. Bir kümede EC2 bulut sunucuları (EC2 başlatma türü), Fargate kapasitesi (Fargate başlatma türü) veya her ikisi bulunabilir. Tek bir kümede birden çok hizmet ve bağımsız görev bulundurabilirsiniz. Kümeler bölgeseldir ancak Kullanılabilirlik Alanlarına yayılır. Yaygın bir yaklaşım, farklı mikro hizmetler için her kümede birden çok hizmet olacak şekilde ortam başına (geliştirme/test/üretim) bir küme kullanmaktır.

aws ecs create-cluster \
  --cluster-name 'MyAppCluster' \
  --capacity-providers FARGATE FARGATE_SPOT \
  --default-capacity-provider-strategy \
    capacityProvider=FARGATE,weight=1,base=1

Görev Tanımları: Taslak

Bir Görev Tanımı, ECS'de kapsayıcıları çalıştırmak için kullanılan taslaktır—Docker Compose dosyasına benzer. Şunları belirtir: kapsayıcı görüntüleri (ECR URI'leri veya Docker Hub), CPU ve bellek tahsisleri, port eşlemeleri, ortam değişkenleri, günlük yapılandırması, birimler ve IAM görev rolü. Görev tanımı sürümlendirilir; her revizyon değiştirilemez. Yan görev kalıpları (ana uygulama + günlük gönderici + izleme aracısı) için görev başına birden çok kapsayıcı tanımlayabilirsiniz.

{
  'family': 'myapp-task',
  'networkMode': 'awsvpc',
  'requiresCompatibilities': ['FARGATE'],
  'cpu': '512',
  'memory': '1024',
  'executionRoleArn': 'arn:aws:iam::123456789012:role/ecsTaskExecutionRole',
  'taskRoleArn': 'arn:aws:iam::123456789012:role/myAppTaskRole',
  'containerDefinitions': [{
    'name': 'myapp',
    'image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest',
    'portMappings': [{'containerPort': 8080}]
  }]
}

Görev Rolü ile Yürütme Rolü Arasındaki Fark

ECS görevleri, farklı amaçlara sahip iki ayrı IAM rolü kullanır. Görev Yürütme Rolü, ECS aracısı tarafından görev başlatılırken kapsayıcı görüntülerini ECR'den çekmek, günlükleri CloudWatch'a göndermek ve Secrets Manager veya Parameter Store'dan gizli bilgileri almak için kullanılır. Görev Rolü, kapsayıcı içinde çalışan uygulama kodunun AWS hizmetlerini (S3, DynamoDB, SQS) çağırması için kullanılır. Her role ayrı ayrı her zaman en az ayrıcalık ilkesine uygun izinler atayın—yürütme rolüne uygulamanın ihtiyaç duymadığı izinleri kesinlikle vermeyin.

Uzun Süre Çalışan İş Yükleri için ECS Hizmetleri

Bir ECS Hizmeti, aynı anda çalışan görev örneklerinin belirtilen sayısını (istenen sayı) korur. Bir görev başarısız olur veya durursa hizmet zamanlayıcısı otomatik olarak yerine yenisini başlatır. Hizmetler ayrıca trafik dağıtımı için Elastic Load Balancing ile tümleşir ve aşamalı dağıtımları ve mavi/yeşil dağıtımları destekler. Uzun süre çalışan tüm işlemler (web sunucusu, API sunucusu, arka plan çalışanı) için hizmet kullanın. Tek seferlik işler için bunun yerine bağımsız bir görev çalıştırın.

aws ecs create-service \
  --cluster 'MyAppCluster' \
  --service-name 'MyAppService' \
  --task-definition 'myapp-task:5' \
  --desired-count 3 \
  --launch-type FARGATE \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-aaa111", "subnet-bbb222"],
      "securityGroups": ["sg-xyz"],
      "assignPublicIp": "DISABLED"
    }
  }'

Ağ Modları: awsvpc ve bridge

awsvpc ağ modu, her ECS görevine VPC'niz içinde tıpkı bir EC2 bulut sunucusunda olduğu gibi kendi Elastic Network Interface (ENI) ve özel IP adresini verir. Bu, görev başına ayrıntılı güvenlik grubu denetimi sağlar ve Fargate görevleri için gereklidir. bridge ağ modu, ana bilgisayarda Docker'ın yerleşik sanal ağını kullanır ve ana bilgisayardan kapsayıcıya port eşlemesi yapar—ana bilgisayar EC2 bulut sunucusunun ENI'sini paylaşır. SAA-C03 sınavı için Fargate her zaman awsvpc kullanır; EC2 başlatma türü ise ikisinden birini kullanabilir.

ECS Hizmetine Yük Dengeleyici Ekleme

Trafiği görev örnekleri arasında dağıtmak için ECS hizmetinizi bir ALB hedef grubuna kaydedin. Yeni bir görev başladığında ECS onu otomatik olarak hedef grubuna kaydeder; durduğunda ise kaydını siler. Kapsayıcılara başlamaları için zaman tanımak amacıyla bir durum denetimi bekleme süresi (ör. 60-120 saniye) yapılandırın. Bekleme süresi olmazsa ALB, yavaş başlayan bir kapsayıcıyı hazır olmadan önce sağlıksız olarak işaretleyebilir ve bu da sürekli değiştirme döngülerine yol açabilir.

aws ecs create-service \
  --cluster 'MyAppCluster' \
  --service-name 'MyAppService' \
  --load-balancers \
    'targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=myapp,containerPort=8080' \
  --health-check-grace-period-seconds 120 \
  --task-definition 'myapp-task:5' \
  --desired-count 3

Aşamalı Dağıtım ve Mavi/Yeşil Dağıtım

ECS hizmetleri iki dağıtım stratejisini destekler: Aşamalı Güncelleme, eski görevleri yenileriyle yavaş yavaş değiştirir—minimumHealthyPercent (alt sınır) ve maximumPercent (üst sınır) ile yapılandırılabilir. 100/200 ayarı, yenileri başlatılırken eski görevlerin çalışması anlamına gelir (%100 sağlıklı olma zorunluluğu ve en fazla %200 kapasite). Mavi/yeşil dağıtım (AWS CodeDeploy aracılığıyla), eskisinin yanında yeni bir görev kümesi oluşturur, ALB ağırlıklı yönlendirmesini kullanarak trafiği kademeli biçimde aktarır ve doğrulama sonrasında eski görevleri sonlandırır. Mavi/yeşil dağıtım, sıfır kesintiyle geri alma olanağı sunar.

ECS'den CloudWatch Günlük Kaydı

Kapsayıcı stdout/stderr akışını doğrudan CloudWatch Logs'a göndermek için görev tanımınızda awslogs günlük sürücüsünü yapılandırın. Bir günlük grubu, bölgeyi ve akış önekini belirtin. Görev yürütme rolünün logs:CreateLogStream ve logs:PutLogEvents izinlerine ihtiyacı vardır. Birden çok hizmette merkezi günlük toplama için günlükleri S3'e, OpenSearch'e veya üçüncü taraf günlük sistemlerine yönlendirmek üzere FireLens (Fluent Bit ya da Fluentd içeren bir yan görev kapsayıcısı) kullanmayı değerlendirin.

'logConfiguration': {
    'logDriver': 'awslogs',
    'options': {
        'awslogs-group': '/ecs/myapp',
        'awslogs-region': 'us-east-1',
        'awslogs-stream-prefix': 'myapp'
    }
}

Cloud Map ile ECS Hizmet Keşfi

ECS'deki mikro hizmetlerin birbiriyle iletişim kurması gerektiğinde sabit kodlanmış IP adresleri işe yaramaz; çünkü görevler geçicidir ve her başlatmada yeni IP'ler alır. Her görevin IP'sini ve portunu bir DNS ad alanına kaydetmek için AWS Cloud Map (ECS Hizmet Keşfi) kullanın. Diğer hizmetler, myservice.namespace.local adresini geçerli ve sağlıklı görev IP'lerine çözümler. ECS yeni görevleri otomatik olarak kaydeder ve başarısız olanların kaydını silerek DNS kayıtlarını el ile yönetime gerek kalmadan güncel tutar.

ECS Görev Tanımlarında Gizli Bilgiler

Kimlik bilgilerini hiçbir zaman görev tanımlarına sabit kodlamayın. Bunun yerine görev tanımınızda Secrets Manager veya Parameter Store gizli bilgilerine başvurun—ECS bunları görev başlatılırken ortam değişkenleri olarak ekler. Görev yürütme rolünün gizli bilgileri alma izinlerine sahip olması gerekir. Secrets Manager için secretsmanager:GetSecretValue, Parameter Store için ssm:GetParameters kullanın. Gizli bilgiler kapsayıcı başlatılırken bir kez alınır; döndürülen gizli bilgilerin yeni değerlerinin alınması için görevin değiştirilmesi gerekir.

'secrets': [
    {
        'name': 'DB_PASSWORD',
        'valueFrom': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:myapp/db-password-AbCdEf'
    },
    {
        'name': 'API_KEY',
        'valueFrom': 'arn:aws:ssm:us-east-1:123456789012:parameter/myapp/api-key'
    }
]

Hızlı Kontrol

Bu derste ele alınan AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: ECS Kümeleri, görevlerin çalıştığı işlem kaynaklarını gruplar; Görev Tanımları, kapsayıcı görüntülerini, CPU/belleği, rolleri ve günlük kaydını sürümlendirilmiş taslaklar olarak tanımlar; ECS Hizmetleri ise istenen görev sayısını korur, trafik dağıtımı için ALB ile tümleşir ve aşamalı veya mavi/yeşil dağıtımları destekler. Sırada EC2 başlatma türünü sunucusuz Fargate başlatma türüyle karşılaştıracağız.

Sıkça Sorulan Sorular

“ECS Kümeleri, Görev Tanımları ve Hizmetler” dersi ücretsiz mi?

Evet — “ECS Kümeleri, Görev Tanımları ve Hizmetler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.

“ECS Kümeleri, Görev Tanımları ve Hizmetler” dersinde ne öğreneceğim?

Konteyner imajları ve kaynak sınırlarıyla ECS görev tanımlarını tanımlayın, bunları bir kümeye kaydedin ve istenen sayıyı koruyacak bir hizmet oluşturun. AWS Solutions Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“ECS Kümeleri, Görev Tanımları ve Hizmetler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AWS Solutions Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. ECS Kümeleri, Görev Tanımları ve Hizmetler
  2. EC2 Başlatma Türü ve Fargate Karşılaştırması
  3. ECR: Konteyner İmajlarını Depolama ve Çekme
  4. ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme
← AWS Solutions Architect Sayfasına Dön