はじめに
パラメータストアで設定情報やシークレット情報を管理し、Golangで管理した値を取得する方法を調べ、実践してみました。
パラメータストアについて
AWS SSM パラメータストアは、AWSのサービスの設定値やシークレットを安全に保存するためのサービスです。GolangでAWS SSMパラメータストアから設定値を取得する方法を説明します。
パラメータストアへの設定方法
AWS マネジメントコンソールにログインし、AWS SSM パラメータストアを開きます。
パラメータを作成するために、[パラメータの作成] ボタンをクリックします。
パラメータの詳細を入力します。ここでは、パラメータ名、値、説明を指定します。
パラメータ名:param-name
値:test parameter
保存したパラメータは、パラメータ名で検索して表示することができます。
クレデンシャル情報を作成
AWSのクレデンシャル情報を作成するには、AWSのコンソールにログインして手動で作成する方法と、AWS CLIを使用して作成する方法があります。
今回は、手動で作成しました。以下の手順に従って作成します。
- AWSのコンソールにログインします。
- 右上のメニューから「セキュリティ認証情報」を選択します。
- 「アクセスキー (アクセスキー ID とシークレットアクセスキー)」のセクションで、「アクセスキーの作成」をクリックします。
- 「主要なベストプラクティスと代替案にアクセスする」で、「ローカルコード」を選択します。
- 「説明タグ値」を記載します。
- ダウンロードした「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の各種サービスに対して簡単にアクセスすることができます。
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