window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster가 이미 존재합니다') } else { w.LeadBooster = { q: [], on: 함수 (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 함수 (n) { this.q.push({ t: 't', n: n }) }, } } })() AWS S3 및 페이퍼클립을 사용한 무상 개발 - The Codest
The Codest
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 산업 분야
    • 핀테크 및 뱅킹
    • E-commerce
    • 애드테크
    • 헬스 테크
    • 제조
    • 물류
    • 자동차
    • IOT
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
뒤로 화살표 뒤로 가기
2016-09-30
소프트웨어 개발

AWS S3 및 페이퍼클립을 사용한 무료 개발

바르토슈 주르코프스키

지난 몇 년 동안 온라인 스토리지는 확장성이 뛰어난 아키텍처, 강화된 보안, 광범위한 데이터 접근성을 제공하는 주류로 자리 잡았습니다. 가장 인기 있는 스토리지 서비스 중 하나는 S3로 널리 알려진 아마존의 심플 스토리지 서비스입니다.

Amazon S3는 Amazon Web Services의 핵심에 있는 매우 강력한 서비스입니다. 하지만 프로덕션 환경이 아닌 곳에서는 S3를 사용하기가 어려울 수 있습니다. 액세스 키를 전달하고, 사용자 계정을 프로비저닝하고, 안정적인 네트워크 연결을 유지해야 하는 것은 말할 것도 없고, 비용도 들기 때문입니다. 다행히도 이 문제를 해결하는 데 도움이 되는 도구가 있습니다. FakeS3는 실제 S3의 동작을 시뮬레이션하는 경량 서버입니다. 이 도구는 Amazon S3가 응답하는 것과 동일한 호출에 응답하고 업로드된 파일을 로컬 파일 시스템에 저장하며 Amazon 서비스에 대한 요청은 하지 않습니다. gem은 전체 S3 명령 집합을 지원하지는 않지만, 구현된 API는 대부분의 애플리케이션 사용 사례에 충분합니다.

이 글에서는 다음과 같이 통합하는 접근 방식을 소개합니다. AWS 와 액티브 레코드를 위한 인기 파일 첨부 라이브러리인 페이퍼클립과 FakeS3를 함께 사용할 수 있습니다. Paperclip과 S3를 함께 사용하면 유효성 검사 관리, 이미지 변환 등 유용한 Paperclip의 핵심 기능과 온라인 스토리지의 장점을 결합한 효과적인 파일 저장 시스템을 제공합니다. 이러한 도구의 구성은 명확하지 않고 자세한 설명서를 살펴보고 여러 가지 보석 같은 문제를 해결해야 하지만, 시간을 투자하여 더 빠르고 효율적으로 개발할 가치가 있습니다.

우리의 목표는 무엇인가요?

설명된 도구를 통합하려면 세 단계를 거쳐야 합니다:

  1. 백그라운드에서 FakeS3 겜에서 제공하는 S3 페이크서버를 실행합니다.
  2. 모든 요청을 시작된 페이크 서버에 위임하도록 AWS S3 클라이언트를 구성합니다.
  3. 구축된 리소스의 URL에서 가짜 S3 엔드포인트를 사용하도록 Paperclip 구성하기.

설치

필요한 보석을 설치하는 것부터 시작하겠습니다:

# 젬파일

gem "종이 클립"
gem "aws-sdk", "~> 1.6"

gem "fakes3", 그룹: [:개발, :테스트]

aws-sdk 버전 1.6을 설치해야 합니다. SKD를 사용하여 Amazon 서비스에서 스토리지를 관리하는 Paperclip은 상위 버전에서 제대로 작동하지 않습니다. 이는 버전 2.0에서 SDK의 API가 크게 변경되었기 때문입니다.

또한 FakeS3의 주요 목표는 런타임 종속성을 최소화하는 것임을 기억하세요. 이 도구는 S3 호출을 테스트하기 위한 개발 도구에 가깝습니다. 코드 S3 기능을 복제하려는 프로덕션 서버가 아니라. 따라서 개발 및 테스트 그룹에만 gem을 포함해야 합니다.

AWS 구성

AWS SDK는 구성 로드를 담당하는 전용 헬퍼 메서드를 제공합니다. 기본적으로 다음에서 구성을 로드합니다. config/aws.yml를 호출하여 현재 환경에 대한 파라미터를 추출하고 이를 AWS 클라이언트에 전달합니다. 먼저 이니셜라이저에서 다음 메서드를 호출합니다:

# config/initializers/aws.rb

AWS::Rails.load_yaml_config

이제 구성 파일이 제대로 로드되었으므로 콘텐츠 지정을 진행할 수 있습니다:

# config/aws.yml

개발: &개발
    access_key_id: "abc"
    secret_access_key: "abc"
    s3_endpoint: "localhost"
    s3_port: 10001
    s3_force_path_style: true
    use_ssl: false

test: *개발

