-
Notifications
You must be signed in to change notification settings - Fork 2
[Hosting] monorepo에서 amplify continuous deployment를 세팅하는 현실적인 방법
TaeSeong Park edited this page Jun 12, 2020
·
1 revision
Amplify의 빌드 이미지 안에는 아무런 AWS credential 정보가 없는 상태이다.
빌드 할 때 aws-exports.js를 계속 못 찾는 이유이다..
그래서 amplify pull
커맨드를 써서 받아와야 하고, ACCESS_KEY_ID와 SECRET_ACCESS_KEY 등의 민감 정보가 주입된 것을 파라미터로 붙여야 한다.
그렇게 진행하는 방법은 amplify headless mode이다.
직접적으로 amplify.yml
에 저런 커맨드를 넣어서 20차례 가량 따옴표를 넣어보고 빼보고, newline을 넣어보고 뺴 보았으나 자꾸 에러를 뱉어서 배포가 되지 않았다.
답답해서 amplify-console repository의 issue#750에 정리해 올려놓았다.
그동안 포기할까 다른 방법을 또 강구해볼까 하다가 마지막으로 생각 해 낸 것이 쉘 스크립트를 활용 해 보자 이다.
Amplify 자체 환경변수 를 참고하여 주의해서 네이밍을 하도록 한다
amplify-pull.sh
#!/usr/bin/env bash
AMPLIFY="'{\
\"projectName\":\"${PROJECT_NAME}\",\
\"appId\":\"${AWS_APP_ID}\",\
\"envName\":\"${ENV_NAME}\",\
\"defaultEditor\":\"code\"\
}'"
AWSCLOUDFORMATIONCONFIG="{\
\"configLevel\":\"project\",\
\"useProfile\":false,\
\"profileName\":\"default\",\
\"accessKeyId\":\"${ACCESS_KEY_ID}\",\
\"secretAccessKey\":\"${SECRET_ACCESS_KEY}\",\
\"region\":\"${REGION}\"\
}"
PROVIDERS="'{\
\"awscloudformation\":${AWSCLOUDFORMATIONCONFIG}\
}'"
cmd="amplify pull --amplify ${AMPLIFY} --providers ${PROVIDERS} --yes"
echo $cmd
eval $cmd
그리고 amplify.yml
에다가 위의 쉘 스크립트를 실행시키는 커맨드를 추가토록 한다.
version: 0.1
frontend:
phases:
preBuild:
commands:
- cd frontend/kendra-button-front
- chmod +x amplify-pull.sh
- ./amplify-pull.sh
build:
commands:
- find . -name "aws-exports.js"
- yarn
- yarn build
artifacts:
baseDirectory: frontend/kendra-button-front/src/out
files:
- '**/*'
cache:
paths: []
그러면 빌드도 잘 되고, 배포가 잘 된다..
아얘 aws-exports.js를 쉘 스크립트로 만들어 버리는 것이다.
나에게 맞는 환경변수를 맞춰놓고,
aws-resource-maker.sh
#!/usr/bin/env bash
file="aws-exports.js"
echo "const awsmobile = {" >> $file
echo " \"aws_project_region\": \"${REGION}\"," >> $file
echo " \"aws_cognito_identity_pool_id\": \"${COGNITO_IDENTITY_POOL_ID}\"," >> $file
echo " \"aws_cognito_region\": \"${COGNITO_REGION}\"," >> $file
echo " \"aws_user_pools_id\": \"${USER_POOLS_ID}\"," >> $file
echo " \"aws_user_pools_web_client_id\": \"${USER_POOLS_WEB_CLIENT_ID}\"," >> $file
echo " \"oauth\": {}" >> $file
echo "};" >> $file
echo ""
echo "export default awsmobile;" >> $file
cat $file
amplify.yml
version: 0.1
frontend:
phases:
preBuild:
commands:
- cd frontend/kendra-button-front
- chmod +x aws-resource-maker.sh
- ./aws-resource-maker.sh
build:
commands:
- find . -name "aws-exports.js"
- yarn
- yarn build
artifacts:
baseDirectory: frontend/kendra-button-front/src/out
files:
- '**/*'
cache:
paths: []