📖

AWSのパラメータストアを使ってみた

2023/04/04に公開

はじめに

パラメータストアで設定情報やシークレット情報を管理し、Golangで管理した値を取得する方法を調べ、実践してみました。

パラメータストアについて

AWS SSM パラメータストアは、AWSのサービスの設定値やシークレットを安全に保存するためのサービスです。GolangでAWS SSMパラメータストアから設定値を取得する方法を説明します。

パラメータストアへの設定方法

AWS マネジメントコンソールにログインし、AWS SSM パラメータストアを開きます。
パラメータを作成するために、[パラメータの作成] ボタンをクリックします。

パラメータの詳細を入力します。ここでは、パラメータ名、値、説明を指定します。
パラメータ名:param-name
値:test parameter

保存したパラメータは、パラメータ名で検索して表示することができます。

クレデンシャル情報を作成

AWSのクレデンシャル情報を作成するには、AWSのコンソールにログインして手動で作成する方法と、AWS CLIを使用して作成する方法があります。

今回は、手動で作成しました。以下の手順に従って作成します。

  1. AWSのコンソールにログインします。
  2. 右上のメニューから「セキュリティ認証情報」を選択します。
  3. 「アクセスキー (アクセスキー ID とシークレットアクセスキー)」のセクションで、「アクセスキーの作成」をクリックします。
  4. 「主要なベストプラクティスと代替案にアクセスする」で、「ローカルコード」を選択します。
  5. 「説明タグ値」を記載します。
  6. ダウンロードした「Secret access key」と、確認した「Access key ID」をクレデンシャル情報として使用できます。

クレデンシャルについて

AWSの各種サービスにアクセスするためには、AWSの認証情報が必要となります。認証情報がなければ、AWSのサービスにアクセスすることはできません。

AWSでは、クレデンシャル情報を用いて認証を行います。クレデンシャル情報には、アクセスキーIDとシークレットアクセスキーの2つがあります。これらの情報は、AWSのマネジメントコンソールから取得できます。

クレデンシャル情報を設定しないと、AWSのサービスにアクセスすることができず、API呼び出しが失敗します。また、誤ってクレデンシャル情報を公開すると、第三者にAWSのアカウントに不正アクセスされる可能性があります。そのため、クレデンシャル情報の管理は非常に重要です。

環境変数にクレデンシャルを設定

export AWS_ACCESS_KEY_ID=xxxx
export AWS_SECRET_ACCESS_KEY=xxxx

実装

AWS SDK for Goをインストールする

AWS SDK for Goをインストールするために、以下のコマンドを実行します。

go get -u github.com/aws/aws-sdk-go

AWS SDK for Goは、Go言語でAWSの各種サービスを利用するためのツールセットです。AWSのAPIにアクセスするためのラッパーとなるAPIクライアントが含まれており、AWSの各種サービスに対して簡単にアクセスすることができます。
https://github.com/aws/aws-sdk-go
https://aws.amazon.com/jp/sdk-for-go/

AWSセッションを作成する

AWSセッションを作成するために、以下のコードを追加します。

sess, err := session.NewSession(&aws.Config{
	Region:      aws.String("us-east-1"),
})

SSMパラメータストアの値を取得する

SSMパラメータストアから値を取得するには、以下のコードを使用します。

svc := ssm.New(sess)

param, err := svc.GetParameter(&ssm.GetParameterInput{
    Name:           aws.String("param-name"),
    WithDecryption: aws.Bool(true),
})

if err != nil {
    // エラー処理
}

value := *param.Parameter.Value

実行結果

2023/04/03 12:51:23 test parameter

感想

AWSのパラメータストアを使ってみて、とても便利だと感じました。パラメータストアを使うことで、設定情報を分離して管理することができるようになりました。

パラメータストアを使うことで、設定値の変更や、新たな設定値の追加も簡単に行えます。また、AWS CLIやSDKを使えば、コード内でパラメータストアから値を取得することもでき、設定値の変更や追加に伴うコードの修正も不要です。

パラメータストアのセキュリティもしっかりしているため、クレデンシャル情報の管理も安心して行えました。
以上のような理由から、AWSのパラメータストアを使うことをおすすめします。

レスキューナウテックブログ

Discussion