모든 매개 변수에 대해 하나씩 살펴 보겠습니다:

  • 액세스_키_ID, 비밀_액세스_키 - 아마존 계정에 액세스하는 데 필요한 AWS 클라이언트 자격 증명입니다. 가짜 S3 서버에서 무시되므로 샌드박스 환경에서는 사용자 지정 값이 무시됩니다.
  • s3_endpoint, s3_port- S3 엔드포인트 사양. 이러한 매개 변수를 사용하여 실제 S3 엔드포인트를 FakeS3 gem이 실행하는 가짜 엔드포인트로 대체하면 이제 Amazon 서비스에 대한 모든 요청이 로컬 가짜 서버로 위임됩니다.
  • s3_포스_경로_스타일 - S3는 URL에 버킷의 이름을 포함하는 두 가지 스타일을 허용합니다. 버킷의 이름을 도메인 스타일(bucket.s3.amazonaws.com) 또는 경로 스타일(s3.amazonaws.com/bucket)로 배치하도록 선택할 수 있습니다. 일을 단순하게 유지하고 버킷의 하위 도메인을 루프백 주소에 매핑하는 것과 관련된 추가 구성을 피하기 위해 개발 환경에서는 도메인 스타일보다 경로 스타일을 선호합니다.
  • use_ssl - 는 AWS SDK가 바닐라 HTTP 대신 HTTPS를 사용하도록 강제합니다. 이 옵션을 비활성화해야 하는 이유는 FakeS3 gem이 기본적으로 AWS 클라이언트가 수행하는 HTTPS 요청을 지원하지 않기 때문입니다.

프로덕션 환경에 대한 구성은 매우 간단합니다:

# config/aws.yml

프로덕션: &프로덕션
    access_key_id:     
    secret_access_key: 

스테이징: *프로덕션

하지만 이번에는 실제 S3 서비스를 다루기 때문에 실제 AWS 자격 증명을 제공해야 합니다.

잠재적인 보안 위험 때문에 액세스 키와 같은 비밀 값은 환경 변수를 사용하는 등의 방법으로 버전 관리 시스템에서 제외하는 것이 좋습니다. 여기서는 ERB를 사용하여 해당 값을 구성 파일에 삽입하겠습니다.

클립 구성

이제 Paperclip을 마주하고 이미 구성된 S3 클라이언트와 잘 작동하도록 강제할 차례입니다. Paperclip 구성의 주요 목표는 가짜 서버가 호스팅하는 리소스를 찾을 수 있는 스토리지 경로를 확보하는 것입니다:

localhost:10001/:버킷_이름/:경로

다시 개발 환경부터 시작하겠습니다:

# config/paperclip.yml

개발: &개발
    storage: :s3
    버킷: "development"
    s3_host_name: "localhost"
    url: ":s3_alias_url"
    경로 ":클래스/:첨부/:id_partition/:스타일/:파일명.:확장자"
    s3_host_alias: "localhost:10001/개발"

test: *개발
  • 스토리지 - 는 스토리지 캐리어를 지정합니다(기본적으로 로컬 파일 시스템). AWS S3를 사용하고 있으므로 다음과 같이 변경해야 합니다. :s3.
  • 버킷 - 파일을 저장할 S3 버킷의 이름입니다. 버킷이 존재하지 않으면 Paperclip에서 버킷을 만들려고 시도합니다.
  • url - 로 설정 :s3_alias_url 를 사용하면 Paperclip이 S3 버킷의 호스트 이름에 별칭을 지정합니다. :s3_host_alias 매개변수입니다.
  • s3_host_alias - 별칭을 기본 S3 버킷의 호스트로 지정합니다. 호스트, 포트 및 버킷의 이름 배치는 AWS 클라이언트의 구성과 일치합니다.
  • 경로 - 패턴으로 파일을 버킷에 저장할 키를 지정합니다. 키는 파일 이름처럼 버킷 내에서 고유해야 합니다. S3는 디렉터리를 지원하지 않기 때문에 파일 이름과 같은 / 기호를 사용하여 디렉토리 구조를 시뮬레이션합니다.
# config/paperclip.yml

프로덕션: &프로덕션
    storage: :s3
    버킷:  
    url:     ":s3_도메인_URL"
    경로    ":클래스/:첨부파일/:아이디_파티션/:스타일/:파일명.:확장자"

스테이징: *프로덕션

AWS 자격 증명과 마찬가지로 버킷 이름도 코드 베이스 외부에 저장해야 하는 비밀 값으로 간주됩니다. 환경 변수에 이름을 저장하는 것이 좋습니다.

마지막으로, 초기화 프로그램에서 설정을 Paperclip의 기본 옵션으로 병합합니다:

# config/initializers/paperclip.rb

paperclip_defaults = Rails.application.config_for :paperclip
paperclip_defaults.symbolize_keys!

종이 클립::첨부 파일.기본값_옵션.병합! 종이 클립 _ 기본값

