【Twilio CLI】テストと本番でプロジェクトを切り替える
バージョン
twilio-cli/2.13.0
■Twilio CLIでプロジェクトを切り替える■
テスト用のプロジェクトでServerlessやFlexを構築して確認したりしていたのを
いざ本番に乗っけるぞ!となった時に、ちょっと困惑したので、やり方をメモしておきます。
もっとこういうやり方があるよ!というのがありましたらお教え頂ければと思います。
プロジェクトは別なんだけど、ソースは同じなんだよな
テスト用と本番用で一部の環境的なファイル以外はソース変わらないので、
デプロイ先だけ切り替えたいってことがほとんどだと思います。
CLIのセットアップ手順は調べれば色々出てきますが、↑のような時にどう切り替えるか。
最終手段として、別プロジェクトを作成して0からっていうのもありますが…
デプロイ時にデプロイ先だけ指定するとかで出来ればベストですがそんなことが可能なのか…
ゴールとしては、テスト用プロジェクトで作成していた、ServerlessとFlexPluginを
本番用の別プロジェクトへデプロイしリリースすること。
■Serverless編■
切り替えを色々試してみる
まずは、プロファイルを追加してみた
twilio profiles:add
? The Account SID for your Twilio Account or Subaccount: ACyyyyyy
? Your Twilio Auth Token for your Twilio Account or Subaccount: [hidden]
? Shorthand identifier for your profile: honban
Created API Key SKyyyyyy and stored the secret in the Windows credential vault. See: https://www.twilio.com/console/runtime/api-keys/SKxxxxxx
twilio-cli configuration saved to "C:\Users\aaaaa\.twilio-cli\config.json"
Saved honban.
そしてアカウント切り替え
twilio profiles:use honban
切り替わったか確認
twilio profiles:list
ID Account SID Active
test ACxxxxxx
honban ACyyyyyy true
切り替わりました。
いざServerlessデプロイ!
× Failed Deployment
│ ERROR Service with name "xxxxx" already exists with SID "ZSxxxxxx".
│
│ Here are a few ways to solve this problem:
│
│ - Rename your project in the package.json "name" property
│ - Pass an explicit name to your deployment
│ > twilio-run.js deploy -n my-new-service-name
│ - Deploy to the existing service with the name "xxxxx"
│ > twilio-run.js deploy --override-existing-project
│ - Run deployment in force mode
│ > twilio-run.js deploy --force
エラーぴえん
with SID "ZSxxxxxx"
こいつが怪しい。こんなのどっかで指定してたっけ??
検索してみると「.twilio-functions」ってのががひっかかった。誰だ君は
{
"projects": {
"ACxxxxxx": {
"serviceSid": "ZSxxxxxx",
"latestBuild": "ZBxxxxxx"
}
},
"serviceSid": "ZSxxxxxx",
"latestBuild": "ZBxxxxxx"
}
なんかでも、1回Functionsのサービスを消して、やり直す時とかに
このファイルを消してから。ってどっかで見たことある気がするぞ…
消します!
注意
.twilio-functionsファイルは、プロジェクトへの初回デプロイ時のみ削除してください。
一度デプロイすると、latestBuild SIDなどを持った状態になります。
初回デプロイ以降、プロジェクトを切り替える場合は
.twilio-functionsも保持しておいて、プロジェクトごとに切り替えましょう
他にもなんか元のプロジェクトを参照しているのがあるかも??
探してみる
Deploying functions & assets to the Twilio Runtime
Account SKxxxxxx
Token xxxx****************************
Service Name xxxxxx
Environment dev
Root Directory C:\xxxproject\
Dependencies xxx
Env Variables xxx
↑そういえば、デプロイコマンド実行した時に出てくるログの最初のとこが、元プロジェクトのSIDにままなってるので
これを設定している箇所を探してみる。
「.env」ファイルが出てきました。そうでした、これに指定してました。
ACCOUNT_SID=SKxxxxxx
AUTH_TOKEN=xxxxxx
これに、プロファイルを追加した時に作成されたAPI KeyのSIDとトークンを設定して…
ACCOUNT_SID=SKyyyyyy
AUTH_TOKEN=
あれ、、AUTH_TOKENなんなんだろう…
Created API Key SKyyyyyy and stored the secret in the Windows credential vault. See: https://www.twilio.com/console/runtime/api-keys/SKxxxxxx
twilio-cli configuration saved to "C:\Users\aaaaa.twilio-cli\config.json"
Saved honban.
API KeyのSIDしか書いてないぞ…
API KEYをコンソールから作成
twilio profiles:addで追加するとAPI Keyのトークンがわからない為、
コンソールから新しいAPI Keyを追加することに
コンソールから作成すると、登録した時だけトークンが表示されますのでそれをコピーして
.envファイルを書き換えます。
ACCOUNT_SID=SKzzzzzz
AUTH_TOKEN=zzzzzz
いざServerlessデプロイ!!
√ Serverless project successfully deployed
無事デプロイ完了!やったね
■Flex Plugin編■
この調子でFlexの方もデプロイしてみましょう。
いざFlex Pluginデプロイ!
twilio flex:plugins:deploy --changelog='deploy'"
Using profile honban (ACyyyyyy)
» Error code 20003 from Twilio: Authenticate. See https://www.twilio.com/docs/errors/20003 for more info.
twilio-cli profiles use Standard API Keys which are not permitted to manage Accounts (e.g., create Subaccounts) and other API Keys. If you require this functionality a Master API Key or Auth Token must be stored in environment variables:
# OPTION 1 (recommended)
set TWILIO_ACCOUNT_SID=your Account SID from twil.io/console
set TWILIO_API_KEY=an API Key created at twil.io/get-api-key
set TWILIO_API_SECRET=the secret for the API Key
# OPTION 2
set TWILIO_ACCOUNT_SID=your Account SID from twil.io/console
set TWILIO_AUTH_TOKEN=your Auth Token from twil.io/console
エラーぴえん
Flexの方に.envみたいなファイルあったっけ…
appConfigの方は変えたし
エラーメッセージをちゃんと訳して見てみると
twilio-cliプロファイルは、アカウントの管理が許可されていない標準APIキーを使用します
こっちもAPI Key問題のようです。
たしかに指定して無いけど、指定するとこ(.envとか)も無くない??
エラーメッセージの次に、環境変数でAPI Keyを設定するようなことがコマンドごと書いてますね。
テスト環境作った時こんな設定した記憶がないけども
言われた通りにやってみましょう
Serverless編で追加したAPI Keyの情報を環境変数に設定
set TWILIO_ACCOUNT_SID=ACyyyyyy
set TWILIO_API_KEY=SKzzzzzz
set TWILIO_API_SECRET=zzzzzz
いざFlex Pluginデプロイ!!
√ Validating deployment of plugin xxxx-flex
√ Uploading xxxx-flex
√ Registering plugin xxxx-flex with Plugins API
√ Registering version v0.0.1 with Plugins API
� Plugin (private) [email protected] was successfully deployed using Plugins API
無事デプロイ完了!やったね
■まとめ■
Serverlessの方は
- twilio profiles:addでアカウントを追加
- コンソールからAPI Keyを追加
- .twilio-functionsファイルを削除 (※初回のみ、2回目以降は消しちゃダメ)
- コンソールから追加したAPI Keyの情報で.envファイルを書き換え
Flex Pluginの方は
- 環境変数でAPI Keyの情報を設定
以上で、ソースなどはそのまま、プロジェクトを切り替えることが出来ました。
.envファイル、.twilio-functionsファイル、環境変数等を
プロジェクトごとに切り替えるバッチ等を用意しておくと、次回以降切り替えが楽になるかもです
とりあえず詰まった内容もそのまま記載したので、ややこしい流れになってしまいましたが
備忘録として書いておいた方がいいかなと。
このやり方が正式な方法とは思えないので、冒頭にも書きましたが
もっとこういうやり方があるよ!というのがありましたらお教え頂ければと思います。
Author And Source
この問題について(【Twilio CLI】テストと本番でプロジェクトを切り替える), 我々は、より多くの情報をここで見つけました https://qiita.com/sst_2b/items/f794d4ac696d2e88ee74著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .