Keywords: How to transfer gs to s3 and from s3 of account a to s3 of account b
Chào các anh em đồng chí, bài viết hôm nay của mình sẻ nói về cloud nhé, với mình hiện tại thì đang đụng chạm với GCP và AWS nên mình sẻ hướng dẫn các bạn qua những vấn đề mình làm, trước đây công ty mình sử dụng GCP nhưng sau một thời gian thì chuyển đổi qua AWS vì vậy việc move dữ liệu data từ nơi này sang nơi khác cũng là điều dễ hiểu mà đúng không
Ok, ở bài viết này chúng ta sẻ có 2 phần đó là di chuyển data từ gs đến s3 và từ s3 của tài khoản aws a đến s3 của tài khoản aws b, mình sẻ thực hiện đi vào vấn đề thứ 1 trướcPhần 1: Di chuyển gs của GCP đến s3 của aws
Trước khi thực hiện được điều này thì các bạn cần làm là gì, tạo một VM của GCP với tốc độ băng thông cao, vì sao phải làm như vậy, vì việc move data từ GCP đến AWS nếu sử dụng mạng cá nhân sẻ rất chậm và đặc biệt với với các data tương đối là lớn sẻ cảm giác rất khó chịu, còn dễ gây ra lỗi nếu nó gặp data lớn thì thằng gsutil sẻ báo lỗi ngay ở giá trị cp hoặc rsync, khi tạo VM ta sẻ tận dụng lợi thế của nó là mạng của Google
Tiếp đến ta cần cài đặt 2 file sau
- gsutil: Install gsutil | Cloud Storage | Google Cloud
- aws-cli: Installing, updating, and uninstalling the AWS CLI version 2 on Linux - AWS Command Line Interface (amazon.com)
Ok sau khi đã cài đặt xong 2 cái trên tại phía VM rồi thì chúng ta thực hiện đăng nhập account cho 2 Cloud GCP và AWS, việc đăng nhập thế nào thì mình sẻ không hướng dẫn thêm ở đây, vì các bạn đã làm những vấn đề này rồi thì mình nghĩ chắc rằng các bạn cũng biết cách đăng nhập, sau khi đã đăng nhập thành công rồi thì chúng ta thực hiện tiếp kiểm tra xem mọi thứ đã hoạt động ok chưa bằng cách chạy 2 lệnh sau mình ví dụ mình có 2 bucket như sau:
- gs://bucket-a
- s3://bucket-b
Example:
gsutil ls gs://bucket-a
gsutil ls s3://bucket-b
Sau khi đã xác nhận rằng nó hoạt động ok rồi và không bị kẹt gì ở 2 tài khoản thì chúng ta thực hiện tiếp việc copy data, nên chú ý về network vì network chậm thì 2 option của gsutil sẻ báo lỗi liền, ở đây ta sẻ có 2 câu lệnh có thể sử dụng cho việc copy data thường thì mọi người chỉ sử dụng là rsync, nhưng cũng tùy người
OPTION:
gsutil -m cp -r "gs://bucket-a/*" s3://bucket-b/
gsutil -m rsync -rd "gs://bucket-a/" "s3://bucket-b/"
Với "-d" trong rsync sẻ là cho phép delete những file trong bucket-b nếu nó không trùng khớp với phía bucket-a, còn -r chỉ là copy các cây thư mục thôi, -m thì là copy nhiều dữ liệu đại loại mình nghĩ là chữ multi haha, không biết đúng không, ok với thằng rsync thì hơi khó chịu 1 chút, nghĩa là phía data quá khổng lồ và có dữ liệu cực lớn, lên đến mấy TB cộng với network kém thì nó sẻ báo lỗi như hình
Mình là mình bực quá nên mình ngắt ngang nó cho rồi, lúc này nên tăng network lên là ok, đó là lý do mình giới thiệu cho các bạn 2 option để gặp trường hợp không dùng được thằng rsync thì cũng có cp mà xài, ok như vậy là xong phần 1 tiếp đến aws nhưng 2 account khác nhau nào, khổ cho bản thân mình là công ty nhiều account cloud quá nên move qua move lại nhức cả đầu haha- Account A: s3://bucket-a
- Account B: s3://bucket-b
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::*" } ] }Tạo plc với những quyền sau, thật ra không cần tạo cũng được bởi lẻ mình đã cho phép nó là FullS3Acess rồi mà, nhưng tại tạo cho giống với hướng dẫn của aws thôi haha, chứ thật ra không cần thiết đâu, mình upload lên đây để các bạn hiểu rằng tệ lắm thì user account của các bạn cũng phải có những quyền này.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789123:user/s3-data-sync" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::site-selection-dev/*" } ] }Tiếp đến kéo xuống dưới tìm đến mục ACL
Với Grantee thì chúng ta quay về account b tìm đến s3 service trong phần ACL s3 account b chúng ta sẻ thấy được Grantee ID chính là Canonical ID
aws s3 ls s3://bucket-a aws s3 ls s3://bucket-bMặc dù đã là 2 tài khoản khác nhau nhưng như bạn thấy đấy tài khoản của phía account b đã tạo có thể xem được giá trị bucket của account b và a, tại sao mình phải làm phức tạp như vậy mà không sử dụng hướng dẫn của aws để move luôn ?
aws s3 cp s3://bucket-a s3://bucket-b --recursive aws s3 sync s3://bucket-a s3://bucket-bOk như các bạn đã thấy thì mình đã hướng dẫn xong cho các bạn cách di chuyển file data từ gs đến s3 và từ s3 đến s3 giữa 2 tài khoản khác nhau, chúc các bạn thành công, đừng quên share bài viết của mình nhé, cảm ơn các bạn nhiều.
0 Comments
Vài lời muốn nói:
* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.
* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.
* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.