가짜 실행3

AWS와 Paperclip 구성 모두 아래에서 실행될 것으로 예상되는 로컬 S3 페이크 서버에 대한 참조가 포함되어 있습니다. localhost:10001. 개발 작업을 하기 전에 다음 명령어(FakeS3 gem에서 제공)로 서버를 시작해야 합니다:

fakes3 -r public/system -p 10001

전달된 매개변수는 다음과 같습니다:

  • root -r - 루트 디렉터리에 업로드된 파일이 저장됩니다. 업로드한 파일이 리포지토리에 저장되지 않도록 하려면 VCS에서 이 디렉터리를 제외하는 것이 좋습니다.
  • 포트 -p - 로컬 서버가 실행될 포트 수입니다.

애플리케이션에서 프로세스 관리를 위해 Foreman을 사용하는 경우 Procfile에 다음 항목을 추가하는 것이 편리할 수 있습니다:

# 프로시저

fakes3: fakes3 -r ${FAKES3_STORAGE_PATH:-public/system} -p ${FAKES3_PORT:-10001}

이렇게 하면 S3 관련 기능을 개발해야 할 때마다 페이크서버를 실행하는 데 낭비하는 시간을 절약할 수 있습니다.

결론

모든 요청을 로컬 가짜 서버에 위임하도록 AWS 클라이언트를 구성하고, 구축된 리소스의 URL에 가짜 S3 엔드포인트를 사용하도록 Paperclip을 설정하고, 로컬 파일 시스템에 모든 파일을 저장하는 가짜 S3 gem에서 제공하는 가짜 서버를 시작했습니다.

그 결과 인터넷 연결로부터 독립하고 비용을 절감하여 더 빠르고 안정적으로 개발할 수 있게 되었습니다.

관련 문서

소프트웨어 개발

미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트

The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...

최신
소프트웨어 개발

라트비아에 본사를 둔 10대 소프트웨어 개발 기업

최신 기사에서 라트비아 최고의 소프트웨어 개발 기업과 그들의 혁신적인 솔루션에 대해 알아보세요. 이러한 기술 리더들이 어떻게 귀사의 비즈니스를 향상시키는 데 도움을 줄 수 있는지 알아보세요.

thecodest
엔터프라이즈 및 스케일업 솔루션

Java 소프트웨어 개발 필수 사항: 성공적인 아웃소싱을 위한 가이드

The Codest로 효율성을 높이고 전문 지식을 활용하며 프로젝트 성공을 이끌 수 있는 성공적인 outsourcing Java 소프트웨어 개발에 대한 이 필수 가이드를 살펴보세요.

thecodest
소프트웨어 개발

폴란드 아웃소싱을 위한 최고의 가이드

폴란드에서 outsourcing가 급증한 것은 경제, 교육, 기술 발전으로 인한 IT 성장과 비즈니스 친화적인 환경이 조성된 덕분입니다.

더코데스트
엔터프라이즈 및 스케일업 솔루션

IT 감사 도구 및 기술에 대한 완벽한 가이드

IT 감사는 안전하고 효율적이며 규정을 준수하는 시스템을 보장합니다. 전체 기사를 읽고 그 중요성에 대해 자세히 알아보세요.

The Codest
야쿱 야쿠보비치 CTO & 공동 설립자

지식창고를 구독하고 IT 분야의 전문 지식을 최신 상태로 유지하세요.

    회사 소개

    The Codest - 폴란드에 기술 허브를 둔 국제 소프트웨어 개발 회사입니다.

    영국 - 본사

    • 사무실 303B, 182-184 하이 스트리트 노스 E6 2JA
      영국 런던

    폴란드 - 현지 기술 허브

    • 파브리츠나 오피스 파크, 알레야
      포코주 18, 31-564 크라쿠프
    • 뇌 대사관, 콘스트럭터스카
      11, 02-673 바르샤바, 폴란드

      The Codest

    • 홈
    • 회사 소개
    • 서비스
    • Case Studies
    • 방법 알아보기
    • 채용 정보
    • 사전

      서비스

    • IT 자문
    • 소프트웨어 개발
    • 백엔드 개발
    • 프론트엔드 개발
    • Staff Augmentation
    • 백엔드 개발자
    • 클라우드 엔지니어
    • 데이터 엔지니어
    • 기타
    • QA 엔지니어

      리소스

    • 외부 소프트웨어 개발 파트너와의 협력에 대한 사실과 오해
    • 미국에서 유럽으로: 미국 스타트업이 유럽으로 이전을 결정하는 이유
    • 테크 오프쇼어 개발 허브 비교: 테크 오프쇼어 유럽(폴란드), 아세안(필리핀), 유라시아(터키)
    • CTO와 CIO의 주요 과제는 무엇인가요?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • 웹사이트 이용 약관

    저작권 © 2025 by The Codest. 모든 권리 보유.

    ko_KRKorean
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek ko_KRKorean