ASK CLIを使った認証情報の管理



ASK CLIを使った認証情報の管理

Alexa Skills Kitコマンドラインインターフェース(ASK CLI)では、既存スキルのクローンを作成したり、スキルをデプロイしたり、Amazon開発者サービスと対話したりする際に開発者を認証できるようにAmazon開発者認証情報を保存します。ASK CLIを使ってバックエンドコードにAWS Lambdaを使用するスキルを管理する場合は、アマゾンウェブサービス(AWS)認証情報への参照も保存します。以下のセクションでは、ASK CLIを使ってAmazon開発者認証情報とAWS認証情報を設定し、管理する方法について説明します。

プロファイルとは

ASK CLIはプロファイル を使用します。これは認証情報のセットを保存する容器(コンテナー)のようなものです。プロファイルを使うと、複数のAmazon開発者認証情報やAWSアカウントの認証情報のセットを設定し、すべてASK CLIで使用することができます。プロファイルにより、複数のAmazon開発者組織が所有するスキルや、複数のAWSアカウントが所有するAWS Lambdaで書かれたバックエンドコードを管理しやすくなります。以下のセクションでは、複数の認証情報セットをプロファイルに設定する方法を説明します。

デフォルトでは、ASK CLIはAmazon開発者認証情報をdefaultというプロファイルに保存します。defaultプロファイルは、Amazon開発者認証情報が1セットのみの場合に使用します。Amazon開発者認証情報のセットを複数使用する場合は、ask initコマンドで新しいプロファイルを作成します。このとき、ASK CLIコマンドに-pまたは--profileを使って使用するプロファイルを指定するか、環境変数ASK_DEFAULT_PROFILEを使います。変数の値に、profile_2など、ASK CLIで使うプロファイル名を設定します。

プロファイルの優先順位

ASK CLIは、以下の順序でプロファイルを検索します。

  1. ASK CLIコマンドに-pまたは--profileのオプションがある場合、ASK CLIはこれらのオプションで指定されたプロファイルを使います。
  2. コマンドに-pまたは--profileのオプションがない場合、ASK CLIはASK_DEFAULT_PROFILE環境変数で指定されたプロファイルを使います。
  3. コマンドに-pまたは--profileがなく、ASK_DEFAULT_PROFILE環境変数もない場合、ASK CLIはASK CLIコンフィギュレーションファイル(cli_config)にあるdefaultというプロファイルを使います。

    コンフィギュレーションファイルの詳細については、Amazon開発者認証情報を直接管理するを参照してください。

ASK CLIコンフィギュレーションファイルに保存されるプロファイルの情報は、ask init --list-profilesで参照できます。

「ask init」コマンドを使って認証情報を設定する

ASK CLIでAmazon開発者認証情報とAWS認証情報を設定するには、ask initコマンドを使います。

ask initを初めて実行する際には、ASK CLIがウェブブラウザを開きます。ここからAmazon開発者アカウントにサインインできます。Amazon開発者アカウントにサインインしたら、ウェブページでASK CLIに必要なアクセスを許可します。ASK CLIはコンフィギュレーションファイルを作成し、このファイルのdefaultというプロファイルにAmazon開発者認証情報を保存します。コンフィギュレーションファイルの詳細については、Amazon開発者認証情報を直接管理するを参照してください。

ASK CLIにコンフィギュレーションファイルがある場合、ask initを実行すると、既存のASK CLIプロファイルを上書きするか、新規に作成するかを選択するようプロンプトが表示されます。また、ASK CLIは既存のAWSプロファイルも検索し、見つかった場合は、既存のAWSプロファイルを使うか、新規に作成するかを選択するようプロンプトを表示します。ASK CLIを使ったAWS認証情報の管理の詳細については、AWS認証情報を直接管理するを参照してください。

ウェブブラウザのない環境でask initを使う場合、--no-browserオプションを使います(ask init --no-browser)。

ask initコマンドの完全な構文と利用可能なオプションについては、ASK CLIコマンドリファレンスでinitコマンドを参照してください。

Amazon開発者認証情報を直接管理する

ask initコマンドを使うと、ASK CLIで使用するAmazon開発者認証情報を管理できます。ask initでは、以下の操作ができます。

  • ask initを使用して、新しいプロファイルを作成するか、既存のプロファイルを上書きします。
  • ask init --list-profilesを使用して、既存のASK CLIプロファイルと関連するAWSプロファイルのリストを表示します。
  • ask init -p <プロファイル名>を使用し、指定した名前のプロファイルを作成するか、上書きします。

