3.2.6. Ruby AWS SDK를 사용하여 Ceph Object Gateway에 액세스


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

사전 요구 사항

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

프로세스

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

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

    위의 명령은 ruby 및 rubygems 및 ruby-libs 와 같은 필수 종속성을 설치합니다. 명령이 모든 종속 항목을 설치하지 않으면 별도로 설치합니다.

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

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

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

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

    구문

    #!/usr/bin/env ruby
    
    require 'aws-sdk'
    require 'resolv-replace'
    
    Aws.config.update(
            endpoint: 'http://FQDN_OF_GATEWAY_NODE:8080',
            access_key_id: 'MY_ACCESS_KEY',
            secret_access_key: 'MY_SECRET_KEY',
            force_path_style: true,
            region: 'us-east-1'
    )

    FQDN_OF_GATEWAY_NODE 를 Ceph Object Gateway 노드의 FQDN으로 바꿉니다. MY_ACCESS_KEY 및 MY_SECRET_KEY 를 Red Hat Ceph Storage Object Gateway 구성 및 관리 가이드에 언급된 대로 radosgw 사용자를 S3 액세스 권한을 생성할 때 생성된 access_key 및 secret_key 로 바꿉니다.

    예

    #!/usr/bin/env ruby
    
    require 'aws-sdk'
    require 'resolv-replace'
    
    Aws.config.update(
            endpoint: 'http://testclient.englab.pnq.redhat.com:8080',
            access_key_id: '98J4R9P22P5CDL65HKP8',
            secret_access_key: '6C+jcaP0dp0+FZfrRNgyGA9EzRy25pURldwje049',
            force_path_style: true,
            region: 'us-east-1'
    )

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

  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'
    
    s3_client = Aws::S3::Client.new
    s3_client.create_bucket(bucket: 'my-new-bucket2')

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

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

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

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

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

  11. 소유 버킷을 나열할 새 파일을 생성합니다.

    [user@dev ~]$ vim list_owned_buckets.rb

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

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    s3_client = Aws::S3::Client.new
    s3_client.list_buckets.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-bucket2 2020-01-21 10:33:19 UTC
  14. 오브젝트를 생성하기 위한 새 파일을 생성합니다.

    [user@dev ~]$ vim create_object.rb

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

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    s3_client = Aws::S3::Client.new
    s3_client.put_object(
            key: 'hello.txt',
            body: 'Hello World!',
            bucket: 'my-new-bucket2',
            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'
    
    s3_client = Aws::S3::Client.new
    s3_client.list_objects(bucket: 'my-new-bucket2').contents.each do |object|
            puts "{object.key}\t{object.size}"
    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'
    
    s3_client = Aws::S3::Client.new
    s3_client.delete_bucket(bucket: 'my-new-bucket2')

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

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

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

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

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

    참고

    create_bucket.rb 파일을 편집하여 빈 버킷을 생성합니다(예: my-new-bucket6,my-new-bucket7 ). 다음으로 빈 버킷을 삭제하기 전에 위에서 언급한 del_empty_bucket.rb 파일을 적절하게 편집합니다.

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

    [user@dev ~]$ vim del_non_empty_bucket.rb

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

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    s3_client = Aws::S3::Client.new
    Aws::S3::Bucket.new('my-new-bucket2', client: s3_client).clear!
    s3_client.delete_bucket(bucket: 'my-new-bucket2')

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

  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'
    
    s3_client = Aws::S3::Client.new
    s3_client.delete_object(key: 'hello.txt', bucket: 'my-new-bucket2')

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

  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 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동