AWS ECR: உங்கள் ECS Fargate-க்குத் தேவையான கண்டெய்னர் ரெஜிஸ்ட்ரி (மற்றும் அது உடையும் வரை ஏன் கண்ணுக்குத் தெரியாமல் இருக்கிறது)

AWS ECR: உங்கள் ECS Fargate-க்குத் தேவையான கண்டெய்னர் ரெஜிஸ்ட்ரி (மற்றும் அது உடையும் வரை ஏன் கண்ணுக்குத் தெரியாமல் இருக்கிறது)

AWS-ல் இமேஜ் புல்கள், IAM அனுமதிகள் மற்றும் பில்களை நிர்வகிப்பதற்கான ஒரு நடைமுறை வழிகாட்டி

AWS ECR என்றால் என்ன, நீங்கள் ஏன் அதைப் பற்றி கவலைப்பட வேண்டும்?

AWS ECR (Elastic Container Registry) என்பது Amazon-ன் நிர்வகிக்கப்பட்ட கண்டெய்னர் இமேஜ் ஸ்டோரேஜ் ஆகும். இதை ஒரு பிரைவேட் Docker Hub போன்று நினைத்துக்கொள்ளுங்கள், ஆனால் AWS-ல் கட்டமைக்கப்பட்டது. நீங்கள் ECS Fargate-ல் ஒரு கண்டெய்னரை இயக்கும் ஒவ்வொரு முறையும், டாஸ்க் ஒரு இமேஜை இழுக்க வேண்டும் எங்கிருந்தாவது — மற்றும் ECR-ல் தான் பெரும்பாலான குழுக்கள் தங்களுடையதை வைத்திருக்கிறார்கள்.

1 ஜூலை 2026 அன்று, எந்தவொரு தீவிரமான கிளவுட் டிப்ளாய்மென்ட்டுக்கும் கண்டெய்னர் ஆர்கெஸ்ட்ரேஷன் என்பது ஒரு அடிப்படைத் தேவையாகும். நீங்கள் ECS Fargate-ஐ இயக்குகிறீர்கள் என்றால், நிச்சயமாக நீங்கள் ECR-ஐயும் பயன்படுத்துவீர்கள். ஆனால் இங்கே ஒரு விஷயம் உள்ளது: ECR என்பது ஒரு வகையில் கண்ணுக்குத் தெரியாதது. அது தோல்வியடையும் வரை வேலை செய்கிறது, மற்றும் அது உடையும் போது, பிழைச் செய்திகள் உதவிகரமாக இருப்பதில்லை. டாஸ்க் தொடங்கத் தவறிவிடுகிறது ResourceInitializationError. உங்கள் குழு உறுப்பினர்கள் தோள்களைக் குலுக்குகிறார்கள். ஆறு மாதங்களுக்குப் பிறகு, ஐந்தாண்டு கால அன்டேக் செய்யப்பட்ட இமேஜ்கள் உங்கள் ரெஜிஸ்ட்ரியில் உட்கார்ந்துகொண்டு, மாதத்திற்கு $400 ஸ்டோரேஜ் கட்டணத்தை அமைதியாக வசூலிப்பதை நீங்கள் கண்டுபிடிக்கிறீர்கள். ECR ஆவணங்கள் மேலோட்டமாகச் சொல்லும் பகுதிகளை இந்த வழிகாட்டி உள்ளடக்கியுள்ளது: புல்கள் உண்மையில் எப்படி வேலை செய்கின்றன, பிரைவேட் சப்நெட் டாஸ்க்குகள் ஏன் தோல்வியடைகின்றன, மற்றும் உங்கள் பில்லை நியாயமானதாக எப்படி வைத்திருப்பது.

ECS Fargate-உடன் ECR எப்படி வேலை செய்கிறது

ஒரு ECS Fargate டாஸ்க் தொடங்கும் போது, அது ஒரு கண்டெய்னர் இமேஜை இழுக்க வேண்டும். டாஸ்க்கில் Docker லோக்கலாக இன்ஸ்டால் செய்யப்பட்டிருக்காது — அது Amazon-ன் நிர்வகிக்கப்பட்ட உள்கட்டமைப்பில் இயங்குகிறது. எனவே Fargate ஏஜென்ட் ECR-ஐத் தொடர்புகொண்டு, அங்கீகரிக்கப்பட்டு, இமேஜைப் பதிவிறக்குகிறது.

