0
0

Amplify override authでSecrets Managerを利用する

Posted at

概要

Amplify override authで認証情報を設定する際、ソースコードに認証情報を書くわけにはいかず、Gitに含めるわけにもいかず、環境ごとに自動で値が設定されるようにしたいということがあります。その場合、Secrets Managerを使用することができます。

Amplify override authでSecrets Managerを参照させる方法

こちらの記事に詳しく書かれていたため、こちらを参照ください。
下記のように書くことになるかと思います。

import { AmplifyAuthCognitoStackTemplate, getProjectInfo } from '@aws-amplify/cli-extensibility-helper'

export function override(resources: AmplifyAuthCognitoStackTemplate) {
  const serviceName = 'abc' // サービスの名前(お好きに)
  const providerName = 'xyz' // プロバイダの名前(お好きに)
  const { envName, projectName } = getProjectInfo()
  const secretName = `${serviceName}/${envName}/${providerName}` // お好きに

  resources.addCfnResource(
    {
      // 中略
      properties: {
        // 中略
        ProviderDetails: {
          client_id: `{{resolve:secretsmanager:${secretName}:SecretString:PROVIDER_CLIENT_ID}}`,
          client_secret: `{{resolve:secretsmanager:${secretName}:SecretString:PROVIDER_CLIENT_SECRET}}`,
          // 中略
        },
        // 中略
      },
    },
    // 中略
  )
}

Secrets Managerに認証情報をセットする方法

こちらが本題ですが、Secrets Managerに認証情報をセットするためのコマンドです。

ENV="<環境名>"
PROFILE="<AWSプロファイル名>"
SERVICE_NAME="abc"
PROVIDER_NAME="xyz"
echo '{"PROVIDER_CLIENT_ID": "<CLIENT ID>","PROVIDER_CLIENT_SECRET": "<CLIENT SECRET>"}' > secret.json
SECRET_NAME="$SERVICE_NAME/$ENV/$PROVIDER_NAME"
aws secretsmanager create-secret --name "$SECRET_NAME" --description "$SERVICE_NAME $ENV $PROVIDER_NAME SECRET" --secret-string file://secret.json --profile "$PROFILE"

新しい環境を作成するたびにこちらを事前に実行する必要があります。

参考

Amplify override authでSecrets Managerの値を取得する
AWS CloudFormation リソースの AWS Secrets Manager シークレットを取得する

バージョン情報

% amplify -v
12.10.1
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0