はじめてのAdobe I/O Runtimeアクション
– 開発準備編 #AdobeIO

Adobe I/O Corporate

いつもAdobe I/Oブログをご覧いただきありがとうございます。

前回のブログ、Adobe I/O Runtimeの紹介では、Adobe I/O Runtimeの機能と、Adobe I/O Runtimeを使用するメリットについて紹介しました。

この記事では、Adobe I/O Runtimeアクションの作成・作成したアクションのデプロイを行うために、
1, Adobe I/Oコンソール上での名前空間の作成方法と、2, クライアントからAdobe I/O Runtimeにアクセスするための設定手順について解説します。

※2019年12月時点、Adobe I/O Runtimeはベータ版のため、エンタープライズ契約のあるお客様でご利用になりたい方は、アドビ担当者までお問い合わせください。

目次

  1. 必要なユーザーアカウントと権限
  2. 公開鍵証明書の作成
  3. 名前空間の作成
  4. Adobe I/O CLIの設定
  5. クライアント上で使用する名前空間を設定

必要なユーザーアカウントと権限

Adobe I/Oコンソールで証明書の管理をするためには、システム管理者(Administrators)権限が必要です。
Adobe I/O Runtimeのための名前空間を作成するためには、システム管理者(Administrators)または開発者(Developer)の権限が必要です。

以降のステップに進む前に、ログインユーザーに適切な権限が付与されているかご確認ください。

公開鍵証明書の作成

クライアントからAdobe I/O Runtimeにアクセスするためには、OAuthまたはJSON Web Token(JWT)を使用します。認証には、Adobe I/Oコンソール上に公開鍵証明書をアップロードしておく必要があるので、RSAまたはECDSAで公開鍵・秘密鍵のキーペアを作成しておきましょう。

opensslコマンドを実行し、証明書を作成します。

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout my-private.key -out my-certificate_pub.crt

opensslの応答にあわせて、以下例のように証明書の情報を入力します。

Country Name (2 letter code) [XX]:jp
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Osaki
Organization Name (eg, company) [Default Company Ltd]:Adobe
Organizational Unit Name (eg, section) []:Japan R&D
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:example@example.com

これで、1年間有効な公開鍵証明書、my-certificate_pub.crtが生成されます。

名前空間の作成

次に、アクションをデプロイするための名前空間を作成していきます。
Adobe I/Oコンソールの画面を見ながら、名前空間を作成していきましょう。

Homeページのナビゲーションバーより、”Integrations”をクリックし、Integrationsページを開きます。
Integrationsページには、ログインユーザーのorganizationで作成された全てのIntegrationが表示されます。
新しいIntegrationを作成するために、”New integration”ボタンをクリックします。

次の画面で、”Create a new integration”内の、”Deploy serverless actions”を選択したら、”Continue”ボタンをクリックして次のページに遷移します。

Integration DetailsのNameとDescriptionを入力し、Public keys certificatesに、1つ前のステップでローカルディスク上に作成した公開鍵証明書をアップロードします。
フォームの入力と証明書のアップロードが完了したら、”Create integration”ボタンをクリックし、名前空間の作成は完了です。

作成したIntegrationは、先程確認したIntegrationsページに表示されます。
作成したIntegration名をクリックし、次のステップで使用するために以下の情報を確認してください。

  • client_id:Overviewタブ > API Key (Client ID)
  • client_secret:Overviewタブ > Client secret > Retrieve Client Secret
  • JWT payload:JWTタブ > JWT payload

Adobe I/O CLIの設定

次のステップでは、クライアントにAdobe I/O CLI(aio CLI)をインストールしていきます。
以下のコマンドを実行し、CLIをインストールします。
※インストールにはNodeJS v10以上・npmが必要です。(参考:https://github.com/adobe/aio-cli

npm install -g @adobe/aio-cli

次に、サーバーレス実行環境を作成するためにOpenWhisk CLIをインストールします。
※Open Whisk CLIのインストールはこちらから:OpenWhisk GitHub repository

Adobe I/O CLIとOpenWhisk CLIのインストールが完了したら、以下のコマンドを実行し、それぞれのCLIのインストールが成功していることを確認します。

wsk -h
aio -h

CLIのインストールが確認できたら、ローカル環境上の任意のフォルダにconfig.jsonファイルを作成し、client_idclient_secretjwt_payloadの各値に、前のステップでAdobe I/OコンソールのIntegration詳細画面にて取得した情報を入力します。

//config.json 
{
  "client_id": "value from your CLI integration (String)",
  "client_secret": "value from your CLI integration (String)",
  "jwt_payload": { value from your CLI integration (JSON Object Literal) },
  "token_exchange_url": "https://ims-na1.adobelogin.com/ims/exchange/jwt",
  "console_get_orgs_url":"https://api.adobe.io/console/organizations",
  "console_get_namespaces_url":"https://api.adobe.io/runtime/admin/namespaces/"
}

次に、先程npmでインストールしたaio CLIの設定をします。
まずはconfig.jsonへのパスを設定します。

aio config:set jwt-auth PATH_TO_CONFIG_JSON_FILE --file --json

秘密鍵情報へのパスを設定します。

aio config:set jwt-auth.jwt_private_key PATH_TO_PRIVATE_KEY_FILE

最後に、aioコマンドを実行し、Adobe I/Oの認証が通っているかを確認します。
認証が通っていれば、クライアント上にユーザーの所属するorganizationに紐づく全てのIntegrationが表示されます。

aio console:list-integrations

クライアント上で使用する名前空間を設定

最後のステップでは、Adobe I/O CLIで、クライアント上で使用する名前空間を選択します。
Adobe I/Oコンソールで作成したIntegrationは名前空間として使用でき、アクションのデプロイを行う際に名前空間が必要となります。
※Integrationと名前空間は1:1のリレーションを持ちます。
※一度にアクティブにできる名前空間は1つに制限されており、CLI上のすべてのオペレーションは、有効になっている名前空間に対して実行されます。

まずは、ユーザーの所属するorganization内で利用可能なIntegrationの一覧を表示するために、以下のコマンドを実行します。

aio console:list-integrations

以下のようにIntegrationの一覧が表示されます。

Namespace      Name                  Status
NUMBER_NUMBER  Integration Name 1    ENABLED
NUMBER_NUMBER2 Integration Name 2    ENABLED (currently selected)
NUMBER_NUMBER3 Integration Name 3    ENABLED

使用する名前空間を指定するために、以下の例のようにaio console:list-integrationsの引数にNUMBER_NUMBERを指定してコマンドを実行します。
このコマンドを実行すると、ユーザーのホームディレクトリに、指定された名前空間にアクセスするための.wskpropsファイルが作成されます。(既に同じ名前のファイルが存在する場合は、ファイルが上書きされます。)

aio console:select-integration NUMBER_NUMBER

これで、Adobe I/O Runtimeアクションを作成するための名前空間の作成、CLIの設定は完了です。

次回のブログでは、「Adobe I/O Runtimeアクションの作成方法」について説明していきます。

※本記事の内容は2019年12月現在の情報のものであり、今後変更される可能性があります。あらかじめご了承ください。

文:Japan R&D Program Manager:Takuya Asako
技術調査:Japan R&D Senior Software Development Engineer:Pin Mason Zhang

関連リンク

POSTED ON 2020.01.10