அந்த அங்கீகாரம் தான் யாரும் பேசாத முக்கிய விஷயம். உங்கள் Fargate டாஸ்க் பயனர்பெயர் மற்றும் கடவுச்சொல்லுடன் லாக்-இன் செய்யாது. அதற்குப் பதிலாக, அது ஒரு IAM ரோலைப் பயன்படுத்துகிறது — குறிப்பாக, நீங்கள் டாஸ்க்கிற்கு ஒதுக்கிய execution ரோலை. அந்த ரோலின் அனுமதிகளை ECR சரிபார்க்கிறது. ரோலால் இமேஜைப் படிக்க முடிந்தால், நன்று. முடியாவிட்டால், டாஸ்க் அமைதியாகத் தோல்வியடைகிறது (உங்களுக்கு ஒரு பொதுவான பிழை கிடைக்கும்).

ECR ஒரு குறிப்பிட்ட AWS ரீஜியனிலும் வாழ்கிறது. உங்கள் டாஸ்க் us-east-1 மற்றும் உங்கள் இமேஜ் eu-west-1-ல் இருந்தால், கூடுதல் உள்ளமைவு இல்லாமல் டாஸ்க்கால் அதை இழுக்க முடியாது. அது பொதுவாக ஒரு பிரச்சனையல்ல, ஆனால் தெரிந்துகொள்ள வேண்டிய விஷயம்.

IAM அனுமதிகள்: கண்ணுக்குத் தெரியாத சுவர்

இங்குதான் பெரும்பாலான மக்கள் தடுமாறுகிறார்கள். உங்கள் ECS டாஸ்க்கிற்கு ஒரு execution ரோல் தேவை — இமேஜ்களை இழுக்க, லாக்-களை எழுத மற்றும் பிற AWS சேவைகளுடன் பேச அது பயன்படுத்தும் அடையாளம். ECR-லிருந்து படிக்க அந்த ரோலுக்குக் குறிப்பிட்ட அனுமதிகள் தேவை.

குறைந்தபட்சத் தேவை இப்படித்தான் இருக்கும்:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "ecr:BatchCheckLayerAvailability"
      ],
      "Resource": "arn:aws:ecr:us-east-1:REPLACE_WITH_ACCOUNT_ID:repository/REPLACE_WITH_REPO_NAME"
    },
    {
      "Effect": "Allow",
      "Action": "ecr:GetAuthorizationToken",
      "Resource": "*"
    }
  ]
}

அந்த இரண்டாவது அறிக்கை மிக முக்கியமானது. GetAuthorizationToken என்பது ஒரு குறிப்பிட்ட ரெபோசிட்டரிக்குப் பொருந்தாத ஒரே ECR ஆக்‌ஷன் ஆகும் — இது உலகளாவிய ரீதியில் பொருந்தும். இது இல்லாமல், உங்கள் டாஸ்க்கால் ECR-ல் அங்கீகரிக்கக் கூட முடியாது, மற்றும் மற்ற அனைத்தும் தோல்வியடையும்.

இதை நீங்கள் தவறாகச் செய்தால், உங்கள் டாஸ்க் PROVISIONING -ல் ஒரு நிமிடம் உட்கார்ந்திருந்து, பிறகு தோல்வியடையும் ResourceInitializationError. "ஹே, உங்கள் IAM ரோலால் ECR-ஐப் படிக்க முடியவில்லை" என்று சொல்லும் எந்த லாக்-கும் இருக்காது. பிழை தெளிவாக இருக்காது. எனவே ஒரு டாஸ்க் தொடங்காதபோது சரிபார்க்க வேண்டிய முதல் விஷயம் execution ரோல் ஆகும்.

பிரைவேட் சப்நெட் தோல்விகள் மற்றும் அவை ஏன் நிகழ்கின்றன