ASK CLIで使うAmazon開発者認証情報を管理するには、ASK CLIコンフィギュレーションファイルを直接編集するか、ASK CLI環境変数を使用するという方法もあります。これらの方法については、以下のセクションで説明します。

ASK CLIコンフィギュレーションファイル

ASK CLIコンフィギュレーションファイルは、ホームディレクトリ(.askフォルダ)にcli_configファイルとして保存されます。以下は、ASK CLIコンフィギュレーションファイルの例です。

{
  "profiles": {
    "default": {
      "aws_profile": "ask_cli_default",
      "token": {
        "access_token": "Atza| ... ",
        "refresh_token": "Atzr| ... ",
        "token_type": "bearer",
        "expires_in": 3600,
        "expires_at": "2019-01-21T01:13:37.228Z"
      },
      "vendor_id": "ABCD1234 ..."
    },
    "profile2": {
      "aws_profile": "ask_cli_2",
      "token": {
        "access_token": "Atza| ... ",
        "refresh_token": "Atzr| ... ",
        "token_type": "bearer",
        "expires_in": 3600,
        "expires_at": "2019-01-21T02:02:07.833Z"
      },
      "vendor_id": "ABCD1234 ..."
    }
  }
}

ASK CLIプロファイルを変更するには、このファイルを直接編集します。たとえば、プロファイル名の変更、関連するAWSプロファイルの変更、Amazon開発者ベンダーIDの変更などができます。

AWSプロファイル

aws_profileの値は、AWSコンフィギュレーションファイルのプロファイルを表します。AWSプロファイルの詳細については、AWS認証情報を直接管理するを参照してください。

ベンダーID

vendor_idの値は、ASK CLIプロファイルと関連付けられたAmazon開発者ベンダーIDを表します。すべてのAmazon開発者アカウントには、1つのカスタマーIDと1つ以上のベンダーIDが関連付けられています。これらのIDを確認するには、https://developer.amazon.com/mycid.htmlにアクセスし、Amazon開発者アカウントでサインインします。ask initを実行し、複数のベンダーIDを持つAmazon開発者アカウントでサインインすると、ASK CLIからベンダーIDを1つ選ぶよう求められます。

プロファイルを環境変数に関連付ける

Amazon開発者認証情報は、ASK CLIコンフィギュレーションファイルではなく、環境変数に保存することもできます。この場合、ASK CLIコンフィギュレーションは一切必要ありません。詳細については、ASK CLI環境変数を参照してください。

ASK CLI環境変数

ASK CLI環境変数は、ASK CLIコンフィギュレーションファイルと組み合わせて使うことも、追加して使うこともできます。以下は、ASK CLI環境変数の一覧です。

ASK_DEFAULT_PROFILE
この環境変数は、ASK CLIコンフィギュレーションファイルと組み合わせて使います。コンフィギュレーションファイルにあるプロファイルのいずれかを値として設定すると、ASK CLIはそのプロファイルの認証情報を使用します。
ASK_ACCESS_TOKEN
この環境変数は、Amazon開発者アクセストークンを保存するのに使います。この環境変数が存在する場合、ASK CLIはコンフィギュレーションファイルの認証情報ではなく、この変数の値を使用します。
ASK_REFRESH_TOKEN
この環境変数は、Amazon開発者更新トークンを保存するのに使います。この環境変数が存在する場合、ASK CLIはコンフィギュレーションファイルの認証情報ではなく、この変数の値を使用します。この環境変数とASK_ACCESS_TOKENが両方存在する場合、ASK CLIはこの環境変数の値を使用します。
ASK_VENDOR_ID
この環境変数は、Amazon開発者ベンダーIDを保存するのに使います。この環境変数が存在する場合、ASK CLIはコンフィギュレーションファイルにあるベンダーIDではなく、この環境変数の値を使用します。

AWS認証情報を直接管理する

ASK CLIを使ってバックエンドコードにAWS Lambdaを使用するスキルの作成と管理を行うには、AWS認証情報が必要です。AWS開発者の場合、AWS認証情報を既に持っている可能性があります。AWS認証情報を持っていないか、持っているかどうか不明な場合は、AWS認証情報を作成するを参照してください。

ask initコマンドを使うと、ASK CLIで使用するAWS認証情報を管理できます。ask initでは、以下の操作ができます。

  • ask init --aws-setupを使用して、新しいAWSプロファイルを作成するか、既存のプロファイルを上書きします。
  • ask init --list-profilesを使用して、既存のASK CLIプロファイルと関連するAWSプロファイルのリストを表示します。

ASK CLIで使うAWS認証情報を管理するには、AWS認証情報ファイルを直接編集するか、AWS環境変数を使用するという方法もあります。これらの方法については、以下のセクションで説明します。

