2.3.6. Ruby AWS S3를 사용하여 Ceph Object Gateway에 액세스
S3
액세스에 대해 aws-s3
gem과 함께 Ruby 프로그래밍 언어를 사용할 수 있습니다. Ruby AWS::S3
을 사용하여 Ceph Object Gateway 서버에 액세스하는 데 사용되는 노드에서 아래에 언급된 단계를 실행합니다.
사전 요구 사항
- Ceph Object Gateway에 대한 사용자 수준 액세스.
- Ceph Object Gateway에 액세스하는 노드에 대한 루트 수준 액세스입니다.
- 인터넷 액세스.
절차
ruby
패키지를 설치합니다.[root@dev ~]# yum install ruby
참고위의 명령은 ruby를 설치하고
ruby
gemsruby-libs
와 같은 필수 종속 항목을 설치합니다. 임의의 경우 명령은 모든 종속 항목을 설치하지 않는 경우 별도로 설치합니다.aws-s3
Ruby 패키지를 설치합니다.[root@dev ~]# gem install aws-s3
프로젝트 디렉터리를 생성합니다.
[user@dev ~]$ mkdir ruby_aws_s3 [user@dev ~]$ cd ruby_aws_s3
연결 파일을 생성합니다.
[user@dev ~]$ vim conn.rb
다음 내용을
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_KEY
및MY_SECRET_KEY
를 Red 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' )
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능으로 설정합니다.
[user@dev ~]$ chmod +x conn.rb
파일을 실행합니다.
[user@dev ~]$ ./conn.rb | echo $?
파일에 값을 올바르게 제공한 경우 명령의 출력은
0
이 됩니다.버킷을 만들기 위한 새 파일을 만듭니다.
[user@dev ~]$ vim create_bucket.rb
다음 내용을 파일에 붙여넣습니다.
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.create('my-new-bucket1')
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능으로 설정합니다.
[user@dev ~]$ chmod +x create_bucket.rb
파일을 실행합니다.
[user@dev ~]$ ./create_bucket.rb
명령 출력이
true
이면 버킷my-new-bucket1
이 성공적으로 생성되었습니다.소유 버킷을 나열할 새 파일을 만듭니다.
[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
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능으로 설정합니다.
[user@dev ~]$ chmod +x list_owned_buckets.rb
파일을 실행합니다.
[user@dev ~]$ ./list_owned_buckets.rb
출력은 다음과 같아야 합니다.
my-new-bucket1 2020-01-21 10:33:19 UTC
오브젝트를 생성하기 위한 새 파일을 생성합니다.
[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' )
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능으로 설정합니다.
[user@dev ~]$ chmod +x create_object.rb
파일을 실행합니다.
[user@dev ~]$ ./create_object.rb
이렇게 하면
Hello World!!
문자열이 포함된hello.txt
파일이 생성됩니다.버킷의 콘텐츠를 나열할 새 파일을 만듭니다.
[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
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능하게 만듭니다.
[user@dev ~]$ chmod +x list_bucket_content.rb
파일을 실행합니다.
[user@dev ~]$ ./list_bucket_content.rb
출력은 다음과 같이 표시됩니다.
hello.txt 12 Fri, 22 Jan 2020 15:54:52 GMT
빈 버킷을 삭제하기 위해 새 파일을 생성합니다.
[user@dev ~]$ vim del_empty_bucket.rb
다음 내용을 파일에 붙여넣습니다.
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.delete('my-new-bucket1')
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능으로 설정합니다.
[user@dev ~]$ chmod +x del_empty_bucket.rb
파일을 실행합니다.
[user@dev ~]$ ./del_empty_bucket.rb | echo $?
버킷이 성공적으로 삭제되면 명령은
0
을 출력으로 반환합니다.참고create_bucket.rb
파일을 편집하여 빈 버킷(예:my-new-bucket4
,my-new-bucket5
)을 생성합니다. 그런 다음 빈 버킷을 삭제하기 전에 위의del_empty_bucket.rb
파일을 적절하게 편집합니다.비어 있지 않은 버킷을 삭제하기 위해 새 파일을 생성합니다.
[user@dev ~]$ vim del_non_empty_bucket.rb
다음 내용을 파일에 붙여넣습니다.
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.delete('my-new-bucket1', :force => true)
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능으로 설정합니다.
[user@dev ~]$ chmod +x del_non_empty_bucket.rb
파일을 실행합니다.
[user@dev ~]$ ./del_non_empty_bucket.rb | echo $?
버킷이 성공적으로 삭제되면 명령은
0
을 출력으로 반환합니다.오브젝트를 삭제하기 위한 새 파일을 생성합니다.
[user@dev ~]$ vim delete_object.rb
다음 내용을 파일에 붙여넣습니다.
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::S3Object.delete('hello.txt', 'my-new-bucket1')
파일을 저장하고 편집기를 종료합니다.
파일을 실행 가능으로 설정합니다.
[user@dev ~]$ chmod +x delete_object.rb
파일을 실행합니다.
[user@dev ~]$ ./delete_object.rb
그러면
hello.txt
오브젝트가 삭제됩니다.