உங்கள் Fargate டாஸ்க் ஒரு பிரைவேட் சப்நெட்டில் இருப்பதாகக் கொள்வோம் (நல்ல பாதுகாப்பு நடைமுறை). இதற்கு நேரடி இணைய அணுகல் இல்லை — அனைத்து அவுட்பவுண்ட் டிராஃபிக்களும் ஒரு NAT கேட்வே வழியாகவே செல்கின்றன. இப்போது உங்கள் டாஸ்க் ECR-லிருந்து ஒரு இமேஜை இழுக்க முயற்சிக்கிறது.

ECR ஒரு AWS சேவை, எனவே அது இணையத்தில் வாழ்கிறது (ஒரு வகையில் — தொழில்நுட்ப ரீதியாக இதற்கு பப்ளிக் மற்றும் VPC எண்ட்பாயிண்டுகள் உள்ளன). உங்கள் பிரைவேட் சப்நெட் டாஸ்க் ECR-ன் பப்ளிக் எண்ட்பாயிண்டைத் தொடர்புகொள்ளும்போது, கோரிக்கை NAT கேட்வே வழியாகச் சென்று, திரும்பி வருகிறது, மற்றும் இது வேலை செய்ய வேண்டும் . பொதுவாக இது வேலை செய்யும்.

ஆனால் சில நேரங்களில் இது வேலை செய்யாது. உங்கள் NAT கேட்வே உங்கள் டாஸ்க்கிலிருந்து வேறுபட்ட AZ-ல் இருந்தால் அல்லது ரூட் டேபிள்களை நீங்கள் தவறாக உள்ளமைத்திருந்தால், கோரிக்கை அமைதியாகத் தோல்வியடையும். அல்லது உங்கள் செக்யூரிட்டி குரூப்கள் போர்ட் 443 (HTTPS)-ல் ஈக்ரெஸ்ஸை தடுத்தால், ECR-ஆல் பதிலளிக்க முடியாது.

இதற்கான தீர்வு பொதுவாக இவற்றில் ஒன்றாகும்:

  1. ECR-க்கு ஒரு VPC எண்ட்பாயிண்டைப் பயன்படுத்தவும். உங்கள் VPC-யில் ஒரு VPC எண்ட்பாயிண்டை உருவாக்குங்கள், மற்றும் பப்ளிக் இன்டர்நெட்டிற்குப் பதிலாக எண்ட்பாயிண்ட் வழியாக Fargate இமேஜை இழுக்கிறது. இது மிகவும் பாதுகாப்பானது மற்றும் வேகமானது.
  2. உங்கள் NAT கேட்வே அணுகக்கூடியதாக இருப்பதை உறுதிசெய்யவும். ரூட் டேபிள்களைச் சரிபார்க்கவும் — ECR-க்கான டிராஃபிக் NAT வழியாக ரூட் செய்யப்பட வேண்டும்.
  3. அவுட்பவுண்ட் HTTPS-ஐத் திறக்கவும். ECR-ஐ அடைய உங்கள் டாஸ்க்கின் செக்யூரிட்டி குரூப்பிற்கு போர்ட் 443-ல் ஈக்ரெஸ் தேவை.
  4. CloudWatch லாக்-களைச் சரிபார்க்கவும். பிழைச் செய்தியைத் தாண்டி நீங்கள் தேடினால், உங்கள் டாஸ்க்கின் CloudWatch லாக் குரூப்பில் அடிக்கடி குறிப்புகள் இருக்கும்.

நீங்கள் ஒரு பிரைவேட் சப்நெட்டில் இருந்தால், ஒரு VPC எண்ட்பாயிண்ட் தான் தங்கத் தரநிலை. இது அனைத்து டிராஃபிக்கையும் AWS-க்குள் வைத்திருக்கிறது, NAT கட்டணங்களைத் தவிர்க்கிறது மற்றும் வேகமானது. இதை ஒரு முறை அமைத்துவிட்டு, மறந்துவிடுங்கள்.

ECR விலையிடல் மற்றும் இமேஜ் கிளீனப்பைப் புரிந்துகொள்வது

ECR செலவுகள் எளிமையானவை: சேமிக்கப்பட்ட இமேஜ் டேட்டாவிற்கு நீங்கள் பணம் செலுத்துகிறீர்கள். ஒரு புல்-க்கு கட்டணம் இல்லை, ஒரு புஷ்-க்கு கட்டணம் இல்லை. ஸ்டோரேஜ் மட்டுமே.

