増幅バックエンド環境での作業のハードルを飛び越える


導入


私はメンバーです 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 .
まず結論を出す.
  • この方法はENVチェックアウトコマンドを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}
    
  • 同じGitブランチで増幅環境をチェックアウトしないでください.それはあなたの精神的な健康ではない.
  • だってteam-provider-info.json いくつかを作ると正確にコンテキストに従っていませんamplify env checkout アクション.
  • そして実際にはteam-provider-info.json しかし、他の人は未知の理由で行う.
  • したがって、“増幅ENV”ごとに別の“git分岐”に分割してください
  • チェックアウト別の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 and Amplify hosting urls: section from now. because it is exact same contents when I hit amplify 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 フォルダが消え、環境を回復します.
    しかし、私は別のenvdev , このエラーが返される.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 |
    
    kendrabuttonhosting28eb127ddev , 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 .
    チェックアウトAdev 増幅環境.と--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 carefully

    be sure to do git commit management when you're changing amplify environment


    私のような経験豊富なAWSユーザーは、この問題を扱うことができます.
    AWSの初心者は、正直であることを増幅することによって痛みを感じます.
    そして、私は、特に文書、特にCLIとホスティングの不足を文書化すると思います.
    また、Gamthubリポジトリからの遅延フィードバック.発行またはprs.
    私は、これらの混乱が間もなく終わることを望みます.
    私はまだAWSを増幅し、私はサポートを維持し、増幅を貢献したいので、すべてのAWSは私を含むユーザーを増幅するAWSを使用してこのような素晴らしい経験を持っている!