npm install -g @aws-amplify/cli
sudo๋ฅผ ํตํด ์คํํด์ ์ ์ญ์ผ๋ก ์ค์นํ์!
/usr/local/aws-cli
์ ์ค์น๋จaws configure
์ ํตํด region์ ์ค์ ํด์ฃผ์ด์ผ ํ๋ค. ๐ฐ๐ท ํ๊ตญ์ ๊ฒฝ์ฐ northeast-2aws ec2 describe-vpcs
๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋ค๋ฉด config ํ์ผ์ ๋ณผ ์ ์๋ค.~/.aws
ํด๋์ ๊ฐ๋ณด๋ฉด config ํ์ผ๊ณผ credentials ํ์ผ์ด ์์ฑ๋์ด ์์ ๊ฒ์ด๋ค.๋ค์ ๋จ๊ณ๋ AWS Cloud9 ์ค์ ๋จ๊ณ์ธ๋ฐ ์ผ๋จ ์๋ตํ๊ณ ๋์ด๊ฐ๊ฒ ๋ค.
npm install aws-amplify
amplify configure
๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด Amplfiy๋ฅผ ๊ตฌ์ฑํ๋ค.
create-react-app์ผ๋ก ์์ฑํ ์ ํ๋ฆฌ์ผ์ด์
์ amplify init
๋ช
๋ น์ด๋ก ์ด๊ธฐํ๋ฅผ ์งํํ๋ค.
์ด๊ธฐํ ์๋ฃ ํ ๋ค์๊ณผ ๊ฐ์ ์ผ๋ค์ด ์ผ์ด๋๋ค.
โ๏ธ ํ๋ก๋น์ ๋(provisioning)
์ฌ์ฉ์์ ์๊ตฌ์ ๋ง๊ฒ ์์คํ ์์์ ํ ๋น, ๋ฐฐ์น, ๋ฐฐํฌํด ๋์๋ค๊ฐ ํ์ ์์คํ ์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์ํ๋ก ๋ฏธ๋ฆฌ ์ค๋นํด๋๋ ๊ฒ
/amplify
๋๋ ํฐ๋ฆฌ๊ฐ ์์ฑ๋๋ค. src/aws-export.js
๋ผ๋ ํ์ผ์ด ์์ฑ๋๋ค. amplify์์ ํ๋ก๋น์ ๋ํ๋ ์๋น์ค์ ๋ํ ๊ตฌ์ฑ์ ํฌํจํ๊ณ ์๋ค. npm install aws-amplify
npm install @aws-amplify/ui-react
src/App.js
ํ์ผ ์์ โ๏ธ ๊ณต์ ์๋ด์์๋
import { withAuthenticator, AmplifySignOut } from '@aws-amplify/ui-react';
import Amplify from 'aws-amplify';
import awsExports from './aws-exports';
Amplify.configure(awsExports);
function App() {
return (
<div>
<h1>Notes App</h1>
<AmplifySignOut />
</div>
);
}
export default withAuthenticator(App);
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก amplify ์ค์ ์ ์ถ๊ฐํด์ฃผ์๋๋ฐ, ๋๋ 'AmplifySignOut' is not exported from '@aws-amplify/ui-react' ์๋ฌ๊ฐ ๋ ์ ์๋ฌ ๋ฉ์์ง์์ ๊ฑธ์ด์ค ๋งํฌ ์ฌ๊ธฐ๋ฅผ ๋ณด๊ณ ์ค์ ์ ์ถ๊ฐํด์ฃผ์๋ค.
import { Amplify } from 'aws-amplify';
import { withAuthenticator } from '@aws-amplify/ui-react';
import '@aws-amplify/ui-react/styles.css';
import { Header } from './Components/Header';
import { Main } from './Components/Main';
import awsconfig from './aws-exports';
Amplify.configure(awsconfig);
function App() {
return (
<div className="App">
<Header />
<Main />
</div>
);
}
export default withAuthenticator(App)
โ ๋ด๊ฐ ํ ๋ฐฉ์
AWS ๊ณต์ ๊ฐ์ด๋์๋ ์๋ ๋ด์ฉ์ธ๋ฐ, ์ด ์์ ์ ์ํด์ฃผ์๋๋ ์๋ฌ๊ฐ ๋์ ์๋ฌ ๋ฉ์์ง์์ ์๋ดํด์ค Amplify Dev Center ๊ฐ์ด๋๋ฅผ ๋ณด๊ณ ์ถ๊ฐํด์ฃผ์๋ค.
amplify add auth
amplify push
โ๏ธ amplify๋ก ๋ฐฐํฌ ํ ์ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ์ ๋๋ ๊ณ์ ์ ์์ฑํ๊ณ ๋ก๊ทธ์ธ ๊ณผ์ ์ ์์ฑํด์ผ ํ๋ค.
๊ทธ๋ฌ๋ฉด localhost์์๋ ์ฑ์ด ๋ฌธ์ ์์ด ์คํ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
AWS amplify๋ AWS AppSync ๋ฐ Amazon DynamoDB๋ฅผ ์ฌ์ฉํด GraphQL API๋ฅผ ๊ตฌ๋ํ ์ ์๋ค.
AppSync๋ GraphQL ์๋น์ค๋ก API๋ฅผ ๊ด๋ฆฌ, DynamoDB๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค. ๋ฐ๋ผ์ GraphQL ์ค์ ๊น์ง ์๋ฃํด์ฃผ๋ฉด ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ๋ฆฌ์ค๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ Amplify Dev Center ๊ฐ์ด๋๋ฅผ ๋ณด๋ฉด REST ๋ฐฉ์์ผ๋ก api์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ ์๋ ์๋ค. ๊ตฌ๊ธ๋ง ํด๋ณด๋ฉด ๋ฐฉ๋ฒ์ ๋ค์ํ๋ค.
๋๋ ๊ฐ์ด๋์ ๋์์๋ ์ด ๊ณผ์ ์ ์๋ตํ๊ธฐ ๋๋ฌธ์ ํ์ฌ๋ json-server๋ก ๋ง๋ ์๋ฒ์ axios๋ก ์์ฒญํ๊ณ ์๋ ์ํฉ์ด๋ค. ๋ฐ๋ผ์ ์์ง ์๋ฒ๋ฆฌ์คํ ์ํ๋ ์๋๋ค.
์ด์ Github ๋ ํฌ์งํ ๋ฆฌ์ amplify์ ์ฐ๊ฒฐํ๊ณ ์ง์์ ์ธ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ค์ ์ ํด๋ณด์.
amplify add hosting
๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ๋ค์๊ณผ ๊ฐ์ ์ต์
์ ์ค์ ํ๋ค.
(Hosting with Amplify Console / Continuous deployment)
๊ทธ๋ฆฌ๊ณ github ๊ณ์ ๊ณผ ์ฐ๊ฒฐํ๋ค.
๊ณต์๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ amplifyconsole-backend-role์ด๋ผ๋ ์๋ก์ด ์ญํ ์ ์์ฑํ์.
ํ๊ฒฝ์ amplify init
์ ํ ๋ ์์ฑํ๋ dev๋ฅผ ์ ํํ๋ค.
github ๋ ํฌ์งํ ๋ฆฌ์ branch๊น์ง ์ฐ๊ฒฐํ๋ค๋ฉด ์ด์ ํด๋น ๋ธ๋์น์ ์๋ก์ด ์ปค๋ฐ์ด ํธ์ฌ๋ ๋๋ง๋ค amplify๊ฐ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํด ์๋์ผ๋ก ๋น๋ํ๊ณ ์๋ก ๋ฐฐํฌํ๋ค. (๋๋ฐ ์งฑ์ธ๋ฏ ๐)
๋น๋ ๊ธฐ๋ก์ ๋ณผ ์ ์๋๋ฐ ์๊ฐ์ด ์ผ๋ง๋ ์์๋์๋์ง๋ ๋ณผ ์ ์๊ณ , ํ์ฌ ๋ฒ์ ์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์ด์ ๋ฒ์ ์ ์ ํํด์ ๋ฐฐํฌํ ์๋ ์๋ค.
๋น๋ ๊ณผ์ ์ ์์ธํ ๋ณผ ์ ์๋๋ฐ ๋น๋๊ฐ ์คํจํ๋ค๋ฉด ์ฌ๊ธฐ์ ์๋ฌ๋ฅผ ์์ธํ ํ์ธํ ์ ์๋ค.
๐ ๋๋ ํ๋ฐํธ์๋์์ ๋น๋์์ ๊ณ์ ์๋ฌ๊ฐ ๋์ ์ฝ์งํ๋ค๊ฐ ๊ฒฐ๊ตญ aws amplify ํ๊ฒฝ์ ์ง์ฐ๊ณ ๋ค์ ์ค์นํ๋ค.
๋๋ aws-deploy๋ผ๋ ๋ฐฐํฌ์ฉ ๋ธ๋์น๋ฅผ ์๋ก ์์ฑํด AWS Amplify์ ์ฐ๊ฒฐํด์ฃผ๊ณ main ๋ธ๋์น๋ CI/CD ๋นํ์ฑํ๋ฅผ ํด๋์๋ค.
์ฌ๊ธฐ๊น์ง ์ฐ์ฌ๊ณก์ ๋์ Amplify๋ก ๋ฐฐํฌ ์ด๋์ ๋๋ ์๋ฃ!