இதில் உள்ள சிக்கல் என்னவென்றால்: நீங்கள் புஷ் செய்யும் ஒவ்வொரு இமேஜ் லேயரும் நீங்கள் அதை நீக்கும் வரை நிரந்தரமாகச் சேமிக்கப்படும். நீங்கள் ஒரே இமேஜ் டேக்-ஐத் திரும்பத் திரும்ப புஷ் செய்தால் (ஒரு "latest" டேக் போல), ஒவ்வொரு புஷ்-ம் அடிப்படையில் ஒரு புதிய இமேஜ் ஆகும். சில ஆண்டுகளுக்குப் பிறகு, உங்களிடம் ஆயிரக்கணக்கான அன்டேக் செய்யப்பட்ட இமேஜ்கள் அங்கே உட்கார்ந்திருக்கும்.

ஒரு இமேஜ் அடிப்படை OS மற்றும் பேக்கேஜ்களைப் பொறுத்து 500 MB முதல் 2 GB வரை இருக்கலாம். அதை நூற்றுக்கணக்கான அல்லது ஆயிரக்கணக்கான பில்டுகளால் பெருக்கினால், நீங்கள் டெராபைட்களைப் பார்க்கிறீர்கள். ஒரு மாதத்திற்கு ஒரு GB-க்கு தோராயமாக $0.10 எனில், அது மிகவும் விலை உயர்ந்தது.

இதற்கான தீர்வு ஒரு லைஃப்சைக்கிள் பாலிசி ஆகும். இது ஒரு விதி, அதாவது "30 நாட்களில் பயன்படுத்தப்படாத எந்த இமேஜையும் நீக்கு" அல்லது "ஒரு டேக்-க்கு கடைசி 10 இமேஜ்களை மட்டும் வைத்திரு" என்று கூறுகிறது. ஒரு நியாயமான எடுத்துக்காட்டு இங்கே:

{
  "rules": [
    {
      "rulePriority": 1,
      "description": "Keep last 10 images",
      "selection": {
        "tagStatus": "tagged",
        "countType": "imageCountMoreThan",
        "countNumber": 10
      },
      "action": {
        "type": "expire"
      }
    },
    {
      "rulePriority": 2,
      "description": "Delete untagged images after 30 days",
      "selection": {
        "tagStatus": "untagged",
        "countType": "sinceImagePushed",
        "countUnit": "days",
        "countNumber": 30
      },
      "action": {
        "type": "expire"
      }
    }
  ]
}

இது கடைசி 10 டேக் செய்யப்பட்ட இமேஜ்களை வைத்திருக்கிறது மற்றும் 30 நாட்களுக்குப் பழமையான எந்தவொரு அன்டேக் செய்யப்பட்ட இமேஜ்களையும் நீக்குகிறது. நீங்கள் ECR-ஐ அமைக்கும் போது இதைப் பயன்படுத்துங்கள், உங்களுக்கு எப்போதுமே $400 பில் என்ற ஆச்சரியம் வராது.

ECR பிரச்சனைகளை டீபக் செய்தல்

ஒரு டாஸ்க் தொடங்கத் தவறும்போது, பிழைச் செய்தி பொதுவாகப் பயனற்றதாக இருக்கும். ஆனால் இதற்கான விடை எப்போதும் இவற்றில் ஒன்றாகவே இருக்கும்:

  1. தவறான IAM அனுமதிகள். execution ரோலால் ரெபோசிட்டரியைப் படிக்க முடியவில்லை.
  2. தவறான ரெபோசிட்டரி அல்லது ரீஜியன். டாஸ்க் app.example.com/myimage:latest என்பதை us-east-1-ல் தேடுகிறது, ஆனால் நீங்கள் அதை eu-west-1.
  3. நெட்வொர்க் பிரச்சனைகள். பிரைவேட் சப்நெட், செக்யூரிட்டி குரூப்கள் அல்லது ECR அணுகலைத் தடுக்கும் ரூட் டேபிள்கள்.
  4. இமேஜ் இல்லை. நீங்கள் ஒரு டேக்கை புஷ் செய்தீர்கள், பிறகு அதை நீக்கினீர்கள், பின்னர் அதைப் பயன்படுத்த முயற்சித்தீர்கள்.
  5. ECR API த்ராட்லிங். அரிதானது, ஆனால் நீங்கள் நூற்றுக்கணக்கான இமேஜ்களை ஒரே நேரத்தில் இழுத்தால், ECR உங்களுக்கு ரேட்-லிமிட் செய்யலாம்.