AWS認証情報ファイル

AWS開発者の場合、AWS認証情報ファイルにAWS認証情報が既に保存されている可能性があります。ASK CLIで使うAWS認証情報の作成方法については、AWS認証情報を作成するを参照してください。

AWS認証情報ファイルにAWS認証情報が存在する場合、ASK CLIはその認証情報を使います。ask initコマンドを使ってAWS認証情報を設定すると、ASK CLIはこの認証情報をAWS認証情報ファイルに追加します。ファイルがない場合は作成します。デフォルトでは、ASK CLIは、AWS認証情報ファイルにあるask_cli_defaultというプロファイルにAWS認証情報を保存します。

AWS認証情報ファイルの詳細については、AWSドキュメントで設定ファイルと認証情報ファイル名前付きプロファイルを参照してください。

AWS環境変数

AWS認証情報は、AWS認証情報ファイルではなく、環境変数に保存することもできます。AWS環境変数が存在する場合、ASK CLIはAWS認証情報ファイルの値ではなく、この環境変数の値を使います。ASK CLIは、以下のAWS環境変数を検索します。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

AWS環境変数の詳細については、AWSドキュメントで環境変数を参照してください。

AWS認証情報を作成する

ASK CLIを使ってバックエンドコードにAWS Lambdaを使用するスキルの作成と管理を行うには、AWS認証情報が必要です。AWS開発者の場合、AWS認証情報を既に持っている可能性があります。AWS認証情報を持っていないか、持っているかどうか不明な場合は、次の手順で作成します。

AWS認証情報を作成するには

  1. AWSマネジメントコンソールにサインインします。
  2. IAMコンソールを開きます。AWS IAM(Identity & Access Management)は、AWS認証情報の管理に使用するサービスです。
  3. ポリシーをクリックして、ポリシーの作成をクリックします。
  4. ポリシーの作成ページで、以下の手順を行います。
    1. JSONタブをクリックして、policyフィールドのコンテンツを削除します。
    2. 以下のポリシーをコピーして、policyフィールドに貼り付けます。
      {
        "Version": "2012-10-17",
        "Statement": {
          "Effect": "Allow",
          "Action": [
            "iam:CreateRole",
            "iam:GetRole",
            "iam:AttachRolePolicy",
            "iam:PassRole",
            "lambda:AddPermission",
            "lambda:CreateFunction",
            "lambda:GetFunction",
            "lambda:UpdateFunctionCode",
            "lambda:ListFunctions",
            "logs:FilterLogEvents",
            "logs:getLogEvents",
            "logs:describeLogStreams"
          ],
          "Resource": "*"
        }
      }
      
    3. ポリシーの確認をクリックします。
  5. ポリシーの確認ページで、以下の手順を行います。
    1. 名前には、ポリシーの名前を入力します。たとえば、ASK-CLIなどの名前です。
    2. (任意)説明には、説明を入力します。たとえば、「ASK CLIで必要な権限を許可する」と入力します。
    3. ポリシーの作成をクリックします。
  6. ユーザーをクリックして、ユーザーを追加をクリックします。
  7. ユーザー詳細の設定ページで、以下の手順を行います。
    1. ユーザー名フィールドに、ユーザーの名前を入力します。たとえば、ASK-CLIなどの名前です。
    2. アクセスの種類で、プログラムによるアクセスチェックボックスをオンにします。
    3. 次のステップ: アクセス権限をクリックします。
  8. アクセス許可の設定ページで、以下の手順を行います。
    1. ユーザーをグループに追加が選択されていることを確認します。
    2. グループの作成をクリックします。グループの作成ウィンドウで、以下の手順を行います。
      1. グループ名フィールドに、グループの名前を入力します。たとえば、ASK-CLIなどの名前です。
      2. ポリシーのフィルタをクリックして、ユーザーによる管理チェックボックスをオンにします。
      3. 前述の手順(手順5)で作成したポリシーの名前の横にあるチェックボックスをオンにします。記載のとおりに手順を実行した場合、ポリシーの名前はASK-CLIです。
      4. グループの作成をクリックします。
    3. 次のステップ: タグをクリックします。
  9. 次のステップ: 確認をクリックします。
  10. ユーザーの作成をクリックします。
  11. 成功ページで、.csvのダウンロードをクリックして、ユーザーのアクセスキーをダウンロードします。ファイルを安全な場所に保存します。

最後のステップでダウンロードしたファイルの名前は、credentials.csvです。このファイルには、AWS IAMユーザーのアクセスキーIDとシークレットアクセスキーが含まれています。ASK CLIのask initコマンドを使ってAWS認証情報を設定する際に、これらの値を使用します。