BLOG
2012년 AWS는 Windows Power shell 용 Powershell 도구의 AWS 도구를 최초 버전으로 발표했습니다. 이것은 약 20개의 서비스를 지원하는 550개의 cmdlet을 포함하고 있습니다. 그 이후, AWS의 성장으로 모듈은 160개 이상의 서비스에 걸쳐 거의 6000개의 cmdlet로 확장되었고, 또한 플랫폼 간 실행이 가능한 PowerShell6이상의 사용자 대상의 모듈이 추가(단, 동일한)되었습니다.
이러한 모든 cmdlet을 단일 모듈 (Windows의 PowerShell v2-v5.1용 AWSPowerShell 경우, PowerShell v6 또는 그 이상의 Windows용 AWSPowerShell. NetCore, macOS 및 Linux의 경우)에 넣는 것은 단점이 있었습니다. 첫째, 모듈의 가져오기 시간이 크게 늘어났습니다. 8 세대 Gen Core i7 노트북에서 모듈을 가져오는 시간이 25초를 초과했습니다. 둘째, 모듈 매니페스트에 모든 cmdlet을 나열하는 문제를 발견한 후 CmdletsToExport매니페스트 속성에 ‘*’를 지정해야 했습니다. 이렇게 하면 PowerShell에서 모듈의 cmdlet을 명시적으로 가져올 때까지 cmdlet의 결정이 완료되지 않아 cmdlet 이름의 탭 완성에 영향을 줍니다.
내 Shell profile에서 Set-AWSCredential와 Set-DefaultAWSRegion을 사용하여 Shell의 초기 범위를 설정합니다. 따라서 먼저 모듈을 명시적으로 가져온 다음 Shell을 사용할 수 있을 때까지 기다려야 합니다. 이 느린 로딩 시간은 사용자가 특히 기동 시간을 빠르게 하기 위해 PowerShell에서 AWS Lambda 함수를 작성하는 경우에 더욱 지속이 불가능합니다.
PowerShell 모듈용 리팩터링 된 AWS 도구의 발표 (프리뷰)
2019년 8월 8일, AWS팀은 이 문제를 해결하기 위해 PowerShell 갤러리에 새로운 모듈 세트를 출시했습니다. 이 모듈은 프리뷰로 이에 대한 여러분의 의견을 수렴하고자 합니다. (좋은지 나쁜지에 대해).
프리뷰 발매에서 각 AWS 서비스에는 이름 AWS.Tools.Common으로 지정된 공통 공유 모듈에 따른 자체 PowerShell 모듈이 있습니다 (NuGet의 NET 용 AWS SDK로 사용하는 것과 동일한 모듈 방식입니다). 여기에는 여러 가지 의미가 있습니다.
- 모든 서비스에 대해 하나의 큰 모듈을 다운로드하여 설치하는 대신 실제로 필요한 서비스에 대한 모듈만 설치할 수 있습니다. 서비스 고유의 모듈을 설치하면 공통 모듈이 자동으로 설치됩니다.
- 이제 CmdletsToExport 의 각 모듈의 매니페스트 속성이 올바르게 지정되었으므로 더 이상 프리뷰 모듈을 명시적으로 가져올 필요가 없습니다.
- 새 모듈의 버전 관리 전략은 현재 AWSPowerShell및 AWSPowerShell. NetCore모듈에 따릅니다. 전략은 프리뷰용 팀의 GitHub 저장소 공지에 자세히 설명되어 있으며 이에 대한 의견을 기다리고 있습니다.
- Shell 기동 시간이 빠릅니다. 앞서 같은 시스템에서 명령 Shell의 로드 시간이 평균 1 초에서 2초 사이임을 언급했습니다. Shell Profile의 유일한 변경 사항은 명시적인 모듈 가져오기를 제거하는 것이었습니다.
새 모듈은 AWS.Tools.ServiceName이라는 이름 패턴을 따릅니다. 경우에 따라서는 보다 일반적인 축약 이름이 사용됩니다. 예를 들면 다음과 같습니다.
- AWS.Tools.EC2
- AWS.Tools.S3
- AWS.Tools.DirectoryService
- AWS.Tools.ElasticLoadBalancingV2
- AWS.Tools.Polly
- AWS.Tools.Rekognition
- 기타
AWS Lambda 용 PowerShell 함수를 작성하는 경우, 새로운 명령문을 사용하도록 스크립트 종속성 (#Requires명령문을 사용하여) 을 업데이트해야 합니다. 또한 #Requires공통 모듈에 대한 명령문을 추가해야 합니다. 예를 들어 Amazon Simple Storage Service (S3) 를 사용하는 PowerShell에서 Lambda 함수를 작성하는 경우 함수의 스크립트 파일에 다음 두 명령문을 추가해야 합니다.
PowerShell
#Requires -Modules @{ModuleName=’AWS.Tools.Common’;ModuleVersion=’3.3.563.0′}
#Requires -Modules @{ModuleName=’AWS.Tools.S3′;ModuleVersion=’3.3.563.0′}
필수 매개 변수
AWS는 사용자의 오랜 요청이었던 매개 변수를 필수로 표시하는 요청을 처리했습니다. 필수 매개 변수는 PowerShell의 훌륭한 기능으로, API에 익숙하지 않은 사용자를 안내하는 데 도움이 되었습니다. 필수 매개 변수 표시는 서비스 모델의 데이터에 따라 달라지므로 문제를 발견하신 경우에 본 글의 맨 하단에 있는 링크를 통해 알려주시면, 필요에 따라 서비스 모델을 조사하고 수정하겠습니다.
그 외 브리뷰의 변경 사항
AWS는 이번에 오래되고 더 이상 사용되지 않는 cmdlet를 삭제할 수 있게 되었습니다. 이렇게 제거된 cmdlet 중 하나를 사용해야 하는 경우, 당분간은 기존 모듈을 계속 사용 해야 하지만 새로운 버전에서는 지원 받으실 수 있도록 GitHub에서 이슈를 제기해 주십시오.
- CloudHSM (HSM)은 CloudHSMV2 (HSM2)를 위해 제거되었습니다.
- ElasticLoadBalancing (ELB2)은 ElasticLoadBalancingV2 (ELB2)를 위해 제거되었습니다.
- CloudWatchEvents (CWE)은 EVB (EventBridge)를 위해 제거되었습니다.
- KinesisAnalytics (KINA)는 KinesisAnalyticsV2 (KINA2)를 위해 제거되었습니다.
AWSPowerShell 및 AWSPowerShell.NetCore 모듈은 어떻게 됩니까?
아무 일도 일어나지 않습니다. 이 모듈은 남아서, 추후 프리뷰와 동기화하여 갱신 됩니다. AWS에서는 하위 호환성이 굉장히 중시되기 때문에 커뮤니티가 교환에 만족할 때까지 이러한 모듈의 사용을 중단하지 않을 예정입니다.
서로 다른 두 모듈 세트를 혼합 할 수는 없습니다. 예를 들어 AWSPowerShell(또는 AWSPowerShell.NetCore) 모듈이 로드 된 경우 프리뷰에서 모듈을 로드 하려는 시도는 에러와 함께 실패합니다.
참여해 주세요!
이제 새로운 프리뷰 모듈을 PowerShell 갤러리에서 사용할 수 있습니다. 또한 발매에 대한 자세한 내용은 GitHub의 Matteo 공지에서 확인하실 수 있습니다. 개발팀은 프리뷰에 대한 여러분의 의견을 기다리고 있습니다. 새로운 모듈 형식이 좋으신가요(혹은 좋지 않으신가요)? 필수 매개 변수 표시를 위한 새로운 지원에 문제가 있으신가요? 다른 이전 버전과의 호환성 문제가 있으신가요? 채택해야 할 버전 관리 전략에 대한 생각 등이 있으신가요? 그렇다면 GitHub 이슈 저장소에 알려주시길 바랍니다!
원문 URL: https://aws.amazon.com/ko/blogs/aws/preview-release-of-the-new-aws-tools-for-powershell/
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.