Systems Manager Parameter Store から値を取得する - AWS Cloud Development Kit (AWS CDK) v2

これはAWS CDK v2 開発者ガイドです。古いCDK v1は2022年6月1日にメンテナンスを開始し、今後は重大なバグ修正とセキュリティパッチのみが提供されます。新機能はCDK v2専用に開発されます。CDK v1 Support は、2023 年 6 月 1 日に完全に終了します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Systems Manager Parameter Store から値を取得する

AWS CDKAWS Systems Managerはパラメータストア属性の値を取得できます。合成中、AWS CDKはトークンを生成しますが、AWS CloudFormationそのトークンはデプロイ中に解決されます

は、AWS CDKプレーン値とセキュア値の両方の取得をサポートしています。どちらの種類の値の特定のバージョンをリクエストしてもかまいません。単純な値の場合のみ、リクエストからバージョンを省略して最新バージョンを受け取ることができます。セキュア属性の値をリクエストするときは、必ずバージョンを指定する必要があります。

注記

このトピックでは、AWS Systems Managerパラメータストアから属性を読み取る方法を示します。シークレットを読むこともできますAWS Secrets Manager (を参照値を取得AWS Secrets Manager)。

デプロイ時にSystems Manager の値を読み取る

Systems Manager パラメータストアから値を読み取るには、valueForStringvalueForSecureStringParameterパラメータとメソッドを使用します。必要な属性がプレーン文字列か安全な文字列値かに基づいて方法を選択します。これらのメソッドは、実際の値ではなくトークンを返します。AWS CloudFormationこの値はデプロイ中に解決されます。

現在、AWSこの機能をサポートしているサービスは限られています

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

合成時のSystems Manager 値の読み取り

合成時にパラメータを「ベイクイン」すると便利な場合があります。このように、AWS CloudFormation生成されるテンプレートは、デプロイ中に値を解決するのではなく、常に同じ値を使用します。

合成時に Systems Manager パラメータストアから値を読み取るには、valueFromLookup次のメソッドを使用します (Python: value_from_lookup)。 このメソッドは、ランタイムコンテキストパラメータの実際の値を値として返します。cdk.json値がまだキャッシュされていないか、コマンドラインに渡されていない場合は、AWS現在のアカウントから取得されます。このため、スタックは明示的なアカウントおよびリージョン情報と合成する必要があります

取得できるのは Systems Manager の文字列のみで、安全な文字列は取得できません。特定のバージョンをリクエストすることはできません。常に最新バージョンが返されます。

重要

取得した値は、AWS CloudFormation最終的に合成テンプレートに格納されます。AWS CloudFormationテンプレートにアクセスできるユーザーとその価値によっては、これはセキュリティ上のリスクとなる可能性があります。一般的に、パスワードやキーなどの非公開にしたい値にはこの機能を使用しないでください。

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 への値の書き込み

AWSCLIAWS 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"