AWS:CLI:Amplify
Help
create-deployment
수동으로 배포된 Amplify 앱에 대한 배포를 생성합니다. 수동으로 배포된 앱은 리포지토리에 연결되지 않습니다.
SYNOPSIS:
create-deployment
--app-id <value>
--branch-name <value>
[--file-map <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]
file-map
파일 이름을 키로 포함하고 파일 콘텐츠 md5 해시를 값으로 포함하는 선택적 파일 맵입니다. 이 인수가 제공되면 서비스는 파일별로 고유한 업로드 URL을 생성합니다. 그렇지 않으면 서비스에서 압축 파일에 대한 단일 업로드 URL만 생성합니다.
start-deployment
수동으로 배포된 앱의 배포를 시작합니다. 수동으로 배포된 앱은 리포지토리에 연결되지 않습니다.
SYNOPSIS:
start-deployment
--app-id <value>
--branch-name <value>
[--job-id <value>]
[--source-url <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]
명령행으로 배포하는 방법
- Deploy to AWS Amplify from GitLab CI/CD Self Managed | Tickett's Blog
- amazon web services - How can I deploy a new version of an existing Amplify app using the AWS/Amplify CLI without user interaction? - Stack Overflow
AWS IAM 사용자를 생성합니다
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "amplify:StartDeployment",
"Resource": "arn:aws:amplify:REGION:ACCOUNT_ID:apps/APP_ID/*"
}
]
}
REGION
, ACCOUNT_ID
및 APP_ID
를 관련 값으로 바꿔야 합니다. 원하는 경우 더 나아가 특정 분기로 제한할 수도 있습니다.
중요한 점은 ACCOUNT_ID
및 APP_ID
는 이름이 아니라 UID 이다. 관리 콘솔에서 각각의 ARN 항목을 확인하면 UID를 확인할 수 있다.
한 예시로,
- 서울 위치 (
ap-northeast-2
) - AWS IAM에 등록한 사용자의 ID (
351828347590
) - AWS Amplify의 ARN에 적힌 ID (
d3hmwa8f0z10dn
) - AWS Amplify의 브랜치 이름 (
production
)
일 경우:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "amplify:StartDeployment",
"Resource": "arn:aws:amplify:ap-northeast-2:351828347590:apps/d3hmwa8f0z10dn/branches/production/*"
}
]
}
WARNING |
중요한 점은 ARN의 마지막에 별표( |
이며, AWS CLI 명령행은
APP_ID="d3hmwa8f0z10dn"
BRANCH_NAME="production"
SOURCE_URL="https://your.gitlab.address/api/v4/projects/112/jobs/5876/artifacts/archive.zip?private_token=..."
aws amplify start-deployment --app-id $APP_ID --branch-name $BRANCH_NAME --source-url $SOURCE_URL --debug
이다.
GitLab CI/CD 변수 구성
다음 변수를 생성:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_REGION
그리고 로그에 출력되지 않도록 마스킹 설정 추가.
build:
script:
- apt-get update
- apt-get install zip -y
- echo "JOB_ID=$CI_JOB_ID" > build.env
- npm run build
- zip -r -j dist.zip dist
artifacts:
paths:
- dist.zip
reports:
dotenv: build.env
deploy:
image:
name: amazon/aws-cli
entrypoint: [""]
variables:
APP_ID: app_id
BRANCH_NAME: branch_name
SOURCE_URL: $CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$JOB_ID/artifacts/dist.zip?job=build&job_token=$CI_JOB_TOKEN
script:
- aws amplify start-deployment --app-id $APP_ID --branch-name $BRANCH_NAME --source-url $SOURCE_URL
needs:
- build
artifacts:reports:dotenv
를 사용할 수 없을 경우 직접 환변경수를 파일로 저장하여 deploy
로 전달해야 한다.
Troubleshooting
UnrecognizedClientException
An error occurred (UnrecognizedClientException) when calling the StartDeployment operation: The security token included in the request is invalid.
AWS_ACCESS_KEY_ID
및 AWS_SECRET_ACCESS_KEY
를 다시 확인해 보자.