CodeBuild firebase sdk key 오류 해결

노관옥·2023년 1월 4일
0

aws

목록 보기
2/2
post-thumbnail
post-custom-banner

문제

Firebase Authentication을 사용하는데 json 형식의 키파일을 환경변수에 등록해서 파일을 만들어서 빌드했는데 오류가 발생했습니다.

Error: incorrect number of segments; ...

원인

Json 파일 형식이 잘못된 것 같아서 터미널에서 테스트를 진행했습니다.

오류_원인_1

Json에 쌍따옴표(Quotation marks)가 있었는데 없어졌네요.

오류_원인_2

ChatGPT에 여쭤본 결과로 알게된 건

json={"abc":1,"def":2}

json 에는 다음과 같이 문자열이 이어져서 담긴다는 것입니다.

{ + "abc" + :1, + "def" + :2}

해결방법

오류_원인_3

1. 따옴표(' ')로 감싸기

echo '{"abc":1,"def":2}'

> {"abc":1,"def":2}

2. 이스케이핑

echo "{\"abc\":1,\"def\":2}"


> {"abc":1,"def":2}

3. S3 Bucket에 저장

Json을 굳이 텍스트로 환경변수에 저장할 필요는 없으니까 S3에 저장하고 빌드할 때 파일을 읽는 방법도 좋을 것 같았습니다.

S3 Bucket 생성

키 파일을 저장할 버킷을 생성하고, 키 파일을 버킷에 업로드합니다.

S3 권한 추가

우선 S3 Bucket의 파일을 읽을 수 있도록 CodeBuild 실행 권한을 설정해줘야 합니다.

IAM 역할 - 권한추가 - 인라인 정책 생성 - JSON 경로로 들어가서 읽기 권한을 세팅합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GrantCodeBuildReadPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

CodeBuild에서 파일 읽기

buildspec.yaml

phases:
  pre_build:
    commands:
      - touch firebase-key.json
      - aws s3 cp --region=ap-northeast-2 s3://$BUCKET_NAME/firebase-key.json firebase-key.json
      - cat firebase-key.json
      ...

위 예시로 버킷에 저장해둔 json파일을 불러올 수 있습니다. 👍

Reference

https://stackoverflow.com/questions/65853231/how-to-add-files-from-s3-bucket-to-output-artifacts-in-aws-codepipeline-nodejs

profile
블로그 이전완 - https://kwanok.me/blog/
post-custom-banner

0개의 댓글