# Amplify 學習心得 ###### tags: `AWS`,`Amplify` 設定是透過問答方式, 根據問題結果產生相應的 CFN template ## 流程 大致是這樣, 一開始需執行 amplify init , 問一些問題之後會產生一個 CFN template ( nested-cloudformation-stack.yml ), 並會自行 deploy 到 AWS , CFN 會 Create DeploymentBucket 來放置 template 及 code, 執行完成會出現一個 root stack 及一個 S3 Bucket 之後所有增加 service 都會是 [nested stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-cloudformation.html#w2ab1c17c23c19b5), 譬如執行 amplify storage add, 回答了 table name,, column, partition key 等等之後會特定的資料夾中產生 DynamoDB 的 CFN template ( xxxx.template.json), 內容就是依據問答而設定。另外也會修正 nested-cloudformation-stack.yml , 在 Resources 增加剛剛新增的 service, TemplateURL 會指向 DynamoDB 的 CFN template 被丟到的 DeploymentBucket 位置( https://s3.amazonaws.com/...... ), 因次會產生一個 DynamoDB 的 nested stack 目前 service category 有 analytics, api, auth, function, hosting, notifications, storage, 都會有各自的 nested stack, 有些是複合式的, 例如 amplify api add , 除了 API Gateway , 還會問要不要建立 lambda function 及 DB, amplify 會幫忙把 lambda function code 打包成 .zip 並上傳到 DeploymentBucket, template 的 Code 會設定成 DeploymentBucket 上的 .zip 執行 amplify push 將會把所有新增修改過的 template 更新到 DeploymentBucket, 然後 CFN 執行 template 內容 修改指令為 amplify update <service 類別>, 也是透過問答方式一步步修改, 都是一些基本設定, 更細部設定可能就要自行修改 template, 但執行 amplify update 要注意不要 overwrite 掉原有的 template (它會問), 否則自行設定的內容就不見了