டிரபுள்ஷூட் செய்ய:

  • IAM கன்சோலில் டாஸ்க்கின் execution ரோலைச் சரிபார்க்கவும். அதற்கு ECR அனுமதிகள் உள்ளதா?
  • டாஸ்க்கிற்கான CloudWatch லாக்ஸ் குரூப்பைச் சரிபார்க்கவும். அடிக்கடி awslogs அவுட்புட்டில் ஒரு குறிப்பு புதைந்திருக்கும்.
  • அதே VPC-யில் உள்ள ஒரு EC2 இன்ஸ்டான்ஸிலிருந்து இமேஜை மேனுவலாக இழுக்க முயற்சிக்கவும். அது வேலை செய்தால், பிரச்சனை டாஸ்க் உள்ளமைவில் உள்ள நெட்வொர்க்கிங் அல்லது IAM ஆகும்.
  • VPC எண்ட்பாயிண்டைப் பார்க்கவும் (நீங்கள் ஒன்றைப் பயன்படுத்தினால்). அது டாஸ்க்கின் சப்நெட்டிலிருந்து அணுகக்கூடியதாக உள்ளதா?

முடிவுரை

ECR சிக்கலானது அல்ல, ஆனால் விவரங்களைத் தவறவிடுவது எளிது. இது உங்கள் ECS டாஸ்க்கிற்கும் வெளி உலகிற்கும் இடையில் அமர்ந்திருக்கிறது, மேலும் இது தவறாக உள்ளமைக்கப்பட்டால், எல்லாமே நின்றுவிடும். சரியாகச் செய்ய வேண்டிய மூன்று விஷயங்கள்: IAM அனுமதிகள் (உட்பட GetAuthorizationToken), நெட்வொர்க் அணுகல் (குறிப்பாக பிரைவேட் சப்நெட்டுகளில்) மற்றும் இமேஜ் கிளீனப் (லைஃப்சைக்கிள் பாலிசிகள்). இந்த மூன்றையும் செய்யுங்கள், ECR ஒரு நல்ல விதத்தில் கண்ணுக்குத் தெரியாததாக மாறும் — அது சரியாக வேலை செய்கிறது, மற்றும் உங்கள் பில் நியாயமானதாகவே இருக்கும்.

நன்மைகள்

  • முழுமையாக நிர்வகிக்கப்படுகிறது — நீங்களே இயக்க எந்த கண்டெய்னர் ரெஜிஸ்ட்ரியும் இல்லை
  • IAM உடன் ஒருங்கிணைக்கப்பட்டுள்ளது — நுணுக்கமான அணுகல் கட்டுப்பாடு கட்டமைக்கப்பட்டுள்ளது
  • மலிவானது — ஸ்டோரேஜ்-க்கு மட்டுமே பணம் செலுத்துங்கள், ஒரு புல்-க்கு கட்டணங்கள் இல்லை
  • வேகமானது — உங்கள் டாஸ்க்குகள் உள்ள அதே AWS ரீஜியனில் இமேஜ்கள் வாழ்கின்றன
  • VPC எண்ட்பாயிண்டுகள் உள்ளன — பாதுகாப்பு மற்றும் வேகத்திற்காக டிராஃபிக்கை AWS-க்குள் வைத்திருக்கலாம்
  • லைஃப்சைக்கிள் பாலிசிகள் — தானியங்கி கிளீனப் பில் ஆச்சரியங்களைத் தடுக்கிறது

