이는 AWS CDK v2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.
Systems Manager Parameter Store에서 값 가져오기
AWS Cloud Development Kit(AWS CDK)는 AWS Systems Manager Parameter Store 속성의 값을 검색할 수 있습니다. 합성 중 AWS CDK는 배포 중 AWS에서 확인되는 토큰을 생성합니다.
AWS CDK는 일반 값과 보안 값 모두 검색할 수 있습니다. 두 가지 유형의 특정 버전을 요청할 수 있습니다. 일반 값의 경우 요청에서 버전을 생략하여 최신 버전을 검색할 수 있습니다. 보안 값의 경우 보안 속성의 값을 요청할 때 버전을 지정해야 합니다.
배포 시 Systems Manager 값 읽기
Systems Manager Parameter Store에서 값을 읽으려면 valueForStringParameter 및 valueForSecureStringParameter 메서드를 사용합니다. 원하는 속성이 일반 문자열인지 아니면 보안 문자열 값인지에 따라 메서드를 선택합니다. 이러한 메서드는 실제 값이 아닌 토큰을 반환합니다. 이 값은 배포 중 AWS CloudFormation에서 확인됩니다. 다음은 예제입니다.
- TypeScript
-
import * as ssm from 'aws-cdk-lib/aws-ssm';
// Get latest version or specified version of plain string attribute
const latestStringToken = ssm.StringParameter.valueForStringParameter(
this, 'my-plain-parameter-name'); // latest version
const versionOfStringToken = ssm.StringParameter.valueForStringParameter(
this, 'my-plain-parameter-name', 1); // version 1
// Get specified version of secure string attribute
const secureStringToken = ssm.StringParameter.valueForSecureStringParameter(
this, 'my-secure-parameter-name', 1); // must specify version
- JavaScript
-
const ssm = require('aws-cdk-lib/aws-ssm');
// Get latest version or specified version of plain string attribute
const latestStringToken = ssm.StringParameter.valueForStringParameter(
this, 'my-plain-parameter-name'); // latest version
const versionOfStringToken = ssm.StringParameter.valueForStringParameter(
this, 'my-plain-parameter-name', 1); // version 1
// Get specified version of secure string attribute
const secureStringToken = ssm.StringParameter.valueForSecureStringParameter(
this, 'my-secure-parameter-name', 1); // must specify version
- Python
-
import aws_cdk.aws_ssm as ssm
# Get latest version or specified version of plain string attribute
latest_string_token = ssm.StringParameter.value_for_string_parameter(
self, "my-plain-parameter-name")
latest_string_token = ssm.StringParameter.value_for_string_parameter(
self, "my-plain-parameter-name", 1)
# Get specified version of secure string attribute
secure_string_token = ssm.StringParameter.value_for_secure_string_parameter(
self, "my-secure-parameter-name", 1) # must specify version
- Java
-
import software.amazon.awscdk.services.ssm.StringParameter;
//Get latest version or specified version of plain string attribute
String latestStringToken = StringParameter.valueForStringParameter(
this, "my-plain-parameter-name"); // latest version
String versionOfStringToken = StringParameter.valueForStringParameter(
this, "my-plain-parameter-name", 1); // version 1
//Get specified version of secure string attribute
String secureStringToken = StringParameter.valueForSecureStringParameter(
this, "my-secure-parameter-name", 1); // must specify version
- C#
-
using Amazon.CDK.AWS.SSM;
// Get latest version or specified version of plain string attribute
var latestStringToken = StringParameter.ValueForStringParameter(
this, "my-plain-parameter-name"); // latest version
var versionOfStringToken = StringParameter.ValueForStringParameter(
this, "my-plain-parameter-name", 1); // version 1
// Get specified version of secure string attribute
var secureStringToken = StringParameter.ValueForSecureStringParameter(
this, "my-secure-parameter-name", 1); // must specify version
현재 이 기능을 지원하는 AWS 서비스는 제한되어 있습니다.
합성 시 Systems Manager 값 읽기
경우에 따라 합성 시 파라미터를 제공하는 것이 유용합니다. 이를 수행하기 위해 AWS CloudFormation 템플릿은 배포 중 값을 해결하는 대신 항상 동일한 값을 사용합니다.
합성 시 Systems Manager Parameter Store에서 값을 읽으려면 valueFromLookup 메서드(Python: value_from_lookup)를 사용합니다. 이 메서드는 파라미터의 실제 값을 컨텍스트 값 및 AWS CDK 값으로 반환합니다. 값이 cdk.json에 아직 캐시되어 있지 않거나 명령줄에 전달되지 않은 경우 현재 AWS 계정에서 검색됩니다. 따라서 스택을 명시적 AWS 환경 정보로 합성해야 합니다.
다음은 예제입니다.
- TypeScript
-
import * as ssm from 'aws-cdk-lib/aws-ssm';
const stringValue = ssm.StringParameter.valueFromLookup(this, 'my-plain-parameter-name');
- JavaScript
-
const ssm = require('aws-cdk-lib/aws-ssm');
const stringValue = ssm.StringParameter.valueFromLookup(this, 'my-plain-parameter-name');
- Python
-
import aws_cdk.aws_ssm as ssm
string_value = ssm.StringParameter.value_from_lookup(self, "my-plain-parameter-name")
- Java
-
import software.amazon.awscdk.services.ssm.StringParameter;
String stringValue = StringParameter.valueFromLookup(this, "my-plain-parameter-name");
- C#
-
using Amazon.CDK.AWS.SSM;
var stringValue = StringParameter.ValueFromLookup(this, "my-plain-parameter-name");
일반 Systems Manager 문자열만 검색할 수 있습니다. 보안 문자열을 검색할 수 없습니다. 최신 버전은 항상 반환됩니다. 특정 버전은 요청할 수 없습니다.
검색된 값은 합성된 AWS CloudFormation 템플릿에 저장됩니다. AWS CloudFormation 템플릿에 액세스할 수 있는 사용자 및 템플릿의 가치 유형에 따라 보안 위험이 발생할 수 있습니다. 일반적으로 암호, 키 또는 비공개로 유지하려는 기타 값에는 이 기능을 사용하지 마세요.
Systems Manager에 값 쓰기
AWS CLI, AWS Management Console 또는 AWS SDK를 사용하여 Systems Manager 파라미터 값을 설정할 수 있습니다. 다음 예제에서는 ssm put-parameter CLI 명령을 사용하는 방법을 보여줍니다.
aws ssm put-parameter --name "parameter-name" --type "String" --value "parameter-value"
aws ssm put-parameter --name "secure-parameter-name" --type "SecureString" --value "secure-parameter-value"
이미 존재하는 SSM 값을 업데이트할 때 --overwrite 옵션도 포함합니다.
aws ssm put-parameter --overwrite --name "parameter-name" --type "String" --value "parameter-value"
aws ssm put-parameter --overwrite --name "secure-parameter-name" --type "SecureString" --value "secure-parameter-value"