はじめてのAdobe I/O Runtimeアクション – 開発準備編 #AdobeIO
いつも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はベータ版のため、エンタープライズ契約のあるお客様でご利用になりたい方は、アドビ担当者までお問い合わせください。
目次
必要なユーザーアカウントと権限
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 SecretJWT 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_id
・client_secret
・jwt_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