

これは AWS CDK v2 デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

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

# Systems Manager Parameter Store から値の取得
<a name="get-ssm-value"></a>

AWS Cloud Development Kit (AWS CDK) は、AWS Systems Manager パラメータストア属性の値を取得できます。合成中、AWS はデプロイ中に AWS CloudFormation によって解決される[トークン](tokens.md)を生成します。

AWS CDK は、プレーン値およびセキュア値の両方の取得をサポートしています。いずれの種類の値における特定のバージョンを要求できます。プレーン値の場合、要求からバージョンを省略して最新バージョンを取得できます。セキュア値の場合、セキュア属性の値を要求するときにバージョンを指定する必要があります。

**注記**  
このトピックでは、AWS Systems Manager Parameter Store から属性を読み取る方法について説明します。AWS Secrets Manager からシークレットを読み取ることもできます (「[AWS Secrets Manager から値を取得する](get-secrets-manager-value.md)」を参照)。

## デプロイ時に Systems Manager 値の読み取り
<a name="ssm-read-at-deploy"></a>

Systems Manager パラメータストアから値を読み取るには、[https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html#static-valuewbrforwbrstringwbrparameterscope-parametername-version](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html#static-valuewbrforwbrstringwbrparameterscope-parametername-version) と [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html#static-valuewbrforwbrsecurewbrstringwbrparameterscope-parametername-version](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html#static-valuewbrforwbrsecurewbrstringwbrparameterscope-parametername-version) メソッドを使用します。目的の属性がプレーン文字列またはセキュア文字列値のいずれであるかに基づき、メソッドを選択します。これらのメソッドは実際の値ではなく、[トークン](tokens.md)を返します。デプロイ中に、値は AWS CloudFormation によって解決されます。以下に例を示します。

**Example**  

```
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
```

```
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
```

```
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
```

```
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
```

```
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 サービスの数は限られています](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#template-parameters-dynamic-patterns-resources)。

## 合成時の Systems Manager 値の読み取り
<a name="ssm-read-at-synth"></a>

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

合成時に Systems Manager パラメータストアから値を読み取るには、[https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html#static-valuewbrfromwbrlookupscope-parametername](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html#static-valuewbrfromwbrlookupscope-parametername) メソッド (Python: `value_from_lookup`) を使用します。このメソッドは、パラメータの実際の値を [コンテキスト値と AWS CDK 値](context.md)として返します。値がコマンドラインにまだ `cdk.json` にキャッシュまたは渡されていない場合、現在の AWS アカウントから取得されます。このため、スタックは明示的な AWS 環境情報で合成する*必要*があります。

以下に例を示します。

**Example**  

```
import * as ssm from 'aws-cdk-lib/aws-ssm';

const stringValue = ssm.StringParameter.valueFromLookup(this, 'my-plain-parameter-name');
```

```
const ssm = require('aws-cdk-lib/aws-ssm');

const stringValue = ssm.StringParameter.valueFromLookup(this, 'my-plain-parameter-name');
```

```
import aws_cdk.aws_ssm as ssm

string_value = ssm.StringParameter.value_from_lookup(self, "my-plain-parameter-name")
```

```
import software.amazon.awscdk.services.ssm.StringParameter;

String stringValue = StringParameter.valueFromLookup(this, "my-plain-parameter-name");
```

```
using Amazon.CDK.AWS.SSM;

var stringValue = StringParameter.ValueFromLookup(this, "my-plain-parameter-name");
```

取得できるのは、通常の Systems Manager 文字列のみです。セキュアな文字列を取得できません。常に最新バージョンが返されます。特定のバージョンは要求できません。

**重要**  
取得された値は合成された AWS CloudFormation テンプレートに残ります。AWS CloudFormation テンプレートにアクセスできるユーザーおよびその価値の種類によっては、セキュリティ上のリスクになる場合があります。一般的に、この機能はプライベートにしたいパスワード、キー、その他の値には使用しないでください。

## Systems Manager に値を書き込む
<a name="ssm-write"></a>

AWS CLI、AWS マネジメントコンソール、AWS SDK を使用して Systems Manager パラメータ値を設定できます。次の例では、[https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html) 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"
```