Trying to create a "template" Amplify project - aws-amplify

Most of our client projects have a very similar starting point:
Pristine AWS account used only for a single environment for this application
GraphQL API and a basic model to start with
A REST API with an OAuth handler endpoint and a generic webhook listener endpoint, each with a corresponding Lambda function (with code for each)
I've created this basic amplify app and I want to create a repo with this general structure as a starting point for future projects. The idea being that I'd copy the contents of the repo when starting a project and build from there.
So I've copied the entire amplify directory over to a new location, removing everything that is in the amplify section of the .gitignore file, and I have a folder structure like this:
My steps to start a new project are:
Create a new directory
Copy the template repo files into this directory
run amplify init
Once I do that, it creates two additional files:
amplify/.config/project-config.json
amplify/team-provider-info.json
Then, I try to do amplify push -- but I get No changes detected.
I'm not even sure if what I'm doing is possible -- I was wondering if anyone else has tried this?

Related

How can I completely duplicate a Firebase project? [duplicate]

I want to clone an existing Firebase project, lets name it ProjectA that previously exists on Firebase console with some Remote Config data to another new project(without any Remote Config data), lets name it ProjectB.
The idea behind my question is that currently I have developed an Android app that is using the google-service.json(Firebase configuration file) file from the ProjectA, so I want to create/clone a new Firebase project ProjectB(NOTE: I don't want a new Firebase app on the same project) that starts with exactly the same Remote Config data from ProjectA and then add the google-service.json from the new ProjectB to my new Android app.
I have read the firebase-cli documentation but looks like it's out of its scope.
Has someone accomplished something similar like this or has an idea how can I accomplish this? Thanks in advance!
I just created this ruby gem to automate the manual process that I needed to do from a web browser for cloning my remote config data from ProjectA to a my new ProjectB.
NOTE: The gem is really an alpha version and just consider remote config without any rules. If some of you want to fork it and improved please feel free to do that.
There is currently no way (neither through the Console or through an API) to create a project that is a clone of another project. At the moment you will have to re-create the config data in the new project manually.
Firebase documents a flow to move data between projects here:
https://firebase.google.com/docs/firestore/manage-data/move-data
Though the method they outline requires a billed account.

Firebase Deploy Error: 'Changing secrets is not supported' when using separate projects with Stripe 'Run Payments with Stripe' extension

I'm trying to setup multiple environments for my Vue / Firebase Project.
I have two Firebase Projects
1.) Dev
2.) Prod
The project utilizes Stripe Extension which pulls the API Key from an auto-generated file called:
firestore-stripe-payments.env
which contains:
STRIPE_API_KEY=projects/${param:PROJECT_NUMBER}/secrets/firestore-stripe-payments-STRIPE_API_KEY-xxxx/versions/latest
Where xxxx is a random 4 character string.
That line pulls the value of the key from Google Secret Manager.
Let's say Dev is 'dddd'
and Prod is: 'pppp'
The issue is that I can only define either:
firestore-stripe-payments-STRIPE_API_KEY-dddd
or
firestore-stripe-payments-STRIPE_API_KEY-pppp
At first I tried to create a new value within Google Secret Manager simply called:
firestore-stripe-payments-STRIPE_API_KEY
The thought was this should be a simple fix, and it would pull the associated API_KEY for the project currently being used.
but this causes the error:
Error: firestore-stripe-payments: Found 'projects/foo/secrets/firestore-stripe-payments-STRIPE_API_KEY/versions/latest' for secret param STRIPE_API_KEY, but this instance was previously using a different secret projects/fooo/secrets/firestore-stripe-payments-STRIPE_API_KEY-dddd.
Changing secrets is not supported. If you want to change the value of this secret, use a new version of projects/foo/secrets/firestore-stripe-payments-STRIPE_API_KEY-dddd.You can create a new version at https://console.cloud.google.com/security/secret-manager?project=fooo
Also, if there is a better place to ask this question please let me know, couldn't find the 'right' room
For this scenario, could you include a separate env (env.dev) file using the following guidelines
.env # loaded in all cases
.env.local # loaded in all cases, ignored by git
.env.[mode] # only loaded in specified mode
.env.[mode].local
For generating separate keys for each environment, I believe from your example you are using a single Stripe Extension on a single project.
Firebase Extensions can support multiple instances of an Extension per project, this will create a separate "dev" secret for you to use.
Additionally, a separate Firebase project with another "Stripe Extension" installation would be recommended to separate any concerns in development.

