増幅バックエンド環境での作業のハードルを飛び越える
25275 ワード
導入
私はメンバーです AWSKRUG
韓国のAWSコミュニティです.
そして、私はオープンソースプロジェクトに取り組んでいます kendra-button
.
このプロジェクトはMLサービスを使用したService Amazon Kendra
.
私はフロントエンドとauthのすべてを担当しています.
このポストはバックエンド環境をdev
and prod
.
任意の意見やアドバイスを歓迎します.原因を"AWS Community Builders"
より良い経験を開発するための組織と😆👍
チーム環境
Amplify
Webホスティング、メンバーシップ認証、関数などの完全に管理されたAWSインフラストラクチャに展開する機能の数をサポートするため、私は情熱的に使用するツールとサービスです.
この多くの機能の中で
増幅バックエンドの環境は、チームのプロジェクトのようなステージを切り替えるには素晴らしい見てdev
/prod
.
私はこの機能を使用するためにだまされた理由は、使用するツールを簡素化することです.
私はすでにIngretoのためにAmplifyホスティング/Authを使用しています、そして、Cohertoラムダトリガーのための機能.
それで、グループに一緒に、そして、管理するのが簡単であることはうれしいです.
増幅された文書は言いました."Every Amplify backend environment is a container for the categories added to your project. To deploy updates to an environment, run amplify push."
and "Amplify matches the standard Git workflow"
増幅チーム環境の現実
私は私の欲求不満の経験を共有し始めるAmplify Environment
.
私は1つだけの環境を使用していたdev
. したがって、これは新しい環境を追加するプロセスの経験ですprod
.
まず結論を出す.
dev
to prod
) amplify env checkout prod (x) -> amplify env checkout prod --restore
amplify pull
コマンドappId
and envName
フラグを設定すると、プロジェクトの環境を既に設定できます.amplify
フォルダを一度に消える amplify pull --appId {appId} --envName {name of env}
team-provider-info.json
いくつかを作ると正確にコンテキストに従っていませんamplify env checkout
アクション.team-provider-info.json
しかし、他の人は未知の理由で行う.チェックアウト別のenvときに“auth”に間違った情報をオーバーライドする
これは私が偶然発見したので、私を共有させることです.
の状態
prod
環境.| Category | Resource name |
| -------- | ------------------------------------ |
| Hosting | amplifyhosting |
| Function | kendrabuttonhosting84e32663PreSignup |
| Auth | kendrabuttonhosting84e32663 |
の状態dev
s.| Category | Resource name |
| -------- | ------------------------------------ |
| Hosting | amplifyhosting |
| Function | kendrabuttonhosting28eb127dPreSignup |
| Auth | kendrabuttonhosting28eb127d |
既に設定されている状態でprod
環境、私はENVをチェックアウトしようとしましたdev
.しかし、私は再入力しなければならなかった社会的プロバイダーの情報は、私が既に構成されます.
$ amplify env checkout dev
✔ Initialized provider successfully.
You've opted to allow users to authenticate via Facebook. If you haven't already, you'll need to go to https://developers.facebook.com and create an App ID.
Enter your Facebook App ID for your OAuth flow: {AMPLIFY_FACEBOOK_CLIENT_ID}
Enter your Facebook App Secret for your OAuth flow: {AMPLIFY_FACEBOOK_CLIENT_SECRET}
You've opted to allow users to authenticate via Google. If you haven't already, you'll need to go to https://developers.google.com/identity and create an App ID.
Enter your Google Web Client ID for your OAuth flow: {AMPLIFY_GOOGLE_CLIENT_ID}
Enter your Google Web Client Secret for your OAuth flow: {AMPLIFY_GOOGLE_CLIENT_SECRET}
Initialized your environment successfully.
チームプロバイダー情報.JSONコンテンツの違いを見ました
team-provider-info.json
.キー
dev.categories.auth
, dev.categories.function
] が上書きされるprod
環境のキーkendrabuttonhosting28eb127d_userpool_28eb127d(
dev
) -> kendrabuttonhosting84e32663_userpool_84e32663(prod
)
これを見て、私は戻って行きたいと思った
prod
.$ amplify env checkout prod
✔ Initialized provider successfully.
Initialized your environment successfully.
$ amplify status
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | Create | |
| Function | kendrabuttonhosting84e32663PreSignup | Update | awscloudformation |
| Auth | kendrabuttonhosting84e32663 | No Change | awscloudformation |
Hosted UI Endpoint: https://social-kendra-prod.auth.us-west-2.amazoncognito.com/
Test Your Hosted UI Endpoint: https://social-kendra-prod.auth.us-west-2.amazoncognito.com/login?response_type=code&client_id=26t8thf04jdel3p73gh4vp99hk&redirect_uri=https://admin.kendra.fun/
Amplify hosting urls:
┌──────────────┬───────────────────────────────────────────────────┐
│ FrontEnd Env │ Domain │
├──────────────┼───────────────────────────────────────────────────┤
│ frontend-dev │ https://frontend-dev.dcj1fh5deo5r3.amplifyapp.com │
│ ├───────────────────────────────────────────────────┤
│ │ https://dev.kendra.fun │
├──────────────┼───────────────────────────────────────────────────┤
│ master │ https://master.dcj1fh5deo5r3.amplifyapp.com │
│ ├───────────────────────────────────────────────────┤
│ │ https://admin.kendra.fun │
├──────────────┼───────────────────────────────────────────────────┤
│ service │ https://service.dcj1fh5deo5r3.amplifyapp.com │
│ ├───────────────────────────────────────────────────┤
│ │ https://service.kendra.fun │
└──────────────┴───────────────────────────────────────────────────┘
I will skip
Hosted UI Endpoint
andAmplify hosting urls:
section from now. because it is exact same contents when I hitamplify status
command.
UMM、間違った何かが起こります.
レットミーメイク
Function
and Hosting
'へのs操作No Change
.「変化」への「機能」操作の作成
amplify env checkout prod --restore
$ amplify env checkout prod --restore
✔ Initialized provider successfully.
Initialized your environment successfully.
$ amplify status
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | Create | |
| Auth | kendrabuttonhosting84e32663 | No Change | awscloudformation |
| Function | kendrabuttonhosting84e32663PreSignup | No Change | awscloudformation |
そして、gitに一つのファイルの変更があります.これは増幅する
Function
テンプレートファイル.何が変わったかを見てください.
タブをスペースに.内容は全く変更されません.
それで、私はこのファイルをGit
チェック
amplify status
, があるFunction
操作状態がUpdate
. うーん$ amplify status
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | Create | |
| Function | kendrabuttonhosting84e32663PreSignup | Update | awscloudformation |
| Auth | kendrabuttonhosting84e32663 | No Change | awscloudformation |
それで、私はファイルを回復しました.Function
'sの稼働状況はNo Change
.“変更”に“ホスティング”操作を行う:全体の“増幅”フォルダーが消える?
を作りたい
Hosting
'へのs操作No Change
. ホスティングを変更していないからです.それで、バックエンド環境を再び引っ張りましょう.何故なら回復する方法がないからです
Hosting
's操作ステータス!以下のコマンドはWeb用の増幅コンソールへのリファレンスです.
Even though it checks out
master
environment, which is different from what we're working, key point is answering "No" at "Do you plan on modifying this backend?"
$ amplify pull --appId dcj1fh5deo5r3 --envName master
For more information on AWS Profiles, see:
https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use kendra-geoseong
Amplify AppID found: dcj1fh5deo5r3. Amplify App name is: kendrabuttonhosting
Backend environment master found in Amplify Console app: kendrabuttonhosting
? Choose your default editor: Visual Studio Code
? Choose the type of app that you're building javascript
Please tell us about your project
? What javascript framework are you using react
? Source Directory Path: frontend/kendra-button-front/src
? Distribution Directory Path: frontend/kendra-button-front/src/out
? Build Command: npm run-script build
? Start Command: npm run-script start
? Do you plan on modifying this backend? No # <--- look at this carefully
Added backend environment config object to your project.
Run 'amplify pull' to sync upstream changes.
この後、amplify
フォルダが消えます.$ amplify status
You are not working inside a valid amplify project.
Use 'amplify init' in the root of your app directory to initialize your project with Amplify
Error: You are not working inside a valid amplify project.
Use 'amplify init' in the root of your app directory to initialize your project with Amplify
at getAmplifyDirPath (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/extensions/amplify-helpers/path-manager.js:45:11)
at getBackendDirPath (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/extensions/amplify-helpers/path-manager.js:51:37)
at Object.getAmplifyMetaFilePath (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/extensions/amplify-helpers/path-manager.js:93:37)
at getCloudInitStatus (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/extensions/amplify-helpers/get-cloud-init-status.js:8:41)
at AmplifyToolkit.showResourceTable [as _showResourceTable] (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/extensions/amplify-helpers/resource-status.js:194:38)
at Object.run (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/commands/status.js:6:31)
at Object.executeAmplifyCommand (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/index.js:110:25)
at executePluginModuleCommand (/Users/geoseong/.npm-packages/lib/node_modules/@aws-amplify/cli/lib/execution-manager.js:131:32)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:757:11)
FAIL: 1
🤪これは本当にイライラする.
私は再びプルコマンドをヒットしようとし、私は選んだ
Yes
最後の質問ではDo you plan on modifying this backend?
...それで、回復されるフォルダを拡大してください.のみ
prod
環境.$ amplify pull --appId dcj1fh5deo5r3 --envName prod
For more information on AWS Profiles, see:
https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use kendra-geoseong
Amplify AppID found: dcj1fh5deo5r3. Amplify App name is: kendrabuttonhosting
Backend environment prod found in Amplify Console app: kendrabuttonhosting
? Choose your default editor: Visual Studio Code
? Choose the type of app that you're building javascript
Please tell us about your project
? What javascript framework are you using react
? Source Directory Path: src
? Distribution Directory Path: build
? Build Command: npm run-script build
? Start Command: npm run-script start
? Do you plan on modifying this backend? Yes # <-- look at this carefully. choose "Yes"
Successfully pulled backend environment prod from the cloud.
Run 'amplify pull' to sync upstream changes.
$ amplify status
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | Create | |
| Auth | kendrabuttonhosting84e32663 | No Change | awscloudformation |
| Function | kendrabuttonhosting84e32663PreSignup | No Change | awscloudformation |
Hosting
やはりCreate
操作状態だから私は命令の後
amplify pull --appId dcj1fh5deo5r3 --envName prod
私はちょうど前にヒットです.Run 'amplify pull' to sync upstream changes.
$ amplify pull
Pre-pull status:
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | Create | |
| Auth | kendrabuttonhosting84e32663 | No Change | awscloudformation |
| Function | kendrabuttonhosting84e32663PreSignup | No Change | awscloudformation |
Local changes detected.
Pulling changes from the cloud will override your local changes.
? Are you sure you would like to continue? Yes
✔ Successfully pulled backend environment prod from the cloud.
Post-pull status:
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | No Change | |
| Auth | kendrabuttonhosting84e32663 | No Change | awscloudformation |
| Function | kendrabuttonhosting84e32663PreSignup | No Change | awscloudformation |
ああ、やっと作ったHosting
'に対するNo Change
.(実際、私はなぜ私がヒットしなければならないのか理解できない
amplify pull
2回コマンドを実行する.とにかく、増幅の状態が表示されても
No Change
すべてのカテゴリ、コンテンツの操作team-provider-info.json
私の地元ではありませんFunction
and Auth
.誰か助けて?
😳
私は、これが起こる方法を知りたかったです、しかし、私はどんな拡大した文書ででも見つけることができません.
「増幅ENV」あたりの異なる「git分岐」に分割される理由
私は、私が問題全体を終えたと思いました
amplify
フォルダが消え、環境を回復します.しかし、私は別のenv
dev
, このエラーが返される.dev
私のローカルには環境が存在しません.$ amplify env checkout dev --restore
Please pass in a valid environment name. Run amplify env list to get a list of valid environments
$ amplify env list
| Environments |
| ------------ |
| *prod |
このスタンスでは、Amplify Webコンソールからコマンドをヒットしようとします.amplify pull --appId dcj1fh5deo5r3 --envName dev
返事を忘れるなYes
時"Do you plan on modifying this backend?"
来ます.$ amplify pull --appId dcj1fh5deo5r3 --envName dev
For more information on AWS Profiles, see:
https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use kendra-geoseong
Amplify AppID found: dcj1fh5deo5r3. Amplify App name is: kendrabuttonhosting
Backend environment dev found in Amplify Console app: kendrabuttonhosting
? Choose your default editor: Visual Studio Code
? Choose the type of app that you're building javascript
Please tell us about your project
? What javascript framework are you using react
? Source Directory Path: src
? Distribution Directory Path: build
? Build Command: npm run-script build
? Start Command: npm run-script start
? Do you plan on modifying this backend? Yes # <-- don't forget to choose "Yes"
Successfully pulled backend environment dev from the cloud.
Run 'amplify pull' to sync upstream changes.
$ amplify pull
Pre-pull status:
Current Environment: dev
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | No Change | |
| Auth | kendrabuttonhosting28eb127d | No Change | awscloudformation |
| Function | kendrabuttonhosting28eb127dPreSignup | No Change | awscloudformation |
✔ Successfully pulled backend environment dev from the cloud.
Post-pull status:
Current Environment: dev
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | No Change | |
| Auth | kendrabuttonhosting28eb127d | No Change | awscloudformation |
| Function | kendrabuttonhosting28eb127dPreSignup | No Change | awscloudformation |
$ amplify env list
| Environments |
| ------------ |
| *dev |
| prod |
もう一つ試してみる
中にある状態で
dev
環境、チェックアウトしようとしたprod
再びenv.コマンドなしでヒット--restore
フラグ.(同じgitブランチで)$ amplify env checkout prod
For more information on AWS Profiles, see:
https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use kendra-geoseong
✔ Initialized provider successfully.
You've opted to allow users to authenticate via Facebook. If you haven't already, you'll need to go to https://developers.facebook.com and create an App ID.
Enter your Facebook App ID for your OAuth flow: {AMPLIFY_FACEBOOK_CLIENT_ID}
Enter your Facebook App Secret for your OAuth flow: {AMPLIFY_FACEBOOK_CLIENT_SECRET}
You've opted to allow users to authenticate via Google. If you haven't already, you'll need to go to https://developers.google.com/identity and create an App ID.
Enter your Google Web Client ID for your OAuth flow: {AMPLIFY_GOOGLE_CLIENT_ID}
Enter your Google Web Client Secret for your OAuth flow: {AMPLIFY_GOOGLE_CLIENT_SECRET}
? Do you want to configure Lambda Triggers for Cognito? (Y/n)
# I cancelled it!! (Ctrl + C in OSX)
うわー.Authは決して存在しないように認識します.😭ラムダトリガーステップの設定をキャンセルしました.
もう一度ステータスをチェックします
$ amplify status
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | Create | |
| Auth | kendrabuttonhosting28eb127d | Create | awscloudformation |
| Function | kendrabuttonhosting28eb127dPreSignup | Create | awscloudformation |
| Auth | kendrabuttonhosting84e32663 | Delete | awscloudformation |
| Function | kendrabuttonhosting84e32663PreSignup | Delete | awscloudformation |
kendrabuttonhosting28eb127d
はdev
, kendrabuttonhosting84e32663
のリソースprod
.私がこの状態で押すならば、壮大な災難は起こります...
OMG、私はgonnaヒットです
amplify pull
パニックで😰$ amplify pull
Pre-pull status:
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | Create | |
| Auth | kendrabuttonhosting28eb127d | Create | awscloudformation |
| Function | kendrabuttonhosting28eb127dPreSignup | Create | awscloudformation |
| Auth | kendrabuttonhosting84e32663 | Delete | awscloudformation |
| Function | kendrabuttonhosting84e32663PreSignup | Delete | awscloudformation |
Local changes detected.
Pulling changes from the cloud will override your local changes.
? Are you sure you would like to continue? Yes
✔ Successfully pulled backend environment prod from the cloud.
Post-pull status:
Current Environment: prod
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | No Change | |
| Auth | kendrabuttonhosting84e32663 | No Change | awscloudformation |
| Function | kendrabuttonhosting84e32663PreSignup | No Change | awscloudformation |
😀 悪夢は終わった.別の“ampilfy env”をチェックアウトすると同じブランチで予期しないエラーが発生します.
それで、この痛い過程が過ぎてから.
個々の「gitブランチ」から独立した「増幅env」を得る方が良いと思います.
スプリットブランチと設定増幅環境
今まで働いた
master
GITのブランチ.新しいGit支店チェックアウト
frontend-dev
.チェックアウトA
dev
増幅環境.と--restore
フラグ!)$ git checkout -b frontend-dev
Switched to a new branch 'frontend-dev'
$ amplify env checkout dev --restore
✔ Initialized provider successfully.
Initialized your environment successfully.
$ amplify status
Current Environment: dev
| Category | Resource name | Operation | Provider plugin |
| -------- | ------------------------------------ | --------- | ----------------- |
| Hosting | amplifyhosting | No Change | |
| Auth | kendrabuttonhosting28eb127d | No Change | awscloudformation |
| Function | kendrabuttonhosting28eb127dPreSignup | No Change | awscloudformation |
それで、私は適切にファイルを変えましたprod
to dev
.結論
It would be better to get an independent "amplify env" from each "git branch"
Take a look the
team-provider-info.json
carefullybe sure to do git commit management when you're changing amplify environment
私のような経験豊富なAWSユーザーは、この問題を扱うことができます.
AWSの初心者は、正直であることを増幅することによって痛みを感じます.
そして、私は、特に文書、特にCLIとホスティングの不足を文書化すると思います.
また、Gamthubリポジトリからの遅延フィードバック.発行またはprs.
私は、これらの混乱が間もなく終わることを望みます.
私はまだAWSを増幅し、私はサポートを維持し、増幅を貢献したいので、すべてのAWSは私を含むユーザーを増幅するAWSを使用してこのような素晴らしい経験を持っている!
Reference
この問題について(増幅バックエンド環境での作業のハードルを飛び越える), 我々は、より多くの情報をここで見つけました https://dev.to/aws-builders/jump-over-a-hurdle-of-working-with-amplify-backend-environment-c77テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol