검색

2.3.6. Ruby AWS S3를 사용하여 Ceph Object Gateway에 액세스

download PDF

S3 액세스에 대해 aws-s3 gem과 함께 Ruby 프로그래밍 언어를 사용할 수 있습니다. Ruby AWS::S3 을 사용하여 Ceph Object Gateway 서버에 액세스하는 데 사용되는 노드에서 아래에 언급된 단계를 실행합니다.

사전 요구 사항

  • Ceph Object Gateway에 대한 사용자 수준 액세스.
  • Ceph Object Gateway에 액세스하는 노드에 대한 루트 수준 액세스입니다.
  • 인터넷 액세스.

절차

  1. ruby 패키지를 설치합니다.

    [root@dev ~]# yum install ruby
    참고

    위의 명령은 ruby를 설치하고 ruby gemsruby-libs 와 같은 필수 종속 항목을 설치합니다. 임의의 경우 명령은 모든 종속 항목을 설치하지 않는 경우 별도로 설치합니다.

  2. aws-s3 Ruby 패키지를 설치합니다.

    [root@dev ~]# gem install aws-s3
  3. 프로젝트 디렉터리를 생성합니다.

    [user@dev ~]$ mkdir ruby_aws_s3
    [user@dev ~]$ cd ruby_aws_s3
  4. 연결 파일을 생성합니다.

    [user@dev ~]$ vim conn.rb
  5. 다음 내용을 conn.rb 파일에 붙여넣습니다.

    구문

    #!/usr/bin/env ruby
    
    require 'aws/s3'
    require 'resolv-replace'
    
    AWS::S3::Base.establish_connection!(
            :server            => 'FQDN_OF_GATEWAY_NODE',
            :port           => '8080',
            :access_key_id     => 'MY_ACCESS_KEY',
            :secret_access_key => 'MY_SECRET_KEY'
    )

    FQDN_OF_GATEWAY_NODE 를 Ceph Object Gateway 노드의 FQDN으로 바꿉니다. MY_ACCESS_KEYMY_SECRET_KEYRed Hat Ceph Storage 오브젝트 게이트웨이 구성 및 관리 가이드에서 언급한 대로 S3 액세스를 위해 radosgw 사용자를 생성할 때 생성된 access_key secret_key 로 바꿉니다.

    예제

    #!/usr/bin/env ruby
    
    require 'aws/s3'
    require 'resolv-replace'
    
    AWS::S3::Base.establish_connection!(
            :server            => 'testclient.englab.pnq.redhat.com',
            :port           => '8080',
            :access_key_id     => '98J4R9P22P5CDL65HKP8',
            :secret_access_key => '6C+jcaP0dp0+FZfrRNgyGA9EzRy25pURldwje049'
    )

    파일을 저장하고 편집기를 종료합니다.

  6. 파일을 실행 가능으로 설정합니다.

    [user@dev ~]$ chmod +x conn.rb
  7. 파일을 실행합니다.

    [user@dev ~]$ ./conn.rb | echo $?

    파일에 값을 올바르게 제공한 경우 명령의 출력은 0 이 됩니다.

  8. 버킷을 만들기 위한 새 파일을 만듭니다.

    [user@dev ~]$ vim create_bucket.rb

    다음 내용을 파일에 붙여넣습니다.

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Bucket.create('my-new-bucket1')

    파일을 저장하고 편집기를 종료합니다.

  9. 파일을 실행 가능으로 설정합니다.

    [user@dev ~]$ chmod +x create_bucket.rb
  10. 파일을 실행합니다.

    [user@dev ~]$ ./create_bucket.rb

    명령 출력이 true 이면 버킷 my-new-bucket1 이 성공적으로 생성되었습니다.

  11. 소유 버킷을 나열할 새 파일을 만듭니다.

    [user@dev ~]$ vim list_owned_buckets.rb

    다음 내용을 파일에 붙여넣습니다.

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Service.buckets.each do |bucket|
            puts "{bucket.name}\t{bucket.creation_date}"
    end

    파일을 저장하고 편집기를 종료합니다.

  12. 파일을 실행 가능으로 설정합니다.

    [user@dev ~]$ chmod +x list_owned_buckets.rb
  13. 파일을 실행합니다.

    [user@dev ~]$ ./list_owned_buckets.rb

    출력은 다음과 같아야 합니다.

    my-new-bucket1 2020-01-21 10:33:19 UTC
  14. 오브젝트를 생성하기 위한 새 파일을 생성합니다.

    [user@dev ~]$ vim create_object.rb

    다음 내용을 파일에 붙여넣습니다.

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::S3Object.store(
            'hello.txt',
            'Hello World!',
            'my-new-bucket1',
            :content_type => 'text/plain'
    )

    파일을 저장하고 편집기를 종료합니다.

  15. 파일을 실행 가능으로 설정합니다.

    [user@dev ~]$ chmod +x create_object.rb
  16. 파일을 실행합니다.

    [user@dev ~]$ ./create_object.rb

    이렇게 하면 Hello World!! 문자열이 포함된 hello.txt 파일이 생성됩니다.

  17. 버킷의 콘텐츠를 나열할 새 파일을 만듭니다.

    [user@dev ~]$ vim list_bucket_content.rb

    다음 내용을 파일에 붙여넣습니다.

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    new_bucket = AWS::S3::Bucket.find('my-new-bucket1')
    new_bucket.each do |object|
            puts "{object.key}\t{object.about['content-length']}\t{object.about['last-modified']}"
    end

    파일을 저장하고 편집기를 종료합니다.

  18. 파일을 실행 가능하게 만듭니다.

    [user@dev ~]$ chmod +x list_bucket_content.rb
  19. 파일을 실행합니다.

    [user@dev ~]$ ./list_bucket_content.rb

    출력은 다음과 같이 표시됩니다.

    hello.txt    12    Fri, 22 Jan 2020 15:54:52 GMT
  20. 빈 버킷을 삭제하기 위해 새 파일을 생성합니다.

    [user@dev ~]$ vim del_empty_bucket.rb

    다음 내용을 파일에 붙여넣습니다.

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Bucket.delete('my-new-bucket1')

    파일을 저장하고 편집기를 종료합니다.

  21. 파일을 실행 가능으로 설정합니다.

    [user@dev ~]$ chmod +x del_empty_bucket.rb
  22. 파일을 실행합니다.

    [user@dev ~]$ ./del_empty_bucket.rb | echo $?

    버킷이 성공적으로 삭제되면 명령은 0 을 출력으로 반환합니다.

    참고

    create_bucket.rb 파일을 편집하여 빈 버킷(예: my-new-bucket4,my-new-bucket5 )을 생성합니다. 그런 다음 빈 버킷을 삭제하기 전에 위의 del_empty_bucket.rb 파일을 적절하게 편집합니다.

  23. 비어 있지 않은 버킷을 삭제하기 위해 새 파일을 생성합니다.

    [user@dev ~]$ vim del_non_empty_bucket.rb

    다음 내용을 파일에 붙여넣습니다.

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Bucket.delete('my-new-bucket1', :force => true)

    파일을 저장하고 편집기를 종료합니다.

  24. 파일을 실행 가능으로 설정합니다.

    [user@dev ~]$ chmod +x del_non_empty_bucket.rb
  25. 파일을 실행합니다.

    [user@dev ~]$ ./del_non_empty_bucket.rb | echo $?

    버킷이 성공적으로 삭제되면 명령은 0 을 출력으로 반환합니다.

  26. 오브젝트를 삭제하기 위한 새 파일을 생성합니다.

    [user@dev ~]$ vim delete_object.rb

    다음 내용을 파일에 붙여넣습니다.

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::S3Object.delete('hello.txt', 'my-new-bucket1')

    파일을 저장하고 편집기를 종료합니다.

  27. 파일을 실행 가능으로 설정합니다.

    [user@dev ~]$ chmod +x delete_object.rb
  28. 파일을 실행합니다.

    [user@dev ~]$ ./delete_object.rb

    그러면 hello.txt 오브젝트가 삭제됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.