தீமைகள்

  • பிழைச் செய்திகள் தெளிவாக இல்லை — "ResourceInitializationError" உங்களுக்கு எதையும் சொல்லாது
  • ரீஜியனல் — ஒரு ரீஜியனில் உள்ள இமேஜ்கள் வொர்க்அரவுண்டுகள் இல்லாமல் வேறொரு ரீஜியனில் உள்ள டாஸ்க்குகளுக்குத் தெரியாது
  • உள்ளமைக்கப்பட்ட நோட்டிஃபிகேஷன்கள் இல்லை — உங்கள் இமேஜ் ஸ்டோரேஜ் எச்சரிக்கையின்றி பலூன் போல ஊதலாம்
  • IAM சிக்கல் — execution ரோலில் பல நகரும் பாகங்கள் உள்ளன
  • VPC எண்ட்பாயிண்ட் அமைவு மேனுவலாக உள்ளது — பிரைவேட்-சப்நெட் அணுகலைப் பாதுகாப்பது எளிதாக இருக்க வேண்டும்
  • அன்டேக் செய்யப்பட்ட இமேஜ் கிளீனப் மேனுவலாக உள்ளது — லைஃப்சைக்கிள் பாலிசிகள் இயல்பாகவே ஆக்டிவேட் ஆவதில்லை

எச்சரிக்கை

இந்த வழிகாட்டி பிளேஸ்ஹோல்டர் மதிப்புகளைப் பயன்படுத்துகிறது: ரெபோசிட்டரி பெயர்கள் REPLACE_WITH_REPO_NAME, கணக்கு ஐடிகள் REPLACE_WITH_ACCOUNT_ID, மற்றும் ரீஜியன்கள் பொதுவான எடுத்துக்காட்டுகள். உங்கள் AWS கணக்கிலிருந்து எப்போதும் உண்மையான மதிப்புகளை மாற்றிப் பயன்படுத்தவும். இந்த உள்ளமைவுகள் எதையும் புரொடக்ஷனுக்கு டிப்ளாய் செய்வதற்கு முன், முதலில் அவற்றை ஒரு சாண்ட்பாக்ஸ் சூழலில் சோதிக்கவும். IAM மாற்றங்கள் மற்றும் நெட்வொர்க்கிங் உள்ளமைவுகள் இயங்கும் வொர்க்லோடுகளைப் பாதிக்கலாம், எனவே மாற்றங்களைக் கவனமாகச் செய்து ரோல்பேக் திட்டத்தை வைத்திருக்கவும். உங்கள் சொந்த ஆபத்தில் தொடரவும், மற்றும் அனைத்து பிளேஸ்ஹோல்டர்களும் உண்மையான, சரியான மதிப்புகளால் மாற்றப்பட்டுள்ளனவா என்பதைச் சரிபார்க்கவும்.

அடிக்கடி கேட்கப்படும் கேள்விகள்

  • எனது CI/CD பைப்லைனில் இருந்து ECR-க்கு ஒரு இமேஜை எப்படி புஷ் செய்வது?
  • ஒரு பப்ளிக் மற்றும் பிரைவேட் ECR ரெபோசிட்டரிக்கு இடையே உள்ள வேறுபாடு என்ன?
  • AWS-க்கு வெளியிலிருந்து ஒரு ECR இமேஜை நான் இழுக்க முடியுமா?
  • பாதுகாப்பு பாதிப்புகளுக்கு ECR இமேஜ்களை நான் எப்படி ஸ்கேன் செய்வது?
  • திடீரென்று எனது ECR பில் ஏன் இவ்வளவு அதிகமாக உள்ளது?
  • நான் ECR-ஐப் பயன்படுத்த வேண்டுமா, அல்லது Docker Hub அல்லது வேறொரு ரெஜிஸ்ட்ரியை நான் பயன்படுத்தலாமா?
  • எனது ECR ரெபோசிட்டரிக்கு மற்றொரு AWS கணக்கிற்கு எப்படி அணுகல் வழங்குவது?
  • இயங்கிக் கொண்டிருக்கும் ஒரு டாஸ்க் பயன்படுத்தும் ஒரு இமேஜை நான் நீக்கினால் என்ன நடக்கும்?

டேகுகள்

#aws #ecr #ecs #containers #fargate #devops #cloudnative #iam

Free field guide

Prompt-Injection Defense Checklist

The controls that actually reduce the blast radius when your app feeds untrusted text to an LLM. Enter your email — you'll get the PDF instantly, plus new posts on AI, security & Linux.