বাসে স্টডআউট করার জন্য ফাইলগুলি ডাম্প করতে কীভাবে AWS S3 CLI ব্যবহার করবেন?


94

আমি একটি বাশ স্ক্রিপ্ট শুরু করছি যা এস 3-তে একটি পথ নেবে ( ls কমান্ডের জন্য নির্দিষ্ট হিসাবে ) এবং ফাইলের সমস্ত বস্তুর সামগ্রীতে ডাম্প করবে stdout। মূলত আমি cat /path/to/files/*এস 3 বাদে অনুলিপি করতে চাই , যেমন s3cat '/bucket/path/to/files/*'। অপশনগুলির দিকে নজর দেওয়া আমার প্রথম প্রবণতা হ'ল cpঅস্থায়ী ফাইলের কমান্ডটি ব্যবহার করা এবং তারপরে cat

কেউ কি এটির অনুরূপ চেষ্টা করেছে বা ইতিমধ্যে কোনও আদেশ রয়েছে যা আমি খুঁজে পাচ্ছি না যা এটি করে?


আমি একই জিনিস করতে পিএইচপি এবং পরিষেবাদি_আজমাজন_এস 3 শ্রেণি ব্যবহার করি।
4:38

উত্তর:


155

stdout এ সমস্ত ফাইলের সামগ্রীর বিষয়বস্তু ফেলে দিন।

আপনি যদি কমান্ডের -গন্তব্যের জন্য পাস করেন তবে আপনি এটি সম্পাদন করতে পারেন aws s3 cp। উদাহরণস্বরূপ $ aws s3 cp s3://mybucket/stream.txt -,।

আপনি যা করার চেষ্টা করছেন তা কি এরকম কিছু? ::

#!/bin/bash

BUCKET=YOUR-BUCKET-NAME
for key in `aws s3api list-objects --bucket $BUCKET --prefix bucket/path/to/files/ | jq -r '.Contents[].Key'`
do
  echo $key
  aws s3 cp s3://$BUCKET/$key - | md5sum
done

4
তবে খেয়াল করুন যে স্ট্যান্ডআউটের জন্য স্থানধারক হিসাবে '-' অ্যাডক্লিসির সমস্ত সংস্করণে কাজ করে না। উদাহরণস্বরূপ, ওবুন্টু এলটিএস 14.04.2 সহ আসা 1.2.9 সংস্করণ এটি সমর্থন করে না।
অ্যান্টনিওব

এই যে। আমি উবুন্টু 12.x এ আছি, এবং এটি আমার বাশের উদাহরণে কাজ করে না।
কোড চার্লি

এটির সাথে সমস্যা হ'ল আপনি ফাইলটির একটি নির্দিষ্ট সংস্করণ পেতে পারেন না।
ইমোরার

MacOS উচ্চ সিয়েরা 10.13.6 কাজ পারেন না ( aws --version: aws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40)
MichaelChirico

এই উত্তরের এই সুবিধাটিও রয়েছে যে ফাইল সামগ্রী আপনার টার্মিনালে প্রবাহিত হবে এবং সামগ্রিকভাবে অনুলিপি করা হবে না। loige.co/aws-command-line-s3-content-from-stdin-or-to-stdout/…-
খোয়া

50

আপনি যদি AWS CLI এর এমন কোনও সংস্করণ ব্যবহার করছেন যা "-" অনুলিপি সমর্থন করে না আপনি / dev / stdout ব্যবহার করতে পারেন:

$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout

আপনি --quietনীচের মতো একটি সারসংক্ষেপ রেখাটিকে আপনার আউটপুটে সংযোজন থেকে আটকাতে পতাকাটিও পেতে চাইতে পারেন :

ডাউনলোড: s3: //mybucket/stream.txt থেকে ../../dev/stdout


3

আপনি s3streamcat ব্যবহার করে দেখতে পারেন , এটি bzip, gzip এবং xz ফর্ম্যাটগুলিকেও সমর্থন করে।

সাথে ইনস্টল করুন

sudo pip install s3streamcat

ব্যবহার:

s3streamcat s3://bucketname/dir/file_path
s3streamcat s3://bucketname/dir/file_path | more
s3streamcat s3://bucketname/dir/file_path | grep something


-3

আপনি যদি BASH ব্যবহার করে এটি সম্পাদন করতে চান তবে আপনাকে বাহ্যিক অ্যাপ্লিকেশন যেমন AWS কমান্ড-লাইন ইন্টারফেসের (সিএলআই) কল করতে হবে। এটিতে একটি ক্যাটের সমতুল্য নেই, সুতরাং আপনার স্থানীয়ভাবে ফাইলটি অনুলিপি করতে হবে এবং তারপরে এটি ক্যাট করতে হবে।

বিকল্পভাবে, আপনি এমন একটি অ্যাপ্লিকেশন ব্যবহার করতে / লিখতে পারেন যা AWS SDK কে সরাসরি কল করে, যা পাইথন, পিএইচপি, জাভা প্রভৃতি ভাষার জন্য উপলভ্য। এসডিকে ব্যবহার করে ফাইলের সামগ্রীগুলি মেমোরিতে পুনরুদ্ধার করা যায় এবং তারপরে স্টডআউটে প্রেরণ করা যায়।


উপরের উত্তরগুলি তালিকাবদ্ধ করে যে আপনি 'সিপি' কে '-' দিয়ে ২ য় ফাইল আর্গুমেন্ট হিসাবে এটি আউটপুট থেকে স্টডআউটে পরিণত করতে পারেন।
আসফন্দ কাজী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.