Unable to change the default project to deploy my project on firebase hosting

i am trying to deploy my project on firebase hosting. And whenever i am using firebase init it is showing error in terminal as "firebaserc already has a default project " and it exit with that error
i have tried firebase logout and firebase login again . And used "firebase use" command also to change the project but it is still performing the firebase init action on the default project
i want to remove that default project
If you look very carefully at the messaging, it's saying that the name of the file is ".firebaserc" with a leading dot. This file indicates that firebase init was already run in this folder, and the contents of that file describe which project it's connected to (flairboat-48f7b). If you no longer want that file, delete it and start over. Since it starts with a dot, it might be hidden from normal view, but you can be sure that it exists.
you should write:
firebase use --add
and it work! You get the option to choose the preject from firebase.
I ran into the same issue.
Due to a small mistake in setting up the project in firebase, I had to delete it.
But later, I realized that my application NEEDS the default project to be hosted from firebase.
Since I found no shortcuts and running out of time, I did "this" to fix the issue in 10 minutes...with a 5-Step-Process. This is not a "Clever tip". But if you want things up and running soon, you can try this...
Create a new project (in my case, it's React project in VS Code IDE) using - npx create-react-app newprojectname to create a new react project with a different file name.(Don't delete or replace your previous project yet... )
While the new project is being created, create a new project in firebase to host your project.
Copy the folder from your old project that has all your work (it's "src" folder in case of React) and replace the "src" folder in the new project you created in your local machine.
Install all dependencies...Don't forget to add any dependencies you added to you old project. Look at the package.json file of the old project and import all dependencies.
Hit the start command (npm start in my case) and see your project running.
*I'll update if I found some firebase secret to resolve this issue. You can look for the same.
Ensure your firebase project support email and firebase initialize login email are same. If different? It won't be worked. so you must ensure it that two email (firebase project support email and firebase initialize email) are same.

Using firebase project ID in command prompt

Command $firebase init functions after processing is not asking for my project id at firebase which should be initialized, instead it is using default project. Here is the picture
It is because you are reinitializing the firebase functions in the current directory i.e. learning chatbots.
If you intend to overwrite the existing firebase functions in this directory you can follow these instructions:
OR if don't want to overwrite existing files:
It will be better if you create a new directory and then initialize firebase functions there.
Make a new directory outside of "learning chatbots" directory and
try initializing there.

How to clone an existing Firebase project data to another new project?

I want to clone an existing Firebase project, lets name it ProjectA that previously exists on Firebase console with some Remote Config data to another new project(without any Remote Config data), lets name it ProjectB.
The idea behind my question is that currently I have developed an Android app that is using the google-service.json(Firebase configuration file) file from the ProjectA, so I want to create/clone a new Firebase project ProjectB(NOTE: I don't want a new Firebase app on the same project) that starts with exactly the same Remote Config data from ProjectA and then add the google-service.json from the new ProjectB to my new Android app.
I have read the firebase-cli documentation but looks like it's out of its scope.
Has someone accomplished something similar like this or has an idea how can I accomplish this? Thanks in advance!
I just created this ruby gem to automate the manual process that I needed to do from a web browser for cloning my remote config data from ProjectA to a my new ProjectB.
NOTE: The gem is really an alpha version and just consider remote config without any rules. If some of you want to fork it and improved please feel free to do that.
There is currently no way (neither through the Console or through an API) to create a project that is a clone of another project. At the moment you will have to re-create the config data in the new project manually.
Firebase documents a flow to move data between projects here:
https://firebase.google.com/docs/firestore/manage-data/move-data
Though the method they outline requires a billed account.

Resources