

• AWS Systems Manager CloudWatch 대시보드는 2026년 4월 30일 이후에는 더 이상 사용할 수 없습니다. 고객은 Amazon CloudWatch 콘솔을 계속 사용하여 현재와 마찬가지로 Amazon CloudWatch 대시보드를 보고, 생성하고, 관리할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 대시보드 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)를 참조하세요.

# AWS 서비스와의 통합
<a name="integrations-aws"></a>

Systems Manager Command 문서(SSM 문서)와 Automation 런북 사용을 통해 AWS Systems Manager을(를) 사용하여 AWS 서비스와(과) 통합할 수 있습니다. 이러한 리소스에 대한 자세한 내용은 [AWS Systems Manager Documents](documents.md) 섹션을 참조하세요.

Systems Manager는 다음 AWS 서비스와(과) 통합되어 있습니다.

## 컴퓨팅
<a name="integrations-aws-compute"></a>


|  |  | 
| --- |--- |
| Amazon Elastic Compute Cloud(Amazon EC2) |  [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 사전 투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다. Systems Manager를 사용하면 EC2 인스턴스에서 여러 태스크를 수행할 수 있습니다. 예를 들어 EC2 인스턴스를 시작, 구성, 관리, 유지 관리, 문제 해결 및 안전하게 연결할 수 있습니다. 또한 Systems Manager를 사용하여 소프트웨어를 배포하고, 규정 준수 상태를 확인하고, EC2 인스턴스에서 인벤토리를 수집할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
| Amazon EC2 Auto Scaling |  [Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/)을 사용하면 애플리케이션의 로드를 처리할 수 있는 정확한 수의 EC2 인스턴스를 유지할 수 있습니다. Auto Scaling 그룹이라는 EC2 인스턴스 모음을 생성합니다. Systems Manager를 사용하면 Auto Scaling 그룹의 Auto Scaling 템플릿에 사용된 Amazon Machine Image(AMI) 패치와 같은 일반적인 절차를 자동화할 수 있습니다.  자세히 알아보기 [오토 스케일링을 위해 AMIs 업데이트](automation-tutorial-update-patch-windows-ami-autoscaling.md)   | 
| Amazon Elastic Container Service(Amazon ECS) |  [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)는 클러스터에서 도커 컨테이너를 손쉽게 실행, 중지 및 관리할 수 있게 하는 컨테이너 관리 서비스로서 확장성과 속도가 뛰어납니다. Systems Manager를 사용하면 Systems Manager의 도구인 Parameter Store의 파라미터에 민감한 데이터를 저장한 다음 컨테이너 정의에서 참조하여 컨테이너 인스턴스를 원격으로 관리하고 민감한 데이터를 컨테이너에 주입할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Lambda |  [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/)는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 하는 컴퓨팅 서비스입니다. Lambda는 필요 시에만 코드를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 규모를 조정합니다. Systems Manager에서는 `aws:invokeLambdaFunction` 작업을 사용하여 Automation 런북 콘텐츠 내에서 Lambda 함수를 사용할 수 있습니다. AWS Lambda 함수에서 Parameter Store의 파라미터를 사용하려면 AWS 파라미터 및 보안 Lambda 확장을 사용하여 파라미터 값을 검색하고 나중에 사용하기 위해 캐시할 수 있습니다.  자세히 알아보기 [Automation, AWS Lambda 및 Parameter Store를 사용하여 골든 AMI 업데이트](automation-tutorial-update-patch-golden-ami.md)  [AWS Lambda 함수에서 Parameter Store 파라미터 사용](ps-integration-lambda-extensions.md)  | 

## 사물 인터넷(IoT)
<a name="integrations-aws-IoT"></a>


|  |  | 
| --- |--- |
| AWS IoT Greengrass 코어 디바이스 |  [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/)은 디바이스에서 IoT 애플리케이션을 구축, 배포 및 관리하는 데 도움이 되는 오픈 소스 IoT 에지 런타임 및 클라우드 서비스입니다. Systems Manager는AWS IoT Greengrass 코어 디바이스를 위한 네이티브 지원을 제공합니다.  자세히 알아보기 [Systems Manager를 통한 엣지 디바이스 관리](systems-manager-setting-up-edge-devices.md)   | 
| AWS IoT 코어 디바이스 |  [AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/)는 IoT 디바이스를 다른 디바이스에 연결하는 클라우드 서비스와 AWS 클라우드 서비스를 제공합니다. AWS IoT는 IoT 디바이스를 AWS IoT 기반 솔루션에 통합하는 데 도움이 되는 디바이스 소프트웨어를 제공합니다. 디바이스를 AWS IoT에 연결할 수 있는 경우 AWS IoT는 AWS가 제공하는 클라우드 서비스에 디바이스를 연결할 수 있습니다. Systems Manager에서는 해당 디바이스가 [하이브리드 및 멀티클라우드](operating-systems-and-machine-types.md#supported-machine-types) 환경의 **관리형 노드로 구성된 경우에만 AWS IoT 코어 디바이스가 지원됩니다.  자세히 알아보기 [Systems Manager로 하이브리드 및 멀티클라우드 환경에서 노드 관리](systems-manager-hybrid-multicloud.md)   | 

## 스토리지
<a name="integrations-aws-productgroup"></a>


|  |  | 
| --- |--- |
| Amazon Simple Storage Service(Amazon S3) |  [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)는 인터넷 스토리지입니다. 이 서비스는 개발자가 더 쉽게 웹 규모 컴퓨팅 작업을 수행할 수 있도록 설계되었습니다. Amazon S3에서 제공하는 단순한 웹 서비스 인터페이스를 사용하여 언제든지 웹상 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있습니다. Systems Manager를 사용하면 Amazon S3에 저장된 원격 스크립트 및 SSM 문서를 실행할 수 있습니다. AWS Systems Manager의 도구인 Distributor는 Amazon S3를 사용하여 패키지를 저장합니다. AWS Systems Manager의 도구인 Run Command 및 Session Manager에 대한 출력을 Amazon S3로 보낼 수도 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 

## 개발자 도구
<a name="integrations-aws-developer-tools"></a>


|  |  | 
| --- |--- |
| AWS CodeBuild |  [CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/)는 클라우드상의 완전 관리형 빌드 서비스입니다. CodeBuild는 소스 코드를 컴파일하고 단위 테스트를 실행하며 배포 준비가 완료된 아티팩트를 생성합니다. CodeBuild에서는 자체 빌드 서버를 프로비저닝, 관리 및 확장할 필요가 없습니다. Parameter Store를 사용하면 빌드 사양 및 프로젝트에 대한 민감한 정보를 저장할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS CDK |  AWS Cloud Development Kit (AWS CDK)는 프로그래밍 언어를 사용하여 클라우드 인프라를 코드로 정의하고 AWS CloudFormation을 통해 배포하는 프레임워크입니다. Application Manager에서는 Application Manager 콘솔에서 애플리케이션으로 그룹화된 CDK 구성를 보고, 기본 리소스가 포함된 애플리케이션 구조를 보고, 알림을 보고, 운영 문제를 조사 및 해결하고, 비용을 추적할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 

## 보안, 자격 증명 및 규정 준수
<a name="integrations-aws-security-identify-compliance"></a>


|  |  | 
| --- |--- |
| AWS Identity and Access Management(IAM) |  [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)되는 대상을 제어합니다. Systems Manager를 사용하면 IAM으로 서비스에 대한 액세스를 제어할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
|  AWS Secrets Manager  |  [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)를 사용하면 보안 암호를 더 쉽게 관리할 수 있습니다. 보안 암호는 데이터베이스 보안 인증 정보, 암호, 타사 API 키 및 임의 텍스트가 될 수 있습니다. Parameter Store을(를) 통해 이미 Parameter Store 파라미터 참조를 지원하는 다른 AWS 서비스을(를) 사용할 때 Secrets Manager 암호를 검색할 수 있습니다.  자세히 알아보기 [Parameter Store 파라미터에서 AWS Secrets Manager 암호 참조](integration-ps-secretsmanager.md)   | 
| AWS Security Hub CSPM |  [Security Hub CSPM](https://docs.aws.amazon.com//securityhub/latest/userguide/what-is-securityhub.html)에서는 우선순위가 높은 보안 알림과 AWS 계정의 규정 준수 상태를 포괄적으로 파악할 수 있습니다. Security Hub CSPM은 여러 AWS 서비스의 보안 알림 또는 조사 결과를 집계 및 구성하고 우선순위를 지정합니다. Security Hub CSPM과 AWS Systems Manager의 도구인 Patch Manager 간의 통합을 설정하면 Security Hub CSPM이 보안 관점에서 플릿의 패치 상태를 모니터링합니다. 패치 규정 준수 세부 정보는 자동으로 Security Hub CSPM으로 내보내집니다. 이를 통해 단일 뷰를 사용하여 패치 규정 준수 상태를 중앙에서 모니터링하고 다른 보안 결과를 추적할 수 있습니다. 플릿의 노드가 패치 규정 준수를 벗어나면 알림을 수신하고 Security Hub CSPM콘솔에서 패치 규정 준수 결과를 검토할 수 있습니다. Security Hub CSPM을 AWS Systems Manager의 도구인 Explorer 및 OpsCenter와 통합할 수도 있습니다. Security Hub CSPM과의 통합을 통해 Explorer 및 OpsCenter에서 Security Hub CSPM의 조사 결과를 받을 수 있습니다. Security Hub CSPM 조사 결과는 Explorer 및 OpsCenter에서 사용할 수 있는 보안 정보를 제공하여 AWS Systems Manager의 보안, 성능 및 운영 문제를 집계하고 조치를 취합니다. Security Hub CSPM 사용 시 요금이 부과됩니다. 자세한 내용은 [Security Hub CSPM 요금](https://aws.amazon.com/security-hub/pricing/)을 참조하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 

## 암호화 및 PKI
<a name="integrations-aws-cryptography-pki"></a>


|  |  | 
| --- |--- |
| AWS Key Management Service (AWS KMS) |  [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/)는 데이터 암호화에 사용하는 암호화 키인 고객 관리형 키를 생성하고 제어할 수 있게 하는 관리형 서비스입니다. Systems Manager에서는 AWS KMS를 사용하여 `SecureString` 파라미터를 생성하고 Session Manager 세션 데이터를 암호화할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 

## 관리 및 거버넌스
<a name="integrations-aws-management-governance"></a>


|  |  | 
| --- |--- |
| AWS CloudFormation |  [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/)은 Amazon Web Services 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 하는 서비스입니다. Parameter Store는 동적 참조의 소스입니다. 동적 참조는 CloudFormation 스택 템플릿의 다른 서비스에서 저장 및 관리되는 외부 값을 지정하는 간결하면서 강력한 방법을 제공합니다.  자세히 알아보기 [동적 참조를 사용하여 템플릿 값 지정](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html)   | 
| AWS CloudTrail |  [CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)은 AWS 계정에 대한 거버넌스, 규정 준수, 운영 및 위험 감사 권한을 부여하는 데 도움이 되는 AWS 서비스입니다. 사용자, 역할 또는 AWS 서비스이(가) 수행하는 작업은 CloudTrail에 이벤트로 기록됩니다. 이벤트에는 AWS Management Console, AWS Command Line Interface(AWS CLI) 및 AWS SDK와 API에서 수행되는 작업이 포함됩니다. Systems Manager는 대부분의 Systems Manager API 직접 호출을 이벤트로 캡처하는 CloudTrail과 통합됩니다. 여기에는 Systems Manager 콘솔의 API 호출, Systems Manager API에 대한 호출 등이 포함됩니다.  자세히 알아보기 [AWS CloudTrail를 사용하여 AWS Systems Manager API 호출 로깅](monitoring-cloudtrail-logs.md)   | 
| Amazon CloudWatch Logs |  [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)로 사용하는 모든 시스템, 애플리케이션 및 AWS 서비스의 로그를 중앙 집중화할 수 있습니다. 그런 다음 로그를 보고, 특정 오류 코드 또는 패턴이 있는지 검색하고, 특정 필드를 기반으로 필터링하거나, 향후 분석을 위해 안전하게 보관할 수 있습니다. Systems Manager를 사용하면 SSM Agent, Run Command 및 Session Manager에 대한 로그를 CloudWatch Logs로 전송할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
| Amazon EventBridge |  [EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/)는 Amazon Web Services 리소스의 변경 사항을 설명하는 시스템 이벤트의 스트림을 거의 실시간으로 제공합니다. 신속하게 설정할 수 있는 단순 규칙을 사용하여 일치하는 이벤트를 검색하고 하나 이상의 대상 함수 또는 스트림으로 이를 라우팅할 수 있습니다. EventBridge는 운영 변경 사항이 발생할 때 이를 인식하게 됩니다. EventBridge는 이러한 운영 변경 사항에 대응하고 필요에 따라 시정 조치를 취합니다. 이러한 작업에는 환경에 대응을 위한 메시지 전송, 기능 활성화 및 상태 정보 캡처가 포함됩니다. Systems Manager에는 EventBridge에서 지원하는 여러 이벤트가 있어 해당 이벤트의 내용을 기반으로 작업을 수행할 수 있습니다.  자세히 알아보기 [Amazon EventBridge로 Systems Manager 이벤트 모니터링](monitoring-eventbridge-events.md)  Amazon EventBridge는 이벤트를 관리하는 데 선호되는 방법입니다. CloudWatch Events와 EventBridge는 기본 서비스 및 API가 동일하지만 EventBridge가 더 많은 기능을 제공합니다. CloudWatch 또는 EventBridge에서 변경한 내용은 각 콘솔에 반영됩니다. 자세한 내용은 [https://docs.aws.amazon.com/eventbridge/](https://docs.aws.amazon.com/eventbridge/)를 참조하세요.  | 
| AWS Config |  [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/)는 AWS 계정에 있는 AWS 리소스의 구성을 자세히 보여줍니다. 여기에는 리소스가 서로 관련되는 방식과 리소스가 구성된 방식이 포함됩니다. 이를 통해 구성과 관계가 시간 경과에 따라 어떻게 변하는지 확인할 수 있습니다. Systems Manager는 AWS Config과 통합되어 EC2 인스턴스에 대한 가시성을 확보하는 데 도움이 되는 여러 규칙을 제공합니다. 이러한 규칙은 Systems Manager에서 관리하는 EC2 인스턴스, 운영 체제 구성, 시스템 수준 업데이트, 설치된 애플리케이션, 네트워크 구성 등을 식별하는 데 도움이 됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Trusted Advisor |  [Trusted Advisor](https://aws.amazon.com/premiumsupport/technology/trusted-advisor/)는 AWS 모범 사례에 따라 리소스를 제공하는 데 도움이 되는 실시간 지침을 제공하는 온라인 도구입니다. Systems Manager는 Trusted Advisor를 호스팅하고 Explorer에서 Trusted Advisor 데이터를 볼 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Organizations |  [Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/)는 여러 AWS 계정를 사용자가 생성하고 중앙에서 관리하는 단일 조직으로 통합할 수 있는 계정 관리 서비스입니다. Organizations에는 계정 관리 및 통합 결제 기능이 포함되어 있어 비즈니스의 예산, 보안 및 규정 준수 요구 사항을 보다 잘 충족할 수 있습니다. AWS Systems Manager의 도구인 [Change Manager](change-manager.md)를 Organizations와 통합하면 위임된 관리자 계정을 사용하여 이 단일 계정을 통해 전체 조직에 대한 변경 요청, 변경 템플릿 및 승인을 관리할 수 있습니다. Organizations를 AWS Systems Manager의 도구인 [Inventory](systems-manager-inventory.md) 및 [Explorer](Explorer.md)와 통합하면 여러 AWS 리전 및 AWS 계정에서 인벤토리 및 운영 데이터(OpsData)를 집계할 수 있습니다. AWS Systems Manager의 도구인 Quick Setup과 Organizations를 통합하면 일반적인 서비스 설정 태스크가 자동화되고 조직 단위(OU) 전반에 모범 사례를 기반으로 서비스 구성이 배포됩니다.  | 

## 네트워킹 및 콘텐츠 전송
<a name="integrations-aws-networking-content-delivery"></a>


|  |  | 
| --- |--- |
| AWS PrivateLink |  [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)을(를) 통해 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 Direct Connect 연결 없이도 지원되는 AWS 서비스 및 VPC 엔드포인트 서비스에 Virtual Private Cloud(VPC)를 비공개로 연결할 수 있습니다. Systems Manager는 AWS PrivateLink를 사용하여 Systems Manager API에 연결하는 관리형 노드를 지원합니다. AWS PrivateLink는 관리형 노드, Systems Manager 및 Amazon EC2 간의 모든 네트워크 트래픽을 Amazon 네트워크로 제한하기 때문에 이를 통해 관리형 노드의 보안 태세가 향상됩니다. 즉, 관리형 노드가 인터넷에 액세스할 필요가 없습니다.  자세히 알아보기 [Systems Manager용 VPC 엔드포인트를 사용하여 EC2 인스턴스의 보안 개선](setup-create-vpc.md)    | 

## 분석
<a name="integrations-aws-analytics"></a>


|  |  | 
| --- |--- |
| Amazon Athena |  [Athena](https://docs.aws.amazon.com/athena/latest/ug/)는 표준 SQL을 사용하여 Amazon Simple Storage Service(Amazon S3)에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스입니다. AWS Management Console에서 몇 가지 작업을 수행하면 Amazon S3에 저장된 데이터에서 Athena를 가리키고, 표준 SQL을 사용하여 일회성 쿼리를 실행하고, 몇 초 안에 결과를 얻을 수 있습니다. Systems Manager Inventory가 Athena와 통합되어 여러 AWS 리전 및 AWS 계정에서 인벤터리 데이터를 쿼리하는 데 도움이 됩니다. Athena 통합은 리소스 데이터 동기화를 사용하므로 Systems Manager Inventory 콘솔의 **세부 정보 보기** 페이지에서 모든 관리형 노드의 인벤토리 데이터를 볼 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Glue |  [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/)는 완전 관리형 추출, 변환 및 로드(ETL) 서비스로서 간단하고 경제적으로 데이터를 분류, 정리, 보강하고, 다양한 데이터 스토어와 데이터 스트림 간에 안정적으로 이동할 수 있습니다. Systems Manager는 AWS Glue를 사용하여 S3 버킷의 Inventory 데이터를 크롤링합니다.  자세히 알아보기 [여러 리전 및 계정에서 인벤토리 데이터 쿼리](systems-manager-inventory-query.md)   | 
| Amazon Quick |  [Quick](https://docs.aws.amazon.com/quicksuite/latest/userguide/what-is.html)은 데이터를 사용하여 시각적 객체를 빌드하고, 일회성 분석을 수행하고, 비즈니스 관련 인사이트를 얻을 수 있는 비즈니스 분석 서비스입니다. AWS 데이터 소스를 자동으로 검색할 수 있으며 사용자의 데이터 소스도 사용할 수 있습니다. Systems Manager 리소스 데이터 동기화는 모든 관리형 노드에서 수집된 인벤토리 데이터를 단일 S3 버킷으로 전송합니다. Quick을 사용하여 집계된 데이터를 쿼리하고 분석할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 

## 애플리케이션 통합
<a name="integrations-aws-application-integration"></a>


|  |  | 
| --- |--- |
| Amazon Simple Notification Service(Amazon SNS) |  [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/)는 구독 중인 엔드포인트 또는 클라이언트에 메시지 전달 또는 전송을 조정 및 관리하는 웹 서비스입니다. Systems Manager는 Amazon SNS 알림으로 캡처할 수 있는 여러 서비스에 대한 상태를 생성합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/integrations-aws.html)  | 

## AWS Management Console
<a name="integrations-aws-management-console"></a>


|  |  | 
| --- |--- |
| AWS Resource Groups |  [Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/)는 AWS 리소스를 구성합니다. 리소스 그룹을 사용하여 많은 리소스에 대한 작업을 한 번에 관리, 모니터링 및 자동화할 수 있습니다. 관리형 노드, SSM 문서, 유지 관리 기간, Parameter Store 파라미터 및 패치 기준과 같은 Systems Manager 리소스 유형을 Resource Groups에 추가할 수 있습니다.  자세히 알아보기 [AWS Resource Groups란 무엇입니까?](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html)   | 

**Topics**
+ [컴퓨팅](#integrations-aws-compute)
+ [사물 인터넷(IoT)](#integrations-aws-IoT)
+ [스토리지](#integrations-aws-productgroup)
+ [개발자 도구](#integrations-aws-developer-tools)
+ [보안, 자격 증명 및 규정 준수](#integrations-aws-security-identify-compliance)
+ [암호화 및 PKI](#integrations-aws-cryptography-pki)
+ [관리 및 거버넌스](#integrations-aws-management-governance)
+ [네트워킹 및 콘텐츠 전송](#integrations-aws-networking-content-delivery)
+ [분석](#integrations-aws-analytics)
+ [애플리케이션 통합](#integrations-aws-application-integration)
+ [AWS Management Console](#integrations-aws-management-console)
+ [Amazon S3에서 스크립트 실행](integration-s3.md)
+ [Parameter Store 파라미터에서 AWS Secrets Manager 암호 참조](integration-ps-secretsmanager.md)
+ [Parameter Store SecureString 파라미터에 대한 AWS KMS 암호화](secure-string-parameter-kms-encryption.md)
+ [Amazon Elastic Kubernetes Service에서 AWS Secrets Manager 보안 암호 사용](integrate_eks.md)
+ [AWS Lambda 함수에서 Parameter Store 파라미터 사용](ps-integration-lambda-extensions.md)

# Amazon S3에서 스크립트 실행
<a name="integration-s3"></a>

이 섹션에서는 Amazon Simple Storage Service(Amazon S3)에서 스크립트를 다운로드하고 실행하는 방법을 설명합니다. 다음 주제에는 Amazon S3와 관련된 정보와 용어가 포함되어 있습니다. Amazon S3에 대한 자세한 내용은 [Amazon S3 설명서](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)를 참조하세요. Ansible Playbooks, Python, Ruby, PowerShell을 포함한 다양한 유형의 스크립트를 실행할 수 있습니다.

여러 스크립트가 포함된 디렉터리를 다운로드할 수도 있습니다. 디렉터리에서 기본 스크립트를 실행할 때 AWS Systems Manager는 디렉터리에 포함된 참조되는 스크립트도 모두 실행합니다.

다음은 Amazon S3로부터 스크립트 실행에 대한 중요 세부 정보입니다.
+ Systems Manager는 스크립트가 노드에서 실행 가능한지 확인하지 않습니다. 스크립트를 다운로드하여 실행하기 전에 노드에 필요한 소프트웨어가 설치되어 있는지 확인합니다. 아니면 AWS Systems Manager의 도구인 Run Command 또는 State Manager를 사용하여 소프트웨어를 설치한 다음, 스크립트를 다운로드해 실행하는 복합 문서를 생성할 수 있습니다.
+ 사용자, 역할 또는 그룹에 S3 버킷에서 읽는 데 필요한 AWS Identity and Access Management(IAM) 권한이 부여되었는지 확인합니다.
+ Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 인스턴스 프로파일에 `s3:ListBucket` 및 `s3:GetObject` 권한이 있는지 확인합니다. 인스턴스 프로파일에 이러한 권한이 없으면 시스템은 S3 버킷에서 스크립트를 다운로드하지 못합니다. 자세한 내용은 *IAM User Guide*의 [Using instance profiles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)를 참조하세요.

## Amazon S3에서 셸 스크립트 실행
<a name="integration-s3-shell"></a>

다음 정보에는 AWS Systems Manager 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 Amazon Simple Storage Service(Amazon S3)에서 Ruby 스크립트를 실행할 수 있는 절차가 포함되어 있습니다. 이 예시에서는 셸 스크립트가 사용되지만 다른 유형의 스크립트로 대체할 수 있습니다.

### Amazon S3에서 셸 스크립트 실행(콘솔)
<a name="integration-s3-ruby-console"></a>

**Amazon S3에서 셸 스크립트 실행**

1. [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)에서 AWS Systems Manager 콘솔을 엽니다.

1. 탐색 창에서 **Run Command**를 선택합니다.

1. **Run command**(실행 명령)를 선택합니다.

1. [**Command 문서(Command document)**] 목록에서 **`AWS-RunRemoteScript`**를 선택합니다.

1. **명령 파라미터**에서 다음을 수행합니다.
   + **소스 유형**에서 **S3**를 선택합니다.
   + [**소스 정보(Source Info)**] 텍스트 상자에 소스에 액세스하는 데 필요한 정보를 다음 형식으로 입력합니다. 각 *example resource placeholder*를 사용자의 정보로 바꿉니다.
**참고**  
https://s3.*aws-api-domain*을 버킷 URL로 교체합니다. **Objects**(객체) 탭에서 Amazon S3의 버킷 URL을 복사할 수 있습니다.

     ```
     {"path":"https://s3.aws-api-domain/path to script"}
     ```

     다음은 예입니다.

     ```
     {"path":"https://amzn-s3-demo-bucket.s3.us-east-2.amazonaws.com/scripts/shell/helloWorld.sh"}
     ```
   + [**명령줄(Command Line)**] 필드에 스크립트 실행을 위한 파라미터를 입력합니다. 다음 예를 참고하세요

     ```
     helloWorld.sh argument-1 argument-2
     ```
   + (옵션) **작업 디렉터리(Working Directory)** 필드에 스크립트를 다운로드하여 실행하려는 노드에 있는 디렉터리의 이름을 입력합니다.
   + (선택 사항) **Execution Timeout(실행 제한 시간)**에서 스크립트 명령 실행이 실패할 때까지 시스템이 기다리는 시간(단위: 초)을 지정합니다.

1. **대상** 섹션에서, 태그를 지정하거나, 수동으로 인스턴스나 엣지 디바이스를 선택하거나, 리소스 그룹을 지정하여 이 작업을 실행할 관리형 노드를 식별합니다.
**작은 정보**  
예상한 관리형 노드가 목록에 없으면 [관리형 노드 가용성 문제 해결](fleet-manager-troubleshooting-managed-nodes.md)에서 문제 해결 팁을 참조하세요.

1. **Other parameters**(다른 파라미터):
   + **Comment**(설명)에 명령에 대한 정보를 입력합니다.
   + **제한 시간(초)**에서 전체 명령 실행이 실패할 때까지 시스템이 기다리는 시간을 초 단위로 지정합니다.

1. **Rate control**(속도 제어)에서
   + **Concurrency**(동시성)에서 명령을 동시에 실행할 관리형 노드의 백분율 또는 개수를 지정합니다.
**참고**  
관리형 노드에 적용할 태그를 지정하거나, AWS 리소스 그룹을 지정하여 대상을 선택하였지만 대상으로 지정할 관리형 노드 수를 잘 모를 경우에는 백분율을 지정하여 동시에 문서를 실행할 수 있는 대상 수를 제한합니다.
   + **Error threshold**(오류 임계값)에서, 명령이 노드의 개수 또는 백분율에서 실패한 후 다른 관리형 노드에서 해당 명령의 실행을 중지할 시간을 지정합니다. 예를 들어 세 오류를 지정하면 네 번째 오류를 받았을 때 Systems Manager가 명령 전송을 중지합니다. 여전히 명령을 처리 중인 관리형 노드도 오류를 전송할 수 있습니다.

1. (선택 사항) **Output options**(출력 옵션)에서 명령 출력을 파일에 저장하려면 **Write command output to an S3 bucket**(S3 버킷에 명령 출력 쓰기) 상자를 선택합니다. 상자에 버킷 및 접두사(폴더) 이름을 입력합니다.
**참고**  
데이터를 S3 버킷에 쓰는 기능을 부여하는 S3 권한은 이 작업을 수행하는 IAM 사용자의 권한이 아니라 인스턴스에 할당된 인스턴스 프로파일(EC2 인스턴스용) 또는 IAM 서비스 역할(하이브리드 정품 인증 시스템)의 권한입니다. 자세한 내용은 [Systems Manager에 필요한 인스턴스 권한 구성](setup-instance-permissions.md)이나 [하이브리드 환경을 위한 IAM 서비스 역할 생성](hybrid-multicloud-service-role.md)을 참조하세요. 또한 지정된 S3 버킷이 다른 AWS 계정에 있는 경우 관리형 노드와 연결된 인스턴스 프로파일 또는 IAM 서비스 역할은 해당 버킷에 쓸 수 있는 권한이 있어야 합니다.

1. **SNS notifications**(SNS 알림) 섹션에서, 명령 실행 상태에 대한 알림이 전송되도록 하려면 **Enable SNS notifications**(SNS 알림 활성화) 확인란을 선택합니다.

   Run Command에 대한 Amazon SNS 알림 구성에 대한 자세한 내용은 [Amazon SNS 알림을 사용하여 Systems Manager 상태 변경 모니터링](monitoring-sns-notifications.md) 섹션을 참조하세요.

1. **Run**(실행)을 선택합니다.

### Amazon S3에서 셸 스크립트 실행(명령줄)
<a name="integration-s3-shell-cli"></a>

1. 아직 하지 않은 경우 AWS Command Line Interface(AWS CLI)을 설치하고 구성합니다.

   자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

1. 다음 명령을 실행합니다. 각 *example resource placeholder*를 사용자의 정보로 바꿉니다.
**참고**  
https://s3.*aws-api-domain*/*script path*를 버킷에 대한 URL로 바꿉니다. **Objects**(객체) 탭에서 Amazon S3의 버킷 URL을 복사할 수 있습니다.

------
#### [ Linux & macOS ]

   ```
   aws ssm send-command \
       --document-name "AWS-RunRemoteScript" \
       --output-s3-bucket-name "amzn-s3-demo-bucket" \
       --output-s3-key-prefix "key-prefix" \
       --targets "Key=InstanceIds,Values=instance-id" \
       --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/script path\"}"],"commandLine":["script name and arguments"]}'
   ```

------
#### [ Windows ]

   ```
   aws ssm send-command ^
       --document-name "AWS-RunRemoteScript" ^
       --output-s3-bucket-name "amzn-s3-demo-bucket" ^
       --output-s3-key-prefix "key-prefix" ^
       --targets "Key=InstanceIds,Values=instance-id" ^
       --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.aws-api-domain/script path\"}',"commandLine"="script name and arguments"
   ```

------
#### [ PowerShell ]

   ```
   Send-SSMCommand `
       -DocumentName "AWS-RunRemoteScript" `
       -OutputS3BucketName "amzn-s3-demo-bucket" `
       -OutputS3KeyPrefix "key-prefix" `
       -Target @{Key="InstanceIds";Values=@("instance-id")} `
       -Parameter @{
           sourceType = "S3"; 
           sourceInfo = '{"path": "s3://bucket-name/path/to/script"}'; 
           commandLine = "script name and arguments"
       }
   ```

------

# Parameter Store 파라미터에서 AWS Secrets Manager 암호 참조
<a name="integration-ps-secretsmanager"></a>

AWS Secrets Manager를 사용하면 자격 증명, 암호 및 라이선스 키 등과 같이 중요한 구성 데이터를 정리 및 관리할 수 있습니다. AWS Systems Manager의 도구인 Parameter Store는 이제 Secrets Manager에 통합되어 Parameter Store 파라미터에 대한 참조를 이미 지원하는 다른 AWS 서비스를 사용하는 경우 Secrets Manager 비밀을 가져올 수 있습니다. 이러한 서비스에는 Amazon Elastic Compute Cloud(Amazon EC2), Amazon Elastic Container Service(Amazon ECS), AWS Lambda, CloudFormation, AWS CodeBuild, AWS CodeDeploy 및 기타 Systems Manager 도구가 포함됩니다. Parameter Store를 통해 Secrets Manager 암호를 참조하면 코드 및 구성 스크립트에서 일관성 있고 안전하게 암호 및 참조 데이터를 호출하고 사용할 수 있는 프로세스가 마련됩니다.

Secrets Manager에 대한 자세한 내용은 *AWS Secrets Manager User Guide*의 [What Is AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)를 참조하세요.

## 제한 사항
<a name="integration-ps-secretsmanager-restrictions"></a>

Parameter Store를 사용하여 Secrets Manager 암호를 참조할 때는 다음과 같은 제한 사항이 있습니다.
+ [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) 및 [GetParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameters.html) API 작업을 사용하여 Secrets Manager 보안 암호만 검색할 수 있습니다. [DescribeParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeParameters.html), [GetParametersByPath](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParametersByPath.html) 등의 고급 쿼리 API 작업과 수정 작업은 Secrets Manager에 사용할 수 없습니다.
+ AWS Command Line Interface(AWS CLI), AWS Tools for Windows PowerShell 및 SDK에서 Parameter Store를 사용하여 암호를 검색할 수 있습니다.
+ Parameter Store의 Secrets Manager 시크릿의 접두사는 `/aws/reference/secretsmanager`이어야 합니다. 예를 들어, 다음과 같습니다.

  `/aws/reference/secretsmanager/CFCreds1`

  `/aws/reference/secretsmanager/myapp/db/password`
+ Parameter Store는 Secrets Manager 보안 암호에 연결된 AWS Identity and Access Management(IAM) 정책을 준수합니다. 예를 들어 사용자 1에게 암호 A에 대한 액세스 권한이 없으면 사용자 1은 Parameter Store를 사용하여 암호 A를 검색할 수 없습니다.
+ Secrets Manager 암호를 참조하는 파라미터는 Parameter Store의 버전 관리 기능이나 기록 기능을 사용할 수 없습니다.
+ Parameter Store는 Secrets Manager 버전 단계를 준수합니다. 버전 단계를 참조할 때는 문자, 숫자, 마침표(.), 하이픈(-) 또는 밑줄(\$1)을 사용합니다. 버전 단계에 그 밖의 모든 기호를 지정하면 참조가 실패하게 됩니다.

## Parameter Store를 사용하여 Secrets Manager 보안 암호를 참조하는 방법
<a name="integration-ps-secretsmanager-create"></a>

다음 절차에서는 Parameter Store API를 사용하여 Secrets Manager 암호를 참조하는 방법을 설명합니다. 여기서는 *AWS Secrets Manager User Guide*의 다른 절차를 참조합니다.

**참고**  
시작하기 전에 Parameter Store 파라미터에서 Secrets Manager 암호를 참조할 권한이 있는지 확인합니다. Secrets Manager 및 Systems Manager에서 관리자 권한이 있는 경우 Parameter Store API를 사용하여 보안 암호를 참조하거나 검색할 수 있습니다. Parameter Store 파라미터에 Secrets Manager 암호를 참조했는데 그 암호에 액세스할 권한이 없으면 참조가 실패합니다. 자세한 내용은 *AWS Secrets Manager User Guide*의 [Authentication and access control for AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)를 참조하세요.

**중요**  
Parameter Store는 Secrets Manager 암호 참조를 위한 패스스루 서비스의 역할을 합니다. Parameter Store는 암호에 대한 데이터 또는 메타데이터를 보존하지 않습니다. 참조는 상태 비저장입니다.

**Parameter Store를 사용하여 Secrets Manager 보안 암호를 참조하려면**

1. Secrets Manager에서 보안 암호를 생성합니다. 자세한 내용은 [AWS Secrets Manager로 암호 생성 및 관리](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)를 참조하세요.

1. AWS CLI, AWS Tools for Windows PowerShell 또는 SDK를 사용하여 암호를 참조합니다. Secrets Manager 암호를 참조할 때는 이름이 예약된 경로인 `/aws/reference/secretsmanager/`로 시작되어야 합니다. 이 경로를 지정하면 Parameter Store가 아니라 Secrets Manager에서 암호를 검색해야 한다는 것을 Systems Manager에서 알게 됩니다. 다음은 Parameter Store를 사용하여 Secrets Manager 보안 암호 `CFCreds1` 및 `DBPass`를 올바르게 참조하는 몇 가지 예제 이름입니다.
   + `/aws/reference/secretsmanager/CFCreds1`
   + `/aws/reference/secretsmanager/DBPass`

   다음은 Secrets Manager에 저장된 액세스 키와 보안 키를 참조하는 Java 코드 예제입니다. 이 코드 예제는 Amazon DynamoDB 클라이언트를 설정합니다. 이 코드는 Parameter Store에서 구성 데이터와 자격 증명을 검색합니다. 구성 데이터는 Parameter Store에 문자열 파라미터로 저장되고, 자격 증명은 Secrets Manager에 저장됩니다. 구성 데이터와 자격 증명이 별도의 서비스에 저장되지만 두 데이터 집합 모두 Parameter Store에서 `GetParameter` API를 사용하여 액세스할 수 있습니다.

   ```
   /**
   * Initialize Systems Manager client with default credentials
   */
   AWSSimpleSystemsManagement ssm = AWSSimpleSystemsManagementClientBuilder.defaultClient();
    
   ...
    
   /**
   * Example method to launch DynamoDB client with credentials different from default
   * @return DynamoDB client
   */
   AmazonDynamoDB getDynamoDbClient() {
       //Getting AWS credentials from Secrets Manager using GetParameter
       BasicAWSCredentials differentAWSCreds = new BasicAWSCredentials(
               getParameter("/aws/reference/secretsmanager/access-key"),
               getParameter("/aws/reference/secretsmanager/secret-key"));
    
       //Initialize the DynamoDB client with different credentials
       final AmazonDynamoDB client = AmazonDynamoDBClient.builder()
               .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds))
               .withRegion(getParameter("region")) //Getting configuration from Parameter Store
               .build();
       return client;
   }
    
   /**
   * Helper method to retrieve parameter value
   * @param parameterName identifier of the parameter
   * @return decrypted parameter value
   */
   public GetParameterResult getParameter(String parameterName) {
       GetParameterRequest request = new GetParameterRequest();
       request.setName(parameterName);
       request.setWithDecryption(true);
       return ssm.newGetParameterCall().call(request).getParameter().getValue();
   }
   ```

   여기 몇 가지 AWS CLI 예제가 있습니다. `aws secretsmanager list-secrets` 명령을 사용하여 보안 암호의 이름을 찾습니다.

   **AWS CLI 예제 1: 암호의 이름을 사용하여 참조**

------
#### [ Linux & macOS ]

   ```
   aws ssm get-parameter \
       --name /aws/reference/secretsmanager/s1-secret \
       --with-decryption
   ```

------
#### [ Windows ]

   ```
   aws ssm get-parameter ^
       --name /aws/reference/secretsmanager/s1-secret ^
       --with-decryption
   ```

------

   명령은 다음과 같은 정보를 반환합니다.

   ```
   {
       "Parameter": {
           "Name": "/aws/reference/secretsmanager/s1-secret",
           "Type": "SecureString",
           "Value": "Fl*MEishm!al875",
           "Version": 0,
           "SourceResult": 
                 "{
                      \"CreatedDate\": 1526334434.743,
                      \"Name\": \"s1-secret\",
                      \"VersionId\": \"aaabbbccc-1111-222-333-123456789\",
                      \"SecretString\": \"Fl*MEishm!al875\",
                      \"VersionStages\": [\"AWSCURRENT\"],
                      \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                  }"
           "LastModifiedDate": 2018-05-14T21:47:14.743Z,
           "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                  E18LRP",
         }
   }
   ```

   **AWS CLI 예제 2: 버전 ID를 포함하는 참조**

------
#### [ Linux & macOS ]

   ```
   aws ssm get-parameter \
       --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 \
       --with-decryption
   ```

------
#### [ Windows ]

   ```
   aws ssm get-parameter ^
       --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 ^
       --with-decryption
   ```

------

   명령은 다음과 같은 정보를 반환합니다.

   ```
   {
       "Parameter": {
           "Name": "/aws/reference/secretsmanager/s1-secret",
           "Type": "SecureString",
           "Value": "Fl*MEishm!al875",
           "Version": 0,
           "SourceResult": 
                 "{
                      \"CreatedDate\": 1526334434.743,
                      \"Name\": \"s1-secret\",
                      \"VersionId\": \"11111-aaa-bbb-ccc-123456789\",
                      \"SecretString\": \"Fl*MEishm!al875\",
                      \"VersionStages\": [\"AWSCURRENT\"],
                      \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                  }"
           "Selector": ":11111-aaa-bbb-ccc-123456789"
         }
           "LastModifiedDate": 2018-05-14T21:47:14.743Z,
           "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                  E18LRP",
   }
   ```

   **AWS CLI 예제 3: 버전 단계를 포함하는 참조**

------
#### [ Linux & macOS ]

   ```
   aws ssm get-parameter \
       --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT \
       --with-decryption
   ```

------
#### [ Windows ]

   ```
   aws ssm get-parameter ^
       --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT ^
       --with-decryption
   ```

------

   명령은 다음과 같은 정보를 반환합니다.

   ```
   {
       "Parameter": {
           "Name": "/aws/reference/secretsmanager/s1-secret",
           "Type": "SecureString",
           "Value": "Fl*MEishm!al875",
           "Version": 0,
           "SourceResult": 
                 "{
                      \"CreatedDate\": 1526334434.743,
                      \"Name\": \"s1-secret\",
                      \"VersionId\": \"11111-aaa-bbb-ccc-123456789\",
                      \"SecretString\": \"Fl*MEishm!al875\",
                      \"VersionStages\": [\"AWSCURRENT\"],
                      \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                  }"
           "Selector": ":AWSCURRENT"
         }
         "LastModifiedDate": 2018-05-14T21:47:14.743Z,
         "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                   E18LRP",
   }
   ```

# AWS Systems Manager Parameter Store SecureString 파라미터에 대한 AWS KMS 암호화
<a name="secure-string-parameter-kms-encryption"></a>

AWS Systems Manager Parameter Store를 사용하면 일반 텍스트 파라미터 이름과 암호화된 파라미터 값이 있는 [SecureString 파라미터](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html#what-is-a-parameter)를 생성할 수 있습니다. Parameter Store에서는 AWS KMS를 사용하여 `SecureString` 파라미터의 파라미터 값을 암호화하고 해독합니다.

Parameter Store를 사용하면 데이터를 값이 있는 파라미터로 생성, 저장, 관리할 수 있습니다. Parameter Store에서 파라미터를 생성한 후, 직접 설계한 정책과 권한이 적용되는 여러 애플리케이션 및 서비스에서 이 파라미터를 사용할 수 있습니다. 파라미터 값을 변경해야 하는 경우, 무수한 소스를 변경하고 관리하느라 오류가 발생하기 쉬운 방식 대신 한 인스턴스만 변경하면 됩니다. Parameter Store에서는 파라미터 이름에 대한 계층 구조를 지원하므로 파라미터를 특정 용도로 한정할 수 있습니다.

민감한 데이터를 관리하기 위해 `SecureString` 파라미터를 생성할 수 있습니다. Parameter Store에서는 `SecureString` 파라미터를 생성하거나 변경할 때 AWS KMS keys를 사용하여 해당 파라미터의 값을 암호화합니다. 또한 파라미터에 액세스할 때 KMS 키를 사용하여 파라미터 값을 해독합니다. Parameter Store에서 계정을 위해 생성한 [AWS 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)를 사용하거나 고유한 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 지정할 수 있습니다.

**중요**  
Parameter Store는 [대칭 KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks)만 지원합니다. [비대칭 KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 사용하여 파라미터를 암호화할 수 없습니다. KMS 키가 대칭인지 비대칭인지 확인하는 데 도움이 필요한 경우 *AWS Key Management Service 개발자 안내서*의 [다양한 키 유형 식별](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html)을 참조하세요.

Parameter Store는 **표준 및 **고급 계층의 `SecureString` 파라미터를 지원합니다. 표준 파라미터(4,096바이트를 초과할 수 없음)는 사용자가 지정한 KMS 키로 직접 암호화 및 해독됩니다. 고급 `SecureString` 파라미터를 암호화 및 해독하기 위해 Parameter Store는 [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)에서 봉투 암호화를 사용합니다. 표준 `SecureString` 파라미터를 고급 파라미터로 변환할 수 있지만, 고급 파라미터를 표준 파라미터로 변환할 수는 없습니다. 표준 파라미터와 고급 `SecureString` 파라미터의 차이점에 대한 자세한 내용은 [파라미터 티어 관리](parameter-store-advanced-parameters.md) 섹션을 참조하세요.

**Topics**
+ [표준 SecureString 파라미터 보호](#kms-encryption-securestring-standard)
+ [고급 SecureString 파라미터 보호](#kms-encryption-securestring-advanced)
+ [파라미터 값 암호화 및 해독 권한 설정](#parameter-policy-kms-encryption)
+ [Parameter Store 암호화 컨텍스트](#parameter-store-kms-encryption-context)
+ [Parameter Store의 KMS 키 문제 해결](#parameter-store-kms-cmk-troubleshooting)

## 표준 SecureString 파라미터 보호
<a name="kms-encryption-securestring-standard"></a>

Parameter Store는 어떠한 암호화 작업도 수행하지 않습니다. 그 대신 AWS KMS를 사용하여 `SecureString` 파라미터 값을 암호화하고 해독합니다. 표준 `SecureString` 파라미터 값을 생성하거나 변경하면 Parameter Store가 AWS KMS [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 작업을 호출합니다. 이 작업은 KMS 키를 사용하여 [데이터 키](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html)를 생성하는 대신 대칭 암호화 KMS 키를 사용하여 직접 파라미터 값을 암호화합니다.

Parameter Store에서 파라미터 값을 암호화하는 데 사용할 KMS 키를 선택할 수 있습니다. KMS 키를 지정하지 않으면Parameter Store는 Systems Manager가 계정에서 자동으로 생성하는 AWS 관리형 키를 사용합니다. 이 KMS 키에는 별칭 `aws/ssm`이 있습니다.

계정의 기본 `aws/ssm` KMS 키를 보려면 AWS KMS API에서 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 작업을 사용합니다. 다음 예에서는 AWS Command Line Interface(AWS CLI)의 `describe-key` 명령을 `aws/ssm` 별칭 이름과 함께 사용합니다.

```
aws kms describe-key \
    --key-id alias/aws/ssm
```

표준 `SecureString` 파라미터를 생성하려면 Systems Manager API에서 [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) 작업을 사용합니다. `Tier` 파라미터를 생략하거나 기본값 `Standard`를 지정합니다. 값이 `SecureString`인 `Type` 파라미터를 포함합니다. KMS 키를 지정하려면 `KeyId` 파라미터를 사용합니다. 기본값은 계정 `aws/ssm`에 대한 AWS 관리형 키입니다.

그러면 Parameter Store에서 KMS 키와 일반 텍스트 파라미터 값을 사용하여 AWS KMS `Encrypt` 작업을 호출합니다. AWS KMS는 암호화된 파라미터 값을 반환하고 Parameter Store에서는 이를 파라미터 이름과 함께 저장합니다.

다음 예제에서는 Systems Manager의 [put-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html) 명령과 AWS CLI의 `--type` 파라미터를 사용하여 `SecureString` 파라미터를 생성합니다. 이 명령은 선택 항목인 `--tier` 및 `--key-id` 파라미터를 생략하므로 Parameter Store는 표준 `SecureString` 파라미터를 생성하고 이를 AWS 관리형 키 아래에서 암호화합니다.

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString
```

다음 유사한 예에서는 `--key-id` 파라미터를 사용하여 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 지정합니다. 이 예에서는 KMS 키 ID를 사용하여 KMS 키를 식별하지만 유효한 KMS 키 식별자를 사용할 수 있습니다. 이 명령은 `Tier` 파라미터(`--tier`)를 생략하므로 Parameter Store가 고급 `SecureString` 파라미터가 아니라 표준 파라미터를 생성합니다.

```
aws ssm put-parameter \
    --name param1 \
    --value "secret" \
    --type SecureString \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
```

Parameter Store에서 `SecureString` 파라미터를 가져올 때 값이 암호화됩니다. 파라미터를 얻으려면 Systems Manager API의 [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) 작업을 사용합니다.

다음 예제에서는 AWS CLI에서 Systems Manager [get-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) 명령을 사용하여 값을 해독하지 않고 Parameter Store에서 `MyParameter` 파라미터를 가져옵니다.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

파라미터 값을 반환하기 전에 값을 해독하려면 `GetParameter`의 `WithDecryption` 파라미터를 `true`로 설정합니다. `WithDecryption`을 사용하면 Parameter Store는 사용자 대신 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출하여 파라미터 값을 해독합니다. 따라서 `GetParameter` 요청은 다음 예제와 같이 일반 텍스트 값을 가지는 파라미터를 반환합니다.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

다음 워크플로는 Parameter Store에서 KMS 키를 사용하여 표준 `SecureString` 파라미터를 암호화하고 해독하는 방식을 보여줍니다.

### 표준 파라미터 암호화
<a name="kms-encryption-securestring-standard-encrypt"></a>

1. `PutParameter`를 사용하여 `SecureString` 파라미터를 생성하면 Parameter Store가 AWS KMS로 `Encrypt` 요청을 보냅니다. 이 요청은 일반 텍스트 파라미터 값, 사용자가 선택한 KMS 키, [Parameter Store 암호화 컨텍스트](#parameter-store-kms-encryption-context)를 포함합니다. AWS KMS로 전송하는 동안 `SecureString` 파라미터의 일반 텍스트 값은 TLS(전송 계층 보안)에 의해 보호됩니다.

1. AWS KMS는 파라미터 값을 지정된 KMS 키와 암호화 컨텍스트로 암호화합니다. 암호화 텍스트는 Parameter Store에 반환되고, 여기에서 파라미터 이름과 암호화된 값이 저장됩니다.  
![\[표준 SecureString 파라미터 값 암호화\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/service-pstore-standard.png)

### 표준 파라미터 복호화
<a name="kms-encryption-securestring-standard-decrypt"></a>

1. `GetParameter` 요청에 `WithDecryption` 파라미터를 포함하면 Parameter Store는 암호화된 `SecureString` 파라미터 값 및 [Parameter Store 암호화 컨텍스트](#parameter-store-kms-encryption-context)와 함께 `Decrypt` 요청을 AWS KMS로 전송합니다.

1. AWS KMS는 동일한 KMS 키와 제공된 암호화 컨텍스트를 사용하여 암호화된 값을 해독합니다. 일반 텍스트(해독된) 파라미터 값을 Parameter Store에 반환합니다. 전송 중 일반 텍스트 데이터는 TLS에 의해 보호됩니다.

1. Parameter Store에서는 일반 텍스트 파라미터 값을 `GetParameter` 응답으로 반환합니다.

## 고급 SecureString 파라미터 보호
<a name="kms-encryption-securestring-advanced"></a>

`PutParameter`를 사용하여 고급 `SecureString` 파라미터를 생성하는 경우 Parameter Store에서는 AWS Encryption SDK 및 대칭 암호화 AWS KMS key가 있는 [봉투 암호화](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption)를 사용하여 파라미터 값을 보호합니다. 각 고급 파라미터 값은 고유한 데이터 키로 암호화되고, 데이터 키는 KMS 키로 암호화됩니다. 계정(`aws/ssm`)의 [AWS 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) 또는 모든 고객 관리형 키를 사용할 수 있습니다.

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)는 업계 표준 및 모범 사례를 사용하여 데이터를 암호화하고 해독할 수 있게 도와주는 오픈 소스 클라이언트 측 라이브러리입니다. 이 SDK는 다양한 플랫폼과 명령줄 인터페이스를 비롯해 다양한 프로그래밍 언어에서 지원됩니다. 소스 코드를 볼 수 있으며 GitHub에서 개발에 기여할 수 있습니다.

각 `SecureString` 파라미터 값에 대해 Parameter Store는 AWS Encryption SDK를 호출하여 AWS KMS가 생성하는 고유한 데이터 키([GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html))로 파라미터 값을 암호화합니다. AWS Encryption SDK는 암호화된 파라미터 값과 고유한 데이터 키의 암호화된 사본을 포함하는 [암호화된 메시지](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message)를 Parameter Store로 반환합니다. Parameter Store는 `SecureString` 파라미터 값에 전체 암호화된 메시지를 저장합니다. 그런 다음 사용자가 고급 `SecureString` 파라미터 값을 가져오면 Parameter Store가 AWS Encryption SDK를 사용하여 파라미터 값을 해독합니다. 이를 위해 AWS KMS를 호출하여 암호화된 데이터 키를 해독해야 합니다.

고급 `SecureString` 파라미터를 생성하려면 Systems Manager API에서 [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) 작업을 사용합니다. `Tier` 파라미터의 값을 `Advanced`로 설정합니다. 값이 `SecureString`인 `Type` 파라미터를 포함합니다. KMS 키를 지정하려면 `KeyId` 파라미터를 사용합니다. 기본값은 계정 `aws/ssm`에 대한 AWS 관리형 키입니다.

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced
```

다음 유사한 예에서는 `--key-id` 파라미터를 사용하여 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 지정합니다. 예제에서는 KMS 키의 Amazon 리소스 이름(ARN)을 사용하지만 사용자는 유효한 KMS 키 식별자를 모두 사용할 수 있습니다.

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced \
    --key-id arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

Parameter Store에서 `SecureString` 파라미터를 가져오면 AWS Encryption SDK가 반환한 암호화된 메시지가 해당 값입니다. 파라미터를 얻으려면 Systems Manager API의 [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) 작업을 사용합니다.

다음 예제에서는 Systems Manager `GetParameter` 작업을 사용하여 값을 해독하지 않고 Parameter Store에서 `MyParameter` 파라미터를 가져옵니다.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

파라미터 값을 반환하기 전에 값을 해독하려면 `GetParameter`의 `WithDecryption` 파라미터를 `true`로 설정합니다. `WithDecryption`을 사용하면 Parameter Store는 사용자 대신 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출하여 파라미터 값을 해독합니다. 따라서 `GetParameter` 요청은 다음 예제와 같이 일반 텍스트 값을 가지는 파라미터를 반환합니다.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

고급 `SecureString` 파라미터를 표준 파라미터로 변환할 수 없지만, 표준 `SecureString` 파라미터를 고급 파라미터로 변환할 수는 있습니다. 표준 `SecureString` 파라미터를 고급 `SecureString` 파라미터로 변환하려면 `PutParameter` 작업에 `Overwrite` 파라미터를 사용합니다. `Type`은 `SecureString`이고 `Tier` 값은 `Advanced`이어야 합니다. 고객 관리형 키를 지정하는 `KeyId` 파라미터는 선택 사항입니다. 이를 생략하면 Parameter Store가 계정의 AWS 관리형 키를 사용합니다. 다른 KMS 키를 사용하여 표준 파라미터를 암호화했더라도 보안 주체에게 사용 권한이 있는 모든 KMS 키를 사용할 수 있습니다.

`Overwrite` 파라미터를 사용하면 Parameter Store는 AWS Encryption SDK를 사용하여 파라미터 값을 암호화합니다. 그런 다음 Parameter Store에 새로 암호화된 메시지를 저장합니다.

```
aws ssm put-parameter \
    --name myStdParameter \
    --value "secret_value"  \
    --type SecureString \
    --tier Advanced \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --overwrite
```

다음 워크플로는 Parameter Store에서 KMS 키를 사용하여 고급 `SecureString` 파라미터를 암호화하고 해독하는 방식을 보여줍니다.

### 고급 파라미터 암호화
<a name="kms-encryption-securestring-advanced-encrypt"></a>

1. `PutParameter`를 사용하여 고급 `SecureString` 파라미터를 생성하는 경우 Parameter Store는 AWS Encryption SDK 및 AWS KMS를 사용하여 파라미터 값을 암호화합니다. Parameter Store는 파라미터 값, 지정한 KMS 키, [Parameter Store 암호화 컨텍스트](#parameter-store-kms-encryption-context)와 함께 AWS Encryption SDK를 호출합니다.

1. AWS Encryption SDK는 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 요청을 지정한 KMS 키 식별자와 Parameter Store 암호화 컨텍스트와 함께 AWS KMS로 전송합니다. AWS KMS는 고유한 데이터 키의 사본 2개, 즉 일반 텍스트 사본 1개와 KMS 키로 암호화된 사본 1개를 반환합니다. (암호화 컨텍스트는 데이터 키를 암호화할 때 사용됩니다.)

1. AWS Encryption SDK는 일반 텍스트 데이터 키를 사용하여 파라미터 값을 암호화합니다. 암호화된 파라미터 값, 암호화된 데이터 키, Parameter Store 암호화 컨텍스트를 포함하는 기타 데이터를 포함한 [암호화된 메시지](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message)를 반환합니다.

1. Parameter Store는 암호화된 메시지를 파라미터 값으로 저장합니다.  
![\[고급 SecureString 파라미터 값 암호화\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/service-pstore-advanced.png)

### 고급 파라미터 해독
<a name="kms-encryption-securestring-advanced-decrypt"></a>

1. `GetParameter` 요청에 `WithDecryption` 파라미터를 포함시켜 고급 `SecureString` 파라미터를 가져올 수 있습니다. 그러면 Parameter Store가 [암호화된 메시지](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message)를 파라미터 값에서 AWS Encryption SDK의 해독 메서드로 전달합니다.

1. AWS Encryption SDK가 KMS AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출합니다. 이 작업이 암호화된 데이터 키와 Parameter Store 암호화 컨텍스트를 암호화된 메시지로부터 전달합니다.

1. AWS KMS는 KMS 키와 Parameter Store 암호화 컨텍스트를 사용하여 암호화된 데이터 키를 해독합니다. 그런 다음 일반 텍스트(해독된) 데이터 키를 AWS Encryption SDK에 반환합니다.

1. AWS Encryption SDK는 일반 텍스트 데이터 키를 사용하여 파라미터 값을 해독합니다. 그런 다음 일반 텍스트 파라미터 값을 Parameter Store에 반환합니다.

1. Parameter Store는 암호화 컨텍스트를 확인하고 `GetParameter` 응답에서 일반 텍스트 파라미터 값을 반환합니다.

## 파라미터 값 암호화 및 해독 권한 설정
<a name="parameter-policy-kms-encryption"></a>

표준 `SecureString` 파라미터 값을 암호화하려면 사용자에게 `kms:Encrypt` 권한이 필요합니다. 고급 `SecureString` 파라미터 값을 암호화하려면 사용자에게 `kms:GenerateDataKey` 권한이 필요합니다. 어떤 유형이든 `SecureString` 파라미터 값을 해독하려면 사용자에게 `kms:Decrypt` 권한이 필요합니다.

AWS Identity and Access Management(IAM) 정책을 사용하여 사용자가 Systems Manager `PutParameter` 및 `GetParameter` 작업을 호출하는 권한을 허용하거나 거부할 수 있습니다.

고객 관리형 키를 사용하여 `SecureString` 파라미터 값을 암호화하는 경우 IAM 정책 및 키 정책을 사용하여 암호화 및 해독 권한을 관리할 수 있습니다. 그러나 기본 `aws/ssm` KMS 키에 대한 액세스 제어 정책은 수립할 수 없습니다. 고객 관리형 키 액세스 제어에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [KMS 키 액세스 및 권한](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)을 참조하세요.

다음 예제는 표준 `SecureString` 파라미터용으로 고안된 IAM 정책을 보여줍니다. 이 정책은 사용자가 `FinancialParameters` 경로의 모든 파라미터에 대해 Systems Manager `PutParameter` 작업을 호출하도록 허용합니다. 또한 이 정책을 통해 사용자는 예시 고객 관리 키에 대해 AWS KMS `Encrypt` 작업을 호출할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/FinancialParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

다음 예제는 고급 `SecureString` 파라미터용으로 고안된 IAM 정책을 보여줍니다. 이 정책은 사용자가 `ReservedParameters` 경로의 모든 파라미터에 대해 Systems Manager `PutParameter` 작업을 호출하도록 허용합니다. 또한 이 정책을 통해 사용자는 예시 고객 관리 키에 대해 AWS KMS `GenerateDataKey` 작업을 호출할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ReservedParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ]
}
```

------

마지막 예제는 표준 또는 고급 `SecureString` 파라미터에 사용할 수 있는 IAM 정책입니다. 이 정책은 `ITParameters` 경로의 모든 파라미터에 대해 Systems Manager `GetParameter` 작업(및 관련 작업)을 호출하도록 허용합니다. 또한 이 정책을 통해 사용자는 예시 고객 관리 키에 대해 AWS KMS `Decrypt` 작업을 호출할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ITParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

## Parameter Store 암호화 컨텍스트
<a name="parameter-store-kms-encryption-context"></a>

*암호화 컨텍스트*는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우 AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

암호화 컨텍스트를 사용하여 감사 레코드 및 로그에서 암호화 작업을 식별할 수도 있습니다. 암호화 컨텍스트는 로그(예: [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 로그)에 일반 텍스트로 표시됩니다.

AWS Encryption SDK도 암호화 컨텍스트도 취하지만 취급 방법이 다릅니다. Parameter Store는 암호화 메서드에 암호화 컨텍스트를 제공합니다. AWS Encryption SDK는 암호화 컨텍스트를 암호화된 데이터에 암호화 방식으로 바인딩합니다. 또한 반환하는 암호화된 메시지의 헤더에 암호화 컨텍스트를 일반 텍스트로 포함시킵니다. 하지만 AWS KMS와 달리 AWS Encryption SDK 해독 메서드는 암호화 컨텍스트를 입력으로 취하지 않습니다. 대신, AWS Encryption SDK는 데이터를 해독할 때 암호화 컨텍스트를 암호화된 메시지에서 가져옵니다. Parameter Store는 일반 텍스트 파라미터 값을 사용자에게 반환하기 전에 암호화 컨텍스트가 예상된 값을 포함하는지 확인합니다.

Parameter Store에서는 암호화 작업에서 다음 암호화 컨텍스트를 사용합니다.
+ 키: `PARAMETER_ARN`
+ 값: 암호화 중인 파라미터의 Amazon 리소스 이름(ARN)입니다.

암호화 컨텍스트의 형식은 다음과 같습니다.

```
"PARAMETER_ARN":"arn:aws:ssm:region-id:account-id:parameter/parameter-name"
```

예를 들어 Parameter Store에서는 예제 AWS 계정 계정 및 리전에서 `MyParameter` 파라미터를 암호화하고 해독하는 호출에 이 암호화 컨텍스트를 포함합니다.

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter"
```

파라미터가 Parameter Store 계층 경로에 있는 경우, 그 경로와 이름도 암호화 컨텍스트에 포함됩니다. 예를 들어, 이 암호화 컨텍스트는 예제 AWS 계정 및 영역에서 `/ReadableParameters` 경로의 `MyParameter` 파라미터를 암호화 및 해독할 때 사용됩니다.

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/ReadableParameters/MyParameter"
```

Systems Manager `GetParameter` 작업이 반환하는 올바른 암호화 컨텍스트와 암호화된 파라미터 값을 사용하여 AWS KMS `Decrypt` 작업을 호출하면 암호화된 `SecureString` 파라미터를 해독할 수 있습니다. 그러나 `GetParameter` 작업에 `WithDecryption` 파라미터를 사용하여 Parameter Store 파라미터 값을 해독하는 것이 좋습니다.

IAM 정책에 암호화 컨텍스트를 포함할 수도 있습니다. 예를 들어, 사용자가 특정 파라미터 값 하나만 해독하거나 파라미터 값 세트를 암호화하도록 허용할 수 있습니다.

다음 예제 IAM 정책에서는 사용자가 `MyParameter` 파라미터 값을 가져오고 지정된 KMS 키로 값을 해독할 수 있도록 허용합니다. 하지만 암호화 컨텍스트가 지정된 문자열과 일치하는 경우에만 권한이 적용됩니다. 이 권한은 다른 파라미터 또는 KMS 키에는 적용되지 않으며, 암호화 컨텍스트가 문자열과 일치하지 않을 경우 `GetParameter` 호출이 실패합니다.

이와 같은 정책 문을 사용하기 전에 *예제 ARN*을 유효한 값으로 바꾸세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
                }
            }
        }
    ]
}
```

------

## Parameter Store의 KMS 키 문제 해결
<a name="parameter-store-kms-cmk-troubleshooting"></a>

`SecureString` 파라미터에 대한 작업을 수행하려면 Parameter Store가 해당 작업에 대해 지정된 AWS KMS KMS 키를 사용할 수 있어야 합니다. KMS 키와 관련된 대부분의 Parameter Store 실패는 다음과 같은 문제가 원인입니다.
+ 애플리케이션에서 사용 중인 자격 증명이 KMS 키에 대해 지정된 작업을 수행할 수 있는 권한이 없습니다.

  이 오류를 해결하려면 다른 자격 증명을 사용하여 애플리케이션을 실행하거나 작업을 차단하고 있는 IAM 또는 키 정책을 수정합니다. AWS KMS IAM 및 키 정책에 대한 도움말은 *AWS Key Management Service 개발자 안내서*의 [KMS 키 액세스 및 권한](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)을 참조하세요.
+ KMS 키를 찾을 수 없습니다.

  일반적으로 KMS 키에 대해 잘못된 식별자를 사용하는 경우에 발생합니다. KMS 키에 대해 [올바른 식별자를 찾고](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html) 명령을 다시 시도하십시오.
+ KMS 키를 사용할 수 없습니다. 이 경우 Parameter Store에서는 InvalidKeyId 예외와 AWS KMS의 자세한 오류 메시지를 반환합니다. KMS 키 상태가 `Disabled`이면 [이를 활성화합니다](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html). 상태가 `Pending Import`이면 [가져오기 절차](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)를 완료합니다. 키 상태가 `Pending Deletion`이면 [키 삭제를 취소](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html)하거나 다른 KMS 키를 사용합니다.

  KMS 키의 [키 상태](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)를 확인하려면 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 작업을 사용합니다.

# Amazon Elastic Kubernetes Service에서 Parameter Store 파라미터 사용
<a name="integrate_eks"></a>

AWS Systems Manager의 도구인 Parameter Store에서 Amazon EKS 포드에 탑재된 파일로 파라미터를 표시하려면 Kubernetes Secrets Store CSI 드라이버에 대해 AWS Secrets and Configuration Provider를 사용할 수 있습니다. ASCP는 Amazon EC2 노드 그룹을 실행하는 Amazon Elastic Kubernetes Service 1.17 이상에서 작동합니다. AWS Fargate 노드 그룹은 지원되지 않습니다.

ASCP를 사용하면 Parameter Store 파라미터를 저장 및 관리한 후 Amazon EKS에서 실행되는 워크로드를 통해 해당 검색할 수 있습니다. 파라미터에 JSON 형식의 여러 키-값 쌍이 포함되어 있는 경우 Amazon EKS에서 탑재할 키-값 쌍을 선택할 수 있습니다. ASCP는 JMESPath 구문을 사용하여 보안 암호의 키-값 쌍을 쿼리할 수 있습니다. ASCP는 AWS Secrets Manager 보안 암호에서도 사용됩니다.

ASCP는 Amazon EKS를 사용한 두 가지 인증 방법을 제공합니다. 첫 번째 접근 방식은 IRSA(서비스 계정에 대한 IAM 역할)를 사용합니다. 두 번째 접근 방식은 Pod Identity를 사용합니다. 각 접근 방식에는 이점과 사용 사례가 있습니다.

## IRSA(서비스 계정에 대한 IAM 역할)를 사용하는 ASCP
<a name="csi_driver_overview"></a>

IRSA(서비스 계정에 대한 IAM 역할)를 사용하는 ASCP를 통해 Parameter Store의 파라미터를 Amazon EKS 포드의 파일로 탑재할 수 있습니다. 이 접근 방식이 적합한 경우:
+ 파라미터를 포드에 파일로 탑재해야 합니다.
+ Amazon EC2 노드 그룹에서 Amazon EKS 버전 1.17 이상을 사용하고 있습니다.
+ JSON 형식 파라미터에서 특정 키-값 쌍을 검색하려고 합니다.

자세한 내용은 [IRSA(서비스 계정에 대한 IAM 역할)에서 AWS Secrets and Configuration Provider CSI 사용](integrating_ascp_irsa.md) 섹션을 참조하세요.

## Pod Identity를 사용하는 ASCP
<a name="pod_identity_overview"></a>

Pod Identity를 사용하는 ASCP 방법은 보안을 강화하고 Parameter Store의 파라미터 액세스 구성을 간소화합니다. 이 접근 방식이 유용한 경우:
+ 포드 수준에서 더 세분화된 권한 관리가 필요합니다.
+ Amazon EKS 버전 1.24 이상을 사용하고 있습니다.
+ 성능 및 확장성 개선을 원합니다.

자세한 내용은 [Pod Identity for Amazon EKS에서 AWS Secrets and Configuration Provider CSI 사용](ascp-pod-identity-integration.md) 섹션을 참조하세요.

## 올바른 접근 방식 선택
<a name="comparison"></a>

IRSA를 사용하는 ASCP와 Pod Identity를 사용하는 ASCP 중에서 결정할 때 고려할 요소:
+ Amazon EKS 버전: Pod Identity의 경우 Amazon EKS 1.24 이상이 필요한 반면 CSI 드라이버는 Amazon EKS 1.17 이상을 사용합니다.
+ 보안 요구 사항: Pod Identity는 포드 수준에서 더 세분화된 제어가 가능합니다.
+ 성능: Pod Identity는 일반적으로 대규모 환경에서 더 나은 성능을 발휘합니다.
+ 복잡성: Pod Identity는 별도의 서비스 계정이 필요하지 않아 설정이 간소화됩니다.

특정 요구 사항 및 Amazon EKS 환경에 가장 적합한 방법을 선택합니다.

# ASCP for Amazon EKS 설치
<a name="ascp-eks-installation"></a>

이 섹션에서는 AWS Secrets and Configuration Provider for Amazon EKS 설치 방법을 설명합니다. ASCP를 사용하여 Parameter Store의 파라미터와 AWS Secrets Manager의 보안 암호를 Amazon EKS 포드에 파일로 탑재할 수 있습니다.

## 사전 조건
<a name="prerequisites"></a>
+ Amazon EKS 클러스터
  + Pod Identity 버전 1.24 이상
  + IRSA 버전 1.17 이상
+ AWS CLI 설치 및 구성
+ Amazon EKS 클러스터에 kubectl 설치 및 구성
+ Helm(버전 3.0 이상)

## ASCP 설치 및 구성
<a name="integrating_csi_driver_install"></a>

ASCP는 [secrets-store-csi-provider-aws](https://github.com/aws/secrets-store-csi-driver-provider-aws) 리포지토리의 GitHub에서 제공됩니다. 리포지토리에는 `objectType` 값을 `secretsmanager`에서 `ssmparameter`로 변경하여 보안 암호를 생성 및 탑재하기 위한 예제 YAML 파일도 포함되어 있습니다.

설치 과정에서, FIPS 엔드포인트를 사용하도록 ASCP를 구성할 수 있습니다. Systems Manager 엔드포인트 목록은 *Amazon Web Services 일반 참조*의 [Systems Manager 서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)를 참조하세요.

**Helm을 사용하여 ASCP를 설치하는 방법**

1. 리포지토리가 최신 차트를 가리키고 있는지 확인하려면 `helm repo update.`를 사용합니다.

1. Secrets Store CSI Driver 차트를 추가합니다.

   ```
   helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
   ```

1. 차트를 설치합니다. 스로틀링을 구성하려면 다음 플래그를 추가합니다. `--set-json 'k8sThrottlingParams={"qps": "number of queries per second", "burst": "number of queries per second"}'` 

   ```
   helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
   ```

1. ASCP 차트를 추가합니다.

   ```
   helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
   ```

1. 차트를 설치합니다. FIPS 엔드포인트를 사용하려면 다음 플래그를 추가합니다. `--set useFipsEndpoint=true` 

   ```
   helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
   ```

**리포지토리에서 YAML을 사용하여 설치하는 방법**
+ 다음 명령을 사용합니다.

  ```
  helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
  helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
  kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
  ```

## 설치 확인
<a name="verify-ascp-installations"></a>

EKS 클러스터, Secrets Store CSI 드라이버 및 ASCP 플러그인의 설치를 확인하려면 다음 단계를 따릅니다.

1. EKS 클러스터 확인:

   ```
   eksctl get cluster --name clusterName
   ```

   이 명령을 사용하면 클러스터에 대한 정보가 반환되어야 합니다.

1. Secrets Store CSI 드라이버 설치를 확인합니다.

   ```
   kubectl get pods -n kube-system -l app=secrets-store-csi-driver
   ```

   `csi-secrets-store-secrets-store-csi-driver-xxx`와 같이 이름과 함께 실행 중인 포드가 표시될 것입니다.

1. ASCP 플러그인 설치 확인:

------
#### [ YAML installation ]

   ```
   $ kubectl get pods -n kube-system -l app=csi-secrets-store-provider-aws
   ```

   출력 예시:

   ```
   NAME                                     READY   STATUS    RESTARTS   AGE
   csi-secrets-store-provider-aws-12345      1/1     Running   0          2m
   ```

------
#### [ Helm installation ]

   ```
   $  kubectl get pods -n kube-system -l app=secrets-store-csi-driver-provider-aws
   ```

   출력 예시:

   ```
   NAME                                              READY   STATUS    RESTARTS   AGE
   secrets-provider-aws-secrets-store-csi-driver-provider-67890       1/1     Running   0          2m
   ```

------

   포드가 `Running` 상태로 표시될 것입니다.

명령을 실행한 후 모든 것이 올바르게 설정되면 오류 없이 실행 중인 모든 구성 요소가 표시됩니다. 문제가 발생하면 문제가 있는 특정 포드의 로그를 확인하여 문제를 해결해야 할 수 있습니다.

## 문제 해결
<a name="troubleshooting"></a>

1. 다음을 실행하여 ASCP 공급자의 로그 확인:

   ```
   kubectl logs -n kube-system -l app=csi-secrets-store-provider-aws
   ```

1. `kube-system` 네임스페이스에서 모든 포드의 상태를 확인합니다.

   *기본 자리 표시자 텍스트*를 자신의 포드 ID로 바꿉니다.

   ```
   kubectl -n kube-system get pods
   ```

   ```
   kubectl -n kube-system logs pod/pod-id
   ```

   CSI 드라이버 및 ASCP와 관련된 모든 포드는 'Running' 상태여야 합니다.

1. CSI 드라이버 버전 확인:

   ```
   kubectl get csidriver secrets-store.csi.k8s.io -o yaml
   ```

   이 명령을 사용하면 설치된 CSI 드라이버에 대한 정보가 반환되어야 합니다.

## 추가 리소스
<a name="additional-resources"></a>

Amazon EKS에서 ASCP 사용에 대한 자세한 내용은 다음 리소스를 참조하세요.
+ [Amazon EKS에서 Pod Identity 사용](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [GitHub의 AWS Secrets Store CSI 드라이버](https://github.com/aws/secrets-store-csi-driver-provider-aws)

# Pod Identity for Amazon EKS에서 AWS Secrets and Configuration Provider CSI 사용
<a name="ascp-pod-identity-integration"></a>

Pod Identity Agent for Amazon Elastic Kubernetes Service와 AWS Secrets and Configuration Provider의 통합으로 Amazon EKS에서 실행되는 애플리케이션에 대해 보안이 향상되고, 구성이 간소화되고, 성능이 개선됩니다. Pod Identity는 AWS Systems Manager Parameter Store에서 파라미터 또는 Secrets Manager에서 보안 암호를 검색할 때 Amazon EKS에 대한 AWS Identity and Access Management(IAM) 인증을 간소화합니다.

Amazon EKS Pod Identity는 Amazon EKS 인터페이스를 통해 직접 권한이 설정되도록 허용하여 Kubernetes 애플리케이션의 IAM 권한을 구성하는 프로세스를 간소화하며, 이를 통해 설정 단계 수가 감소하고 Amazon EKS와 IAM 서비스 간에 전환할 필요가 없습니다. Pod Identity를 사용하면 신뢰 정책을 업데이트하지 않고도 여러 클러스터에서 단일 IAM 역할을 사용할 수 있고, [역할 세션 태그](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags)가 지원되어 더 세분화된 액세스 제어가 가능합니다. 이 접근 방식은 역할 간에 권한 정책을 재사용할 수 있도록 하여 정책 관리를 간소화할 뿐만 아니라 일치하는 태그를 기반으로 AWS 리소스에 대한 액세스를 활성화하면서 보안을 강화합니다.

## 작동 방식
<a name="how-it-works"></a>

1. Pod Identity는 포드에 IAM 역할을 할당합니다.

1. ASCP는 이 역할을 사용하여 AWS 서비스에 인증합니다.

1. 권한이 부여된 경우 ASCP는 요청된 파라미터를 검색하여 포드에서 사용할 수 있도록 합니다.

자세한 내용은 *Amazon EKS 사용 설명서*의 [Amazon EKS Pod Identity 작동 방식 이해](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-how-it-works.html)를 참조하세요.

## 사전 조건
<a name="prerequisites"></a>

**중요**  
Pod Identity는 클라우드의 Amazon EKS에서만 지원됩니다. [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/), [Red Hat OpenShift Service on AWS](https://aws.amazon.com/rosa/), Amazon EC2 인스턴스의 자체 관리형 Kubernetes 클러스터에서는 지원되지 않습니다.
+ Amazon EKS 클러스터(버전 1.24 이상)
+ `kubectl`을 통해 AWS CLI 및 Amazon EKS 클러스터에 액세스
+ (선택 사항) 교차 계정 액세스를 위해 2개의 AWS 계정에 액세스

## Amazon EKS Pod Identity Agent 설치
<a name="install-pod-identity-agent"></a>

클러스터에서 Pod Identity를 사용하려면 Amazon EKS Pod Identity Agent 추가 기능을 설치해야 합니다.

**Pod Identity Agent 설치**
+ 클러스터에 Pod Identity Agent 추가 기능을 설치합니다.

  *기본 자리 표시자* 텍스트를 자신의 값으로 바꿉니다.

  ```
  eksctl create addon \
    --name eks-pod-identity-agent \
    --cluster clusterName \
    --region region
  ```

## Pod Identity를 사용하는 ASCP 설정
<a name="pod-identity-setup"></a>

1. 포드가 액세스해야 하는 파라미터에 `ssm:GetParameters` 및 `ssm:DescribeParameters` 권한을 부여하는 권한 정책을 생성합니다.

1. Pod Identity에 대한 Amazon EKS 서비스 보안 주체가 맡을 수 있는 IAM 역할 생성:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "pods.eks.amazonaws.com"
           },
           "Action": [
             "sts:AssumeRole",
             "sts:TagSession"
           ]
         }
       ]
     }
   ```

------

   IAM 정책을 역할에 연결합니다.

   *기본 자리 표시자* 텍스트를 자신의 값으로 바꿉니다.

   ```
   aws iam attach-role-policy \
     --role-name MY_ROLE \
     --policy-arn POLICY_ARN
   ```

1. Pod Identity 연결을 생성합니다. 예시는 *Amazon EKS 사용 설명서*의 [Pod Identity 연결 생성](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html#pod-id-association-create)을 참조하세요.

1. 포드에 탑재할 파라미터 또는 보안 암호를 지정하는 `SecretProviderClass` 생성:

   ```
   kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml
   ```

   IRSA와 Pod Identity 사이에서 `SecretProviderClass`의 주요 차이점은 선택적 파라미터 `usePodIdentity`입니다. 인증 접근 방식을 결정하는 선택적 필드입니다. 지정하지 않으면 기본적으로 IRSA(서비스 계정에 대한 IAM 역할)를 사용합니다.
   + EKS Pod Identity를 사용하려면 다음 값 중 하나를 사용합니다. `"true", "True", "TRUE", "t", "T"`.
   + IRSA를 명시적으로 사용하려면 값을 `"false", "False", "FALSE", "f", or "F"`로 설정합니다.

1. `/mnt/secrets-store`에 파라미터 또는 보안 암호를 탑재하는 포드 배포:

   ```
   kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
   ```

1. 프라이빗 Amazon EKS 클러스터를 사용하는 경우 클러스터가 있는 VPC에 AWS STS 엔드포인트가 있어야 합니다. 엔드포인트 생성에 대한 자세한 내용은 **AWS Identity and Access Management 사용 설명서의 [인터페이스 VPC 엔드포인트](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) 섹션을 참조하세요.

### 보안 암호 탑재 확인
<a name="verify-secret-mount"></a>

파라미터 또는 보안 암호가 제대로 탑재되었는지 확인하려면 다음 명령을 실행합니다.

*기본 자리 표시자* 텍스트를 자신의 값으로 바꿉니다.

```
kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MyParameter
```

**Parameter Store의 파라미터에 액세스하도록 Amazon EKS Pod Identity 설정:**

1. 포드가 액세스해야 하는 파라미터에 `ssm:GetParameters` 및 `ssm:DescribeParameters` 권한을 부여하는 권한 정책을 생성합니다.

1. 아직 없는 경우 Parameter Store에서 파라미터를 생성합니다. 자세한 내용은 [Systems Manager에서 Parameter Store 파라미터 생성](sysman-paramstore-su-create.md) 섹션을 참조하세요.

## 문제 해결
<a name="integrating_aspc_pod_trouble"></a>

포드 배포를 설명하여 대부분의 오류를 볼 수 있습니다.

**컨테이너에 대한 오류 메시지 확인**

1. 다음 명령을 사용하여 포드 이름 목록을 가져옵니다. 기본 네임스페이스를 사용하지 않는 경우에는 `-n namespace`를 사용합니다.

   ```
   kubectl get pods
   ```

1. 포드를 설명하기 위해 다음 명령에서 *pod-id*에 대해 이전 단계에서 찾은 포드의 포드 ID를 사용합니다. 기본 네임스페이스를 사용하지 않는 경우에는 `-n NAMESPACE`를 사용합니다.

   ```
   kubectl describe pod/pod-id
   ```

**ASCP에 대한 오류를 확인하려면**
+ 공급자 로그에서 자세한 정보를 찾으려면 다음 명령에서 *PODID*에 대해 *csi-secrets-store-provider-aws* 포드의 ID를 사용합니다.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs pod/pod-id
  ```

# IRSA(서비스 계정에 대한 IAM 역할)에서 AWS Secrets and Configuration Provider CSI 사용
<a name="integrating_ascp_irsa"></a>

**Topics**
+ [사전 조건](#prerequisites)
+ [액세스 제어 설정](#integrating_ascp_irsa_access)
+ [탑재할 파라미터 식별](#integrating_ascp_irsa_mount)
+ [문제 해결](#integrating_ascp_irsa_trouble)

## 사전 조건
<a name="prerequisites"></a>
+ Amazon EKS 클러스터(버전 1.17 이상)
+ `kubectl`을 통해 AWS CLI 및 Amazon EKS 클러스터에 액세스

## 액세스 제어 설정
<a name="integrating_ascp_irsa_access"></a>

ASCP는 Amazon EKS Pod Identity를 검색하고 IAM 역할에 대한 자격 증명을 교환합니다. IAM 정책에서 해당 IAM 역할에 대한 권한을 설정합니다. ASCP가 IAM 역할을 가정할 경우, ASCP는 사용자가 권한을 부여한 파라미터에 대한 액세스 권한을 가져옵니다. 다른 컨테이너는 IAM 역할과 연결하지 않는 한 파라미터에 액세스할 수 없습니다.

**Parameter Store의 파라미터에 대한 Amazon EKS 포드의 액세스 권한 부여**

1. 포드가 액세스해야 하는 파라미터에 `ssm:GetParameters` 및 `ssm:DescribeParameters` 권한을 부여하는 권한 정책을 생성합니다.

1. 아직 없는 경우 클러스터에 대한 IAM OpenID Connect(OIDC) 공급자를 생성합니다. 자세한 내용은 **Amazon EKS 사용 설명서의 [Create an IAM OIDC provider for your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) 섹션을 참조하세요.

1. [서비스 계정용 IAM 역할](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)을 생성하고 정책을 연결합니다. 자세한 내용은 Amazon EKS 사용 설명서의 [Create an IAM role for a service account](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) 섹션을 참조하세요.**

1. 프라이빗 Amazon EKS 클러스터를 사용하는 경우 클러스터가 있는 VPC에 AWS STS 엔드포인트가 있어야 합니다. 엔드포인트 생성에 대한 자세한 내용은 **AWS Identity and Access Management 사용 설명서의 [인터페이스 VPC 엔드포인트](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) 섹션을 참조하세요.

## 탑재할 파라미터 식별
<a name="integrating_ascp_irsa_mount"></a>

ASCP가 Amazon EKS에 파일 시스템의 파일로 탑재하는 파라미터를 확인하려면 [SecretProviderClass](ascp-examples.md#ascp-examples-secretproviderclass) YAML 파일을 생성합니다. `SecretProviderClass`는 탑재할 파라미터와 이를 탑재할 파일 이름을 나열합니다. 이 `SecretProviderClass`는 참조하는 Amazon EKS 포드와 동일한 네임스페이스에 있어야 합니다.

### 파라미터를 파일로 탑재
<a name="mount-secrets"></a>

다음 지침에서는 YAML 파일 예제 [ExampleSecretProviderClass.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleSecretProviderClass-IRSA.yaml) 및 [ExampleDeployment.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleDeployment-IRSA.yaml)을 사용하여 파라미터를 파일로 탑재하는 방법을 보여줍니다.

**Amazon EKS에 파라미터 탑재**

1. 포드에 `SecretProviderClass` 적용:

   ```
   kubectl apply -f ExampleSecretProviderClass.yaml
   ```

1. 포드 배포:

   ```
   kubectl apply -f ExampleDeployment.yaml
   ```

1. ASCP가 파일을 탑재합니다.

## 문제 해결
<a name="integrating_ascp_irsa_trouble"></a>

포드 배포를 설명하여 대부분의 오류를 볼 수 있습니다.

**컨테이너에 대한 오류 메시지 확인**

1. 다음 명령을 사용하여 포드 이름 목록을 가져옵니다. 기본 네임스페이스를 사용하지 않는 경우에는 `-n name-space`를 사용합니다.

   ```
   kubectl get pods
   ```

1. 포드를 설명하기 위해 다음 명령에서 *pod-id*에 대해 이전 단계에서 찾은 포드의 포드 ID를 사용합니다. 기본 네임스페이스를 사용하지 않는 경우에는 `-n nameSpace`를 사용합니다.

   ```
   kubectl describe pod/pod-id
   ```

**ASCP에 대한 오류를 확인하려면**
+ 공급자 로그에서 자세한 정보를 찾으려면 다음 명령에서 *pod-id*에 대해 *csi-secrets-store-provider-aws* 포드의 ID를 사용합니다.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs Pod/pod-id
  ```
+ 

**`SecretProviderClass` CRD 설치 여부 확인:**

  ```
  kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io
  ```

  이 명령에서 `SecretProviderClass` 사용자 지정 리소스 정의에 관한 정보가 반환되어야 합니다.
+ 

**SecretProviderClass 객체가 생성되었는지 확인합니다.**

  ```
  kubectl get secretproviderclass SecretProviderClassName -o yaml
  ```

# AWS Secrets and Configuration Provider 코드 예제
<a name="ascp-examples"></a>

## ASCP 인증 및 액세스 제어 예제
<a name="ascp-auth-access-examples"></a>

### 예: Amazon EKS Pod Identity 서비스(pods.eks.amazonaws.com)가 역할을 수임하고 세션에 태그를 지정하도록 허용하는 IAM 정책:
<a name="ascp-auth-access-example-1"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
```

------

## SecretProviderClass
<a name="ascp-examples-secretproviderclass"></a>

YAML을 사용하여 ASCP를 사용하는 Amazon EKS에 탑재할 파라미터를 설명합니다. 예시는 [SecretProviderClass 사용](#ascp-scenarios-secretproviderclass) 섹션을 참조하세요.

### SecretProviderClass YAML 구조
<a name="ascp-examples-secretproviderclass-1"></a>

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
   name: name
spec:
  provider: aws
  parameters:
    region:
    failoverRegion:
    pathTranslation:
    usePodIdentity:
    preferredAddressType:
    objects:
```

파라미터 필드에는 탑재 요청의 세부 정보 포함:

**리전**  
(선택 사항) 파라미터의 AWS 리전입니다. 이 필드를 사용하지 않는 경우 ASCP는 노드의 주석에서 리전을 조회합니다. 이 조회는 탑재 요청에 오버헤드를 추가하므로 많은 수의 포드를 사용하는 클러스터에 리전을 제공하는 것이 좋습니다.  
또한 `failoverRegion`을 지정하는 경우 ASCP는 두 리전 모두에서 보안 암호 검색을 시도합니다. 두 리전 중 하나가 예를 들어 인증 문제에 대해 `4xx` 오류를 반환하는 경우 ASCP는 어느 파라미터도 탑재하지 않습니다. `region```에서 파라미터가 성공적으로 검색되면 ASCP는 해당 파라미터 값을 탑재합니다. `region`에서는 파라미터가 성공적으로 검색되지 않고 `failoverRegion`에서 성공적으로 검색되는 경우 ASCP는 해당 파라미터 값을 탑재합니다.

**`failoverRegion`**  
(선택 사항) 이 필드를 포함하는 경우 ASCP는 `region` 및 이 필드에 정의된 리전에서 파라미터를 검색하려고 시도합니다. 두 리전 중 하나가 예를 들어 인증 문제에 대해 `4xx` 오류를 반환하는 경우 ASCP는 어느 파라미터도 탑재하지 않습니다. `region`에서 파라미터가 성공적으로 검색되면 ASCP는 해당 파라미터 값을 탑재합니다. `region`에서는 파라미터가 성공적으로 검색되지 않고 `failoverRegion`에서 성공적으로 검색되는 경우 ASCP는 해당 파라미터 값을 탑재합니다. 이 필드 사용 방법의 예는 [다중 리전 파라미터 장애 조치](#multi-region-failover) 섹션을 참조하세요.

**pathTranslation**  
(선택 사항) Amazon EKS의 파일 이름에 Linux의 슬래시(/)와 같은 경로 구분 문자가 포함된 경우 사용할 단일 대체 문자입니다. ASCP는 경로 구분 문자가 포함된 탑재 파일을 생성할 수 없습니다. 그 대신 ASCP는 경로 구분 문자를 다른 문자로 대체합니다. 이 필드를 사용하지 않는 경우 대체 문자는 밑줄(\$1)이므로 예를 들어 `My/Path/Parameter`은 `My_Path_Parameter`으로 탑재됩니다.  
문자 대체를 방지하려면 `False` 문자열을 입력합니다.

***usePodIdentity***  
(선택 사항) 인증 접근 방식을 결정합니다. 지정하지 않으면 기본적으로 IRSA(서비스 계정에 대한 IAM 역할)를 사용합니다.  
+ EKS Pod Identity를 사용하려면 다음 값 중 하나를 사용합니다. `"true"`", `"True"`, `"TRUE"`, `"t"` 또는 `"T"`.
+ IRSA를 명시적으로 사용하려면 다음 값 중 하나를 사용합니다. `"false"`, `"False"`, `"FALSE"`, `"f"` 또는 `"F"`"=.

***preferredAddressType***  
(선택 사항) Pod Identity Agent 엔드포인트 통신에 사용할 기본 설정 IP 주소 유형을 지정합니다. 필드는 EKS Pod Identity 기능을 사용할 때만 적용되고 서비스 계정에 IAM 역할을 사용할 때는 무시됩니다. 값은 대/소문자를 구분하지 않습니다. 유효값은 다음과 같습니다.  
+ `"ipv4"`, `"IPv4"`" 또는 `"IPV4"` - Pod Identity Agent IPv4 엔드포인트 강제 사용
+ `"ipv6"`, `"IPv6"` 또는 `"IPV6"` - Pod Identity Agent IPv6 엔드포인트 강제 사용
+ 지정되지 않음 - 자동 엔드포인트 선택 사용, IPv4 엔드포인트를 먼저 시도하고 IPv4 실패 시 IPv6 엔드포인트로 폴백

**객체**  
탑재할 보안 암호의 YAML 선언을 포함하는 문자열입니다. YAML 다중 행 문자열 또는 파이프(\$1) 문자를 사용하는 것이 좋습니다.    
**objectName**  
필수 사항입니다. 가져올 파라미터 또는 보안 암호의 이름을 지정합니다. Parameter Store의 경우 파라미터의 [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters)으로 파라미터의 이름 또는 전체 ARN일 수 있습니다. Secrets Manager의 경우 파라미터의 [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters)로 보안 암호의 친숙한 이름 또는 전체 ARN일 수 있습니다.  
**objectType**  
`objectName`으로 Secrets Manager ARN을 사용하지 않는 경우에 필요합니다. Parameter Store에는 `ssmparameter`을 사용합니다. Secrets Manager의 경우 `secretsmanager`를 사용합니다.  
**objectAlias**  
(선택 사항) Amazon EKS 포드에 있는 보안 암호의 파일 이름입니다. 이 필드를 지정하지 않은 경우 `objectName`이 파일 이름으로 나타납니다.  
**objectVersion**  
(선택 사항) 파라미터의 버전 ID입니다. 파라미터를 업데이트할 때마다 버전 ID를 업데이트해야 하므로 권장하지 않습니다. 기본적으로 가장 최신 버전이 사용됩니다. `failoverRegion`을(를) 포함하는 경우 이 필드는 기본 `objectVersion`을(를) 나타냅니다.  
**objectVersionLabel**  
(선택 사항) 버전의 별칭입니다. 기본값은 가장 최근 버전 `AWSCURRENT`입니다. `failoverRegion`을(를) 포함하는 경우 이 필드는 기본 `objectVersionLabel`을(를) 나타냅니다.  
**jmesPath**  
(선택 사항) Amazon EKS에 탑재할 파일에 대한 파라미터의 키 맵입니다. 이 필드를 사용하려면 파라미터 값이 JSON 형식이어야 합니다.  
다음 예제에서는 JSON 인코딩 파라미터의 형태를 보여줍니다.  

```
{
    "username" : "myusername",
    "password" : "mypassword"
}
```
키는 `username` 및 `password`입니다. `username`에 연결된 값은 `myusername`이며, `password`에 연결된 값은 `mypassword`입니다.  
이 필드를 사용하는 경우 `path` 및 `objectAlias` 하위 필드를 포함해야 합니다.    
**경로**  
파라미터 값의 JSON에 있는 키-값 쌍의 키입니다. 필드에 하이픈이 포함된 경우 작은 따옴표를 사용하여 하이픈을 이스케이프 처리합니다. 예: `path: '"hyphenated-path"'`  
**objectAlias**  
Amazon EKS 포드에 탑재할 파일 이름입니다. 필드에 하이픈이 포함된 경우 작은 따옴표를 사용하여 하이픈을 이스케이프 처리합니다. 예: `objectAlias: '"hyphenated-alias"'`  
**`failoverObject`**  
(선택 사항) 이 필드를 지정하는 경우 ASCP는 기본 `objectName`에 지정된 파라미터와 `failoverObject` `objectName` 하위 필드에 지정된 파라미터를 모두 검색하려고 시도합니다. 둘 중 하나에서 예를 들어 인증 문제에 대해 `4xx` 오류를 반환하는 경우 ASCP는 어느 파라미터도 탑재하지 않습니다. 기본 `objectName`에서 파라미터가 성공적으로 검색되면 ASCP는 해당 파라미터 값을 탑재합니다. 기본 `objectName`에서는 파라미터가 성공적으로 검색되지 않고 장애 조치 `objectName`에서 성공적으로 검색되는 경우 ASCP는 해당 파라미터 값을 탑재합니다. 이 필드를 포함하는 경우 필드 `objectAlias`도 포함해야 합니다. 이 필드 사용 방법의 예는 [다른 파라미터로 장애 조치](#failover-parameter) 섹션을 참조하세요.  
일반적으로 장애 조치 파라미터가 복제본이 아닌 경우 이 필드를 사용합니다. 복제본을 지정하는 방법에 대한 예는 [다중 리전 파라미터 장애 조치](#multi-region-failover) 섹션을 참조하세요.    
**objectName**  
장애 조치 파라미터의 이름 또는 전체 ARN입니다. ARN을 사용하는 경우 ARN의 리전이 필드 `failoverRegion`와(과) 일치해야 합니다.  
**objectVersion**  
(선택 사항) 파라미터의 버전 ID입니다. 기본 `objectVersion`와(과) 일치해야 합니다. 파라미터를 업데이트할 때마다 버전 ID를 업데이트해야 하므로 권장하지 않습니다. 기본적으로 가장 최신 버전이 사용됩니다.  
**objectVersionLabel**  
(선택 사항) 버전의 별칭입니다. 기본값은 가장 최근 버전 `AWSCURRENT`입니다.

### Amazon EKS 포드에 파라미터를 탑재하기 위한 기본 SecretProviderClass 구성을 생성합니다.
<a name="create-SecretProviderClass-config"></a>

------
#### [ Pod Identity ]

동일한 Amazon EKS 클러스터에서 파라미터를 사용하는 SecretProviderClass:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameter-store
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "MyParameter"
        objectType: "ssmparameter"
    usePodIdentity: "true"
```

------
#### [ IRSA ]

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: deployment-aws-parameter
spec:
  provider: aws
  parameters:
    objects: |
        - objectName: "MyParameter"
          objectType: "ssmparameter"
```

------

### SecretProviderClass 사용
<a name="ascp-scenarios-secretproviderclass"></a>

다음 예제를 사용하여 다양한 시나리오에 대한 `SecretProviderClass` 구성을 생성합니다.

#### 예: 이름 또는 ARN으로 파라미터 탑재
<a name="mount-by-name-arn"></a>

이 예제에서는 세 가지 유형의 파라미터를 탑재하는 방법을 보여줍니다.
+ 전체 ARN으로 지정된 파라미터
+ 이름으로 지정된 파라미터
+ 보안 암호의 파라미터 버전

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter2-d4e5f6"
      - objectName: "MyParameter3"
        objectType: "ssmparameter"
      - objectName: "MyParameter4"
        objectType: "ssmparameter"
        objectVersionLabel: "AWSCURRENT"
```

#### 예: 파라미터에서 키-값 페어 탑재
<a name="mount-key-value-pairs"></a>

이 예제는 JSON 형식 파라미터에서 특정 키-값 쌍을 탑재하는 방법을 보여줍니다.

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter-a1b2c3"
        jmesPath: 
            - path: username
              objectAlias: dbusername
            - path: password
              objectAlias: dbpassword
```

#### 예: 장애 조치 구성 예제
<a name="failover-examples"></a>

이 예제에서는 파라미터에 대한 장애 조치 구성 방법을 보여줍니다.

##### 다중 리전 파라미터 장애 조치
<a name="multi-region-failover"></a>

이 예제에서는 여러 리전에 복제된 파라미터에 대한 자동 장애 조치 구성 방법을 보여줍니다.

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "MyParameter"
```

##### 다른 파라미터로 장애 조치
<a name="failover-parameter"></a>

이 예제에서는 (복제본이 아닌) 다른 파라미터로의 장애 조치 구성 방법을 보여줍니다.

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "arn:aws:ssm:us-east-1:777788889999:parameter:MyParameter-a1b2c3"
        objectAlias: "MyMountedParameter"
        failoverObject: 
          - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyFailoverParameter-d4e5f6"
```

## 추가 리소스
<a name="additional-resources"></a>

Amazon EKS에서 ASCP 사용에 대한 자세한 내용은 다음 리소스를 참조하세요.
+ [Amazon EKS에서 Pod Identity 사용](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [GitHub의 AWS Secrets Store CSI 드라이버](https://github.com/aws/secrets-store-csi-driver-provider-aws)

# AWS Lambda 함수에서 Parameter Store 파라미터 사용
<a name="ps-integration-lambda-extensions"></a>

AWS Systems Manager의 도구인 Parameter Store는 구성 데이터 관리 및 비밀 관리를 위한 안전한 계층적 스토리지를 제공합니다. 암호, 데이터베이스 문자열, Amazon Machine Image(AMI) ID, 라이선스 코드와 같은 데이터를 파라미터 값으로 저장할 수 있습니다.

SDK를 사용하지 않고 AWS Lambda 함수에서 Parameter Store의 파라미터를 사용하려면 AWS 파라미터 및 보안 Lambda 확장을 사용할 수 있습니다. 이 익스텐션은 파라미터 값을 검색한 후 나중에 사용할 수 있도록 캐시합니다. Lambda 확장을 사용하면 Parameter Store에 대한 API 호출 수를 줄여 비용을 절감할 수 있습니다. 익스텐션을 사용하면 Parameter Store에서 검색할 때보다 캐시된 파라미터를 더 빠르게 검색할 수 있으므로 지연 시간을 줄일 수 있습니다.

Lambda 확장은 Lambda 함수의 기능을 강화하는 동반 프로세스입니다. 익스텐션은 Lambda 호출과 병렬로 실행되는 클라이언트와 같습니다. 이 병렬 클라이언트는 수명 주기 중 언제든지 함수와 연결될 수 있습니다. Lambda 확장에 대한 자세한 내용은 *AWS Lambda 개발자 안내서*의 [Lambda 확장 API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html)를 참조하세요.

AWS 파라미터 및 보안 Lambda 확장은 Parameter Store 및 AWS Secrets Manager 모두에서 작동합니다. Lambda 확장을 Secrets Manager의 보안 암호와 함께 사용하는 방법은 *AWS Secrets Manager사용자 안내서*의 [AWS Lambda 함수에 AWS Secrets Manager 보안 암호 사용](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_lambda.html)을 참조하세요.

**관련 정보**

[AWS 파라미터 및 Secrets Lambda 확장을 사용하여 파라미터와 보안 암호 캐싱](https://aws.amazon.com/blogs/compute/using-the-aws-parameter-and-secrets-lambda-extension-to-cache-parameters-and-secrets/)(AWS 컴퓨팅 블로그)

## 익스텐션 작동 방법
<a name="ps-integration-lambda-extensions-how-it-works"></a>

Lambda 확장 *없이* Lambda 함수에서 파라미터를 사용하려면 Parameter Store의 `GetParameter` API 작업과 통합하여 구성 업데이트를 수신하도록 Lambda 함수를 구성해야 합니다.

AWS 파라미터 및 보안 Lambda 확장을 사용하는 경우 익스텐션은 Parameter Store에서 파라미터 값을 검색한 후 로컬 캐시에 저장합니다. 그런 다음 캐시된 값은 만료될 때까지 이후 호출에 사용됩니다. 캐시된 값은 TTL(time-to-live)이 경과한 이후에 만료됩니다. 이 항목의 뒷부분에 설명된 대로 `SSM_PARAMETER_STORE_TTL` [환경 변수](#ps-integration-lambda-extensions-config)를 사용하여 TTL 값을 구성할 수 있습니다.

구성된 캐시 TTL이 만료되지 않은 경우 캐시된 파라미터 값이 사용됩니다. 시간이 만료된 경우 캐시된 값은 무효화되고 파라미터 값이 Parameter Store에서 검색됩니다.

또한 자주 사용되는 파라미터 값을 감지하여 캐시에서 유지하고 만료되거나 사용되지 않는 값은 지웁니다.

**중요**  
확장은 Lambda 작업의 `INVOKE` 단계에서만 호출할 수 있으며 `INIT` 단계 중에는 호출할 수 없습니다.

### 구현 세부 정보
<a name="lambda-extension-details"></a>

다음 세부 정보를 사용하여 AWS 파라미터 및 보안 Lambda 확장을 구성할 수 있습니다.

Authentication  
Parameter Store 요청을 승인하고 인증하기 위해 익스텐션은 Lambda 함수를 실행하는 데 사용된 것과 동일한 보안 인증을 사용합니다. 따라서 함수를 실행하는 데 사용되는AWS Identity and Access Management(IAM) 역할에 다음과 같은 권한이 있어야 Parameter Store와 상호 작용할 수 있습니다.  
+ `ssm:GetParameter` - Parameter Store에서 파라미터를 검색하는 데 필요합니다.
+ `kms:Decrypt` – Parameter Store에서 `SecureString` 파라미터를 검색하는 경우에 필요합니다.
자세한 내용은 *AWS Lambda 개발자 가이드*의 [AWS Lambda 실행 역할](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)을 참조하세요.

인스턴스화  
Lambda는 함수에 필요한 동시성 레벨에 해당하는 별도의 인스턴스를 인스턴스화합니다. 각 인스턴스는 격리되며 구성 데이터의 자체 로컬 캐시를 유지합니다. Lambda 인스턴스 및 동시성에 대한 자세한 내용은 **AWS Lambda 개발자 안내서의 [예약된 동시성 구성](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html)을 참조하세요.

SDK에 종속되지 않음  
AWS 파라미터 및 보안 Lambda 확장은 AWS SDK 언어 라이브러리와 독립적으로 작동합니다. Parameter Store에 대한 GET 요청을 생성하는 데 AWS SDK가 필요하지 않습니다.

Localhost port  
GET 요청에는 `localhost`를 사용합니다. 이 익스텐션은 localhost 포트 2773에 요청합니다. 익스텐션을 사용하기 위해 외부 또는 내부 엔드포인트를 지정할 필요가 없습니다. [환경 변수](#ps-integration-lambda-extensions-config) `PARAMETERS_SECRETS_EXTENSION_HTTP_PORT`를 설정하여 포트를 구성할 수 있습니다.  
예를 들어 Python에서 GET URL은 다음 예제와 비슷합니다.  

```
parameter_url = ('http://localhost:' + port + '/systemsmanager/parameters/get/?name=' + ssm_parameter_path)
```

TTL 만료 전 파라미터 값 변경  
익스텐션은 파라미터 값에 대한 변경 사항을 감지하지 못하며 TTL이 만료되기 전에 자동 새로 고침을 수행하지 않습니다. 파라미터 값을 변경하면 캐시된 파라미터 값을 사용하는 작업이 다음에 캐시를 새로 고칠 때까지 실패할 수 있습니다. 파라미터 값을 자주 변경할 경우 TTL 값을 더 짧게 설정하는 것이 좋습니다.

헤더 요구 사항  
익스텐션 캐시에서 파라미터를 검색하려면 GET 요청의 헤더에 `X-Aws-Parameters-Secrets-Token` 참조가 포함되어야 합니다. 모든 실행 중인 함수에 대해 Lambda에서 제공하는 `AWS_SESSION_TOKEN`으로 토큰을 설정합니다. 이 헤더를 사용하면 호출자가 Lambda 환경 내에 있음을 나타냅니다.

예제  
Python의 다음 예제는 캐시된 파라미터 값을 검색하기 위한 기본 요청을 보여줍니다.  

```
import urllib.request
import os
import json

aws_session_token = os.environ.get('AWS_SESSION_TOKEN')

def lambda_handler(event, context):
    # Retrieve /my/parameter from Parameter Store using extension cache
    req = urllib.request.Request('http://localhost:2773/systemsmanager/parameters/get?name=%2Fmy%2Fparameter')
    req.add_header('X-Aws-Parameters-Secrets-Token', aws_session_token)
    config = urllib.request.urlopen(req).read()

    return json.loads(config)
```

ARM 지원  
확장은 x86\$164 및 x86 아키텍처가 지원되는 대부분의 AWS 리전에서 ARM 아키텍처를 지원합니다. ARM 아키텍처를 사용하는 경우에는 해당 아키텍처가 지원되는지 확인하는 것이 좋습니다. 익스텐션 ARN의 전체 목록은 [AWS 파라미터 및 보안 암호 Lambda 확장 ARN](#ps-integration-lambda-extensions-add) 단원을 참조하세요.

로깅  
Lambda는 Amazon CloudWatch Logs를 사용하여 익스텐션에 대한 실행 정보를 함수와 함께 기록합니다. 기본적으로 이 익스텐션은 CloudWatch에 최소한의 정보를 기록합니다. 세부 정보를 기록하려면 [환경 변수](#ps-integration-lambda-extensions-config) `PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL`을 `DEBUG`로 설정합니다.

### Lambda 함수에 익스텐션 추가
<a name="add-extension"></a>

AWS 파라미터 및 보안 Lambda 확장을 사용하려면 Lambda 함수에 익스텐션을 계층으로 추가합니다.

다음 중 한 가지 방법으로 함수에 익스텐션을 추가합니다.

AWS Management Console(계층 추가 옵션)  

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)에서 AWS Lambda 콘솔을 엽니다.

1. 함수를 선택합니다. **Layers**(계층) 영역에서 **Add a layer**(계층 추가)를 선택합니다.

1. **계층 선택** 영역에서 **AWS 계층** 옵션을 선택합니다.

1. **AWS 계층**의 경우 **AWS-Parameters-and-Secrets-Lambda-Extension**을 선택하고, 버전을 선택한 다음에 **추가**를 선택합니다.

AWS Management Console(ARN 옵션 지정)  

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)에서 AWS Lambda 콘솔을 엽니다.

1. 함수를 선택합니다. **Layers**(계층) 영역에서 **Add a layer**(계층 추가)를 선택합니다.

1. **Choose a layer**(계층 선택) 영역에서 **Specify an ARN**(ARN 지정) 옵션을 선택합니다.

1. **Specify an ARN**(ARN 지정)에서 [AWS 리전 및 아키텍처에 대한 익스텐션 ARN](#ps-integration-lambda-extensions-add)을 입력한 다음 **Add**(추가)를 선택합니다.

AWS Command Line Interface  
AWS CLI에서 다음과 같은 명령을 실행합니다. 각 *example resource placeholder*를 사용자의 정보로 바꿉니다.  

```
aws lambda update-function-configuration \
    --function-name function-name \
    --layers layer-ARN
```

**관련 정보**

[Lambda 함수에서 계층 사용](https://docs.aws.amazon.com/lambda/latest/dg/invocation-layers.html)

[익스텐션 구성(.zip 파일 아카이브)](https://docs.aws.amazon.com/lambda/latest/dg/using-extensions.html#using-extensions-config)

## AWS 파라미터 및 보안 암호 Lambda 확장 환경 변수
<a name="ps-integration-lambda-extensions-config"></a>

다음 환경 변수를 변경하여 익스텐션을 구성할 수 있습니다. 현재 설정을 보려면 `PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL`을 `DEBUG`로 설정합니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [AWS Lambda 환경 변수 사용](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html)을 참조하세요.

**참고**  
AWS Lambda는 Lambda 확장 및 Lambda 함수에 대한 작업 세부 정보를 Amazon CloudWatch Logs에 기록합니다.


****  

| 환경 변수 | 세부 정보 | 필수 | 유효값 | 기본값  | 
| --- | --- | --- | --- | --- | 
|  `SSM_PARAMETER_STORE_TIMEOUT_MILLIS`  |  Parameter Store에 대한 요청 제한 시간(밀리초)입니다.   0 값은 시간 제한이 없는 것을 나타냅니다.  | 아니요 | 모든 정수 | 0(제로) | 
|  `SECRETS_MANAGER_TIMEOUT_MILLIS`  |  Secrets Manager에 대한 요청 제한 시간(밀리초)입니다.   값이 0이면 시간 제한이 없습니다.  | 아니요 | 모든 정수 |  0(제로)  | 
|  `SSM_PARAMETER_STORE_TTL`  |  캐시에서 파라미터가 무효화되기 전의 최대 유효 기간(초)입니다. 값이 0이면 캐시가 우회됩니다. `PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE`에 대한 값이 0이면 이 변수는 무시됩니다.  | 아니요 | 0\$1300초(5분) | 300초(5분) | 
|  `SECRETS_MANAGER_TTL`  |  캐시에서 암호가 무효화되기 전의 최대 유효 기간(초)입니다. 값이 0이면 캐시가 우회됩니다. `PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE`에 대한 값이 0이면 이 변수는 무시됩니다.  | 아니요 | 0\$1300초(5분) | 300초(5분) | 
| `PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED` |  확장에 대한 캐시가 활성화되었는지 여부를 결정합니다. 유효한 값: `TRUE \| FALSE`  | 아니요 | TRUE \$1 FALSE | TRUE | 
| `PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE` |  항목 수를 기준으로 한 캐시의 최대 크기입니다. 값이 0이면 캐시가 우회됩니다. 두 캐시 TTL 값이 모두 0인 경우 이 변수는 무시됩니다.  | 아니요 | 0\$11000 |  1000  | 
| `PARAMETERS_SECRETS_EXTENSION_HTTP_PORT` | 로컬 HTTP 서버의 포트입니다. | 아니요 | 1\$165535 |  2773  | 
| `PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS` |  익스텐션에서 Parameter Store 또는 Secrets Manager에 요청하는 데 사용되는 HTTP 클라이언트의 최대 연결 수입니다. Secrets Manager 클라이언트와 Parameter Store 클라이언트가 모두 백엔드 서비스에 연결하는 개수에 대한 클라이언트별 구성입니다.  | 아니요 | 최소값은 1이고 최대 제한은 없습니다. |  3  | 
| `PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL` |  익스텐션에 대해 로그에 보고된 세부 정보 수준입니다. 익스텐션을 설정하고 테스트할 때 캐시 구성에 대한 자세한 내용을 보려면 `DEBUG`를 사용하는 것이 좋습니다. Lambda 작업에 대한 로그는 연결된 CloudWatch Logs 로그 그룹에 자동으로 푸시됩니다.  | 아니요 |  `DEBUG \| WARN \| ERROR \| NONE \| INFO`  | `INFO` | 

## AWS Systems Manager Parameter Store 및 AWS Secrets Manager 익스텐션 사용을 위한 샘플 명령
<a name="ps-integration-lambda-extensions-sample-commands"></a>

이 단원의 예제는 AWS Systems Manager Parameter Store 및 AWS Secrets Manager 익스텐션에 사용하기 위한 API 작업을 보여줍니다.

### Parameter Store에 대한 샘플 명령
<a name="sample-commands-ps"></a>

Lambda 확장은 **GetParameter** API 작업에 대한 읽기 전용 액세스를 사용합니다.

이 작업을 호출하려면 다음과 비슷한 HTTP GET 호출을 수행합니다. 이 명령 형식은 표준 파라미터 계층의 파라미터에 대한 액세스를 제공합니다.

```
GET http://localhost:port/systemsmanager/parameters/get?name=parameter-name&version=version&label=label&withDecryption={true|false}
```

이 예제에서 *parameter-name*은 전체 파라미터 이름을 나타냅니다. 예를 들어 계층 구조에 없는 파라미터의 경우 `MyParameter`이고, 계층 구조에 속하는 명명된 파라미터 `/Dev/Production/East/Project-ABC/MyParameter`의 경우 `%2FDev%2FProduction%2FEast%2FProject-ABC%2FMyParameter`입니다.

**참고**  
GET 호출을 사용하는 경우 특수 문자를 보존하려면 파라미터 값을 HTTP용으로 인코딩해야 합니다. 예를 들어 계층적 경로 형식(예: `/a/b/c`)을 지정하는 대신 URL의 일부로 해석될 수 있는 문자(예: `%2Fa%2Fb%2Fc`)를 인코딩합니다.

*version* 및 *label*은 `GetParameter` 작업에 사용할 수 있는 선택기입니다.

```
GET http://localhost:port/systemsmanager/parameters/get/?name=MyParameter&version=5
```

계층 구조로 파라미터를 호출하려면 HTTP GET을 다음과 비슷하게 호출합니다.

```
GET http://localhost:port/systemsmanager/parameters/get?name=%2Fa%2Fb%2F&label=release
```

퍼블릭(글로벌) 파라미터를 호출하려면 HTTP GET을 다음과 비슷하게 호출합니다.

```
GET http://localhost:port/systemsmanager/parameters/get/?name=%2Faws%2Fservice%20list%2F…
```

Parameter Store 참조를 사용하여 Secrets Manager 암호에 대한 HTTP GET 호출을 생성하려면 HTTP GET을 다음과 비슷하게 호출합니다.

```
GET http://localhost:port/systemsmanager/parameters/get?name=%2Faws%2Freference%2Fsecretsmanager%2F…
```

파라미터에 대해 Amazon Resource Name(ARN)을 사용하여 호출하려면 HTTP GET을 다음과 비슷하게 호출합니다.

```
GET http://localhost:port/systemsmanager/parameters/get?name=arn:aws:ssm:us-east-1:123456789012:parameter/MyParameter
```

암호 해독을 통해 `SecureString` 파라미터에 액세스하는 호출을 실행하려면 HTTP GET을 다음과 비슷하게 호출합니다.

```
GET http://localhost:port/systemsmanager/parameters/get?name=MyParameter&withDecryption=true
```

`withDecryption`을 생략하거나 `false`로 명시적으로 설정하여 파라미터가 해독되지 않도록 지정할 수 있습니다. 버전, 레이블 또는 둘 모두를 지정할 수도 있습니다. 그러면 URL에서 물음표(`?`) 뒤에 있는 첫 번째 항목만 사용됩니다.

## AWS 파라미터 및 보안 암호 Lambda 확장 ARN
<a name="ps-integration-lambda-extensions-add"></a>

Lambda 확장의 최신 Amazon 리소스 이름(ARN)은 지원되는 각 아키텍처별로 Systems Manager Parameter Store에 퍼블릭 파라미터로 게시됩니다. 애플리케이션이 수동 업데이트 없이 항상 최신 확장 버전을 참조하도록 AWS CLI 또는 CloudFormation을 사용하여 최신 ARN을 프로그래밍 방식으로 검색할 수 있습니다. 이 섹션에서는 ARN을 프로그래밍 방식으로 검색하는 방법을 설명하고, 수동 참조를 위해 각 아키텍처별 현재 ARN 값을 나열한 표를 제공합니다.

### 최신 Lambda 확장 ARN 버전 검색
<a name="ps-integration-lambda-extensions-programmatically-retrieve"></a>

최신 Lambda 확장 ARN 버전은 다음 위치에 퍼블릭 파라미터로 저장되어 있습니다. 코드에서 이러한 퍼블릭 파라미터를 참조하여 검색할 수 있습니다.
+ **x86\$164**: /aws/service/aws-parameters-and-secrets-lambda-extension/x86/latest
+ **arm64**: /aws/service/aws-parameters-and-secrets-lambda-extension/arm64/latest

**AWS CLI**  
AWS CLI를 사용하여 최신 ARN 버전을 검색하려면 다음 명령을 실행합니다.

**x86\$164**

```
aws ssm get-parameter --name "/aws/service/aws-parameters-and-secrets-lambda-extension/x86/latest" --query "Parameter.Value" --output text
```

**arm64**

```
aws ssm get-parameter --name "/aws/service/aws-parameters-and-secrets-lambda-extension/arm64/latest" --query "Parameter.Value" --output text
```

**AWS CloudFormation**  
CloudFormation을 사용하여 Lambda 함수를 배포할 때 다음 YAML 템플릿 예시와 같이 스택 생성 및 업데이트 중에 직접 파라미터를 확인할 수 있습니다. 이 방법을 사용하면 함수가 수동 업데이트 없이 항상 최신 확장 버전을 사용할 수 있습니다.

**x86\$164**

```
Resources:
  MyFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: my-function
      Runtime: python3.11
      Handler: index.handler
      Code:
        ZipFile: |
          def handler(event, context):
              return {'statusCode': 200}
      Layers:
        - !Sub '{{resolve:ssm:/aws/service/aws-parameters-and-secrets-lambda-extension/x86/latest}}'
      Role: !GetAtt MyFunctionRole.Arn
```

**arm64**

```
Layers:
  - !Sub '{{resolve:ssm:/aws/service/aws-parameters-and-secrets-lambda-extension/arm64/latest}}'
```

**참고**  
`{{resolve:ssm:parameter-name}}` 구문은 스택 작업 중에 파라미터 값을 자동으로 검색합니다. 이렇게 하면 항상 현재 ARN을 사용하여 배포할 수 있습니다.

### 최신 확장 ARN
<a name="ps-integration-lambda-extensions-manually-retrieve"></a>

다음 표는 지원되는 아키텍처 및 리전에 대한 익스텐션 ARN을 제공합니다.

**Topics**
+ [x86\$164 및 x86 아키텍처용 익스텐션 ARN](#intel)
+ [ARM64 및 Mac with Apple silicon 아키텍처용 익스텐션 ARN](#arm64)

#### x86\$164 및 x86 아키텍처용 익스텐션 ARN
<a name="intel"></a>

최종 업데이트 날짜: 2026년 2월 17일


****  

| 리전 | ARN | 
| --- | --- | 
| 미국 동부(오하이오) | `arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension:67` | 
| 미국 동부(버지니아 북부) | `arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| 미국 서부(캘리포니아 북부) | `arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension:59` | 
| 미국 서부(오리건) | `arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| 아프리카(케이프타운) | `arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension:60` | 
| 아시아 태평양(홍콩) | `arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension:60` | 
| 아시아 태평양(타이베이) | `arn:aws:lambda:ap-east-2:890742577149:layer:AWS-Parameters-and-Secrets-Lambda-Extension:33` | 
| 아시아 태평양(하이데라바드) 리전 | `arn:aws:lambda:ap-south-2:070087711984:layer:AWS-Parameters-and-Secrets-Lambda-Extension:55` | 
| 아시아 태평양(자카르타) | `arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 아시아 태평양(멜버른) | `arn:aws:lambda:ap-southeast-4:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension:48` | 
| 아시아 태평양(말레이시아) | `arn:aws:lambda:ap-southeast-5:381492012281:layer:AWS-Parameters-and-Secrets-Lambda-Extension:47` | 
| 아시아 태평양(뉴질랜드) | `arn:aws:lambda:ap-southeast-6:995508174458:layer:AWS-Parameters-and-Secrets-Lambda-Extension:42` | 
| 아시아 태평양(뭄바이) | `arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 아시아 태평양(오사카) | `arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 아시아 태평양(서울) | `arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension:59` | 
| 아시아 태평양(싱가포르) | `arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| 아시아 태평양(시드니) | `arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension:63` | 
| 아시아 태평양(태국) | `arn:aws:lambda:ap-southeast-7:941377119484:layer:AWS-Parameters-and-Secrets-Lambda-Extension:48` | 
| 아시아 태평양(도쿄) | `arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension:60` | 
| 캐나다(중부) | `arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension:65` | 
| 캐나다 서부(캘거리) | `arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension:35` | 
| 중국(베이징) | `arn:aws-cn:lambda:cn-north-1:287114880934:layer:AWS-Parameters-and-Secrets-Lambda-Extension:64` | 
| 중국(닝샤) | `arn:aws-cn:lambda:cn-northwest-1:287310001119:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| 유럽(프랑크푸르트) | `arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| 유럽(아일랜드) | `arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension:63` | 
| 유럽(런던) | `arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension:59` | 
| 유럽(밀라노) | `arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 유럽(파리) | `arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 유럽(스페인) 리전 | `arn:aws:lambda:eu-south-2:524103009944:layer:AWS-Parameters-and-Secrets-Lambda-Extension:54` | 
| AWS European Sovereign Cloud(독일) | `arn:aws-eusc:lambda:eusc-de-east-1:041683371183:layer:AWS-Parameters-and-Secrets-Lambda-Extension:5` | 
| 유럽(스톡홀름) | `arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 이스라엘(텔아비브) | `arn:aws:lambda:il-central-1:148806536434:layer:AWS-Parameters-and-Secrets-Lambda-Extension:35` | 
| 유럽(취리히) 리전 | `arn:aws:lambda:eu-central-2:772501565639:layer:AWS-Parameters-and-Secrets-Lambda-Extension:42` | 
| 멕시코(중부) 리전 | `arn:aws:lambda:mx-central-1:241533131596:layer:AWS-Parameters-and-Secrets-Lambda-Extension:32` | 
| 중동(바레인) | `arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 중동(UAE) | `arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| 남아메리카(상파울루) | `arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| AWS GovCloud(미국 동부) | `arn:aws-us-gov:lambda:us-gov-east-1:129776340158:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| AWS GovCloud(미국 서부) | `arn:aws-us-gov:lambda:us-gov-west-1:127562683043:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 

#### ARM64 및 Mac with Apple silicon 아키텍처용 익스텐션 ARN
<a name="arm64"></a>

최종 업데이트 날짜: 2026년 2월 17일


****  

| 리전 | ARN | 
| --- | --- | 
| 미국 동부(오하이오) | `arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:67` | 
| 미국 동부(버지니아 북부) | `arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| 미국 서부(캘리포니아 북부) 리전 | `arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:56` | 
| 미국 서부(오리건) | `arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| 아프리카(케이프타운) 리전 | `arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:57` | 
| 아시아 태평양(홍콩) | `arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:57` | 
| 아시아 태평양(타이베이) | `arn:aws:lambda:ap-east-2:890742577149:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:29` | 
| 아시아 태평양(하이데라바드) 리전 | `arn:aws:lambda:ap-south-2:070087711984:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| 아시아 태평양(자카르타) | `arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| 아시아 태평양(멜버른) | `arn:aws:lambda:ap-southeast-4:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| 아시아 태평양(말레이시아) | `arn:aws:lambda:ap-southeast-5:381492012281:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| 아시아 태평양(뉴질랜드) | `arn:aws:lambda:ap-southeast-6:995508174458:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:40` | 
| 아시아 태평양(뭄바이) | `arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:58` | 
| 아시아 태평양(오사카) | `arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| 아시아 태평양(서울) 리전 | `arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:56` | 
| 아시아 태평양(싱가포르) | `arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| 아시아 태평양(시드니) | `arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:63` | 
| 아시아 태평양(태국) | `arn:aws:lambda:ap-southeast-7:941377119484:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| 아시아 태평양(도쿄) | `arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:60` | 
| 캐나다(중부) 리전 | `arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:62` | 
| 캐나다 서부(캘거리) | `arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:34` | 
| 중국(베이징) | `arn:aws-cn:lambda:cn-north-1:287114880934:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:53` | 
| 중국(닝샤) | `arn:aws-cn:lambda:cn-northwest-1:287310001119:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:50` | 
| 유럽(프랑크푸르트) | `arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| 유럽(아일랜드) | `arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:63` | 
| 유럽(런던) | `arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:59` | 
| 유럽(밀라노) 리전 | `arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| 유럽(파리) 리전 | `arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| 유럽(스페인) 리전 | `arn:aws:lambda:eu-south-2:524103009944:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:46` | 
| 유럽(스톡홀름) 리전 | `arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| 이스라엘(텔아비브) | `arn:aws:lambda:il-central-1:148806536434:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:34` | 
| 유럽(취리히) 리전 | `arn:aws:lambda:eu-central-2:772501565639:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:34` | 
| 멕시코(중부) 리전 | `arn:aws:lambda:mx-central-1:241533131596:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:31` | 
| 중동(바레인) | `arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| 중동(UAE) | `arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| 남아메리카(상파울루) 리전 | `arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:58` | 
| AWS GovCloud(미국 동부) | `arn:aws-us-gov:lambda:us-gov-east-1:129776340158:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| AWS GovCloud(미국 서부) | `arn:aws-us-gov:lambda:us-gov-west-1:127562683043:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 