সম্পূর্ণ এস 3 বালতির জন্য স্বয়ংক্রিয়ভাবে ক্যাশে-নিয়ন্ত্রণ সেট করুন (বালতি নীতি ব্যবহার করে?)


123

আমার একটি সম্পূর্ণ এস 3 বালতি, বিদ্যমান এবং ভবিষ্যতের উভয় ফাইলের জন্য ক্যাশে-নিয়ন্ত্রণ শিরোনাম সেট করা দরকার এবং এটি বালতি নীতিতে করার আশা করছিলাম। আমি জানি যে আমি বিদ্যমানগুলি সম্পাদনা করতে পারি এবং আমি নিজে এগুলি আপলোড করি তবে কীভাবে সেগুলিতে নির্দিষ্ট করা যায় তা আমি জানি তবে দুর্ভাগ্যক্রমে যে অ্যাপগুলি সেগুলি আপলোড করে সেগুলি ফাইলগুলি অনুলিপি করতে s3fs ব্যবহার করে শিরোনাম সেট করতে পারে না।

উত্তর:


208

: এখন 3 টি উপায় এই কাজ করতে হয় ডেস্কটপ AWS কনসোল মাধ্যমে , কম্যান্ড লাইনের মাধ্যমে , অথবা s3cmd কমান্ড লাইন টুল মাধ্যমে


এডাব্লুএস কনসোল নির্দেশাবলী

এটি এখন প্রস্তাবিত সমাধান। এটি সরাসরি এগিয়ে থাকলেও এতে কিছুটা সময় লাগতে পারে।

  • এডাব্লুএস ম্যানেজমেন্ট কনসোলে লগ ইন করুন
  • এস 3 বালতি যান
  • রুট দ্বারা সমস্ত ফাইল নির্বাচন করুন
  • মেনু থেকে "আরও" চয়ন করুন
  • "মেটাডেটা পরিবর্তন করুন" নির্বাচন করুন
  • "কী" ক্ষেত্রে, মানের জন্য ড্রপ ডাউন মেনু থেকে সর্বোচ্চ বয়স = 604800Enter (7 দিন) থেকে "ক্যাশে-নিয়ন্ত্রণ" নির্বাচন করুন
  • "সংরক্ষণ করুন" বোতাম টিপুন

( @ বিপ্লবকে ধন্যবাদ - দয়া করে তাকে নীচে কিছুটা ভালবাসা দিন )


এডাব্লুএস কমান্ড লাইন সমাধান

মূলত, যখন আমি এই বালতিটি তৈরি করেছি তখন নীতিগুলি ছিলো না, সুতরাং আমি বুঝতে পেরেছিলাম যে কীভাবে এটিস-ক্লিপ ব্যবহার করে করবেন এবং এটি বেশ চটুল। গবেষণা করার সময় আমি বন্যের কোনও উদাহরণ খুঁজে পেলাম না, তাই আমি ভেবেছিলাম অভাবীদের সাহায্য করার জন্য আমার কিছু সমাধান পোস্ট করব।

দ্রষ্টব্য: ডিফল্টরূপে, অ্যাউস-ক্লিমে কেবল কোনও ফাইলের বর্তমান মেটাডেটা অনুলিপি করা হয়, যদি আপনি নতুন মেটাডেটা নির্ধারণ করেন।

কমান্ড লাইনে নির্দিষ্ট করা মেটাডেটা ব্যবহার করতে আপনাকে '--metadata-ডিরেক্টর রিপ্লেস' পতাকাটি যুক্ত করতে হবে। এখানে কয়েকটি উদাহরণ দেওয়া হল।

একক ফাইলের জন্য

aws s3 cp s3://mybucket/file.txt s3://mybucket/file.txt --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public

পুরো বালতিটির জন্য (নোট - রিসার্সিভ পতাকা):

aws s3 cp s3://mybucket/ s3://mybucket/ --recursive --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public

আমি খুঁজে পেয়েছি একটি সামান্য গোছা, আপনি যদি কেবলমাত্র এটি নির্দিষ্ট ফাইলের ধরণের ক্ষেত্রে প্রয়োগ করতে চান তবে আপনাকে সমস্ত ফাইলগুলি বাদ দিতে হবে, তারপরে আপনার যা চান তা অন্তর্ভুক্ত করুন।

কেবল jpgs এবং pngs:

aws s3 cp s3://mybucket/ s3://mybucket/ --exclude "*" --include "*.jpg" --include "*.png" \
--recursive --metadata-directive REPLACE --expires 2034-01-01T00:00:00Z --acl public-read \
--cache-control max-age=2592000,public

আপনার যদি আরও তথ্যের প্রয়োজন হয় তবে ম্যানুয়ালটিতে কয়েকটি লিঙ্ক রয়েছে:

জ্ঞাত সমস্যা:

"Unknown options: --metadata-directive, REPLACE"

এটি পুরানো অজস্ক্লির কারণে ঘটতে পারে - নীচে @ ইলিয়টরোজওয়াটারের উত্তর দেখুন


এস 3 সিএমডি সরঞ্জাম

এস 3 সিএমডি হ'ল অ্যামাজন এস 3 এবং ক্লাউডফ্রন্ট পরিষেবাদি পরিচালনার জন্য কমান্ড লাইন সরঞ্জাম "। যদিও এই সমাধানটির জন্য গিট টান দরকার এটি এটি একটি সহজ এবং আরও ব্যাপক সমাধান হতে পারে।

সম্পূর্ণ নির্দেশাবলীর জন্য, নীচে @ ashshyadaveee11 এর পোস্টটি দেখুন


আশা করি এটা সাহায্য করবে!


6
ঠিক কী করতে হবে তার প্রকৃত উদাহরণের জন্য ধন্যবাদ। কেবলমাত্র ডক্সটি পড়ে কী কী সম্ভব তা আবিষ্কার করতে আমার সমস্যা হয়েছিল।
ডানেউ

2
আমি উপরের যে কোনও কমান্ড চালাচ্ছি যখন আমি "অজানা বিকল্পগুলি: --মেডাটা-নির্দেশিকা, প্রতিস্থাপন" পাচ্ছি lease দয়া করে আমাকে সহায়তা করুন।
ব্যবহারকারী 3722785

1
দ্রষ্টব্য, এখানে এখন একটি সহজ উপায়। আপনি এখন AWS কনসোলের মাধ্যমে বালতিতে সমস্ত ফাইলের মেটা ডেটা পরিবর্তন করতে পারবেন। : নীচের CoderBoy এর উত্তর দেখুন stackoverflow.com/a/47072736/2538952
মার্টিন Tschammer

1
নোট করুন যে --meta- ডিরেক্টরি REPLACE ব্যবহার করে পূর্ববর্তী কোনও মেটাডেটা ওভাররাইট হবে যা কমান্ডে অনুলিপি করা হয়নি! উদাহরণস্বরূপ, সিপি কমান্ডে স্পষ্টভাবে যুক্ত না করা হলে "সামগ্রী-এনকোডিং জিজিপ" সরানো হবে।
হারমেন জানসেন

1
কি cpডাউনলোড এবং পুনরায় আপলোড সবকিছু?
mlissner

37

এখন, এটি এডাব্লুএস কনসোল থেকে সহজেই পরিবর্তন করতে পারে।

  • এডাব্লুএস ম্যানেজমেন্ট কনসোলে লগ ইন করুন
  • এস 3 বালতি যান
  • রুট দ্বারা সমস্ত ফাইল নির্বাচন করুন
  • মেনু থেকে "আরও" চয়ন করুন
  • "মেটাডেটা পরিবর্তন করুন" নির্বাচন করুন
  • "কী" ক্ষেত্রে, ড্রপ ডাউন মেনু থেকে "ক্যাশে-নিয়ন্ত্রণ" নির্বাচন করুন
  • মানের জন্য সর্বাধিক বয়স = 604800Enter (7 দিন)
  • "সংরক্ষণ করুন" বোতাম টিপুন

এটি কার্যকর করতে সময় লাগে আপনার বালতি ফাইলের উপর নির্ভর করে। আপনি যদি দুর্ঘটনাক্রমে ব্রাউজারটি বন্ধ করেন তবে শুরু থেকে পুনরায় করুন।


6
"রুট দ্বারা সমস্ত ফাইল নির্বাচন করুন" এর অর্থ কী?
তমজিন ব্লেক

1
আপনি যে মেটা সেট করতে চান সেই ডিরেক্টরি থেকে সমস্ত / কিছু ফাইল নির্বাচন করুন
বাইপ্লোব

দেরিতে জবাবের জন্য দুঃখিত। না, তা হয় না। আপনার অ্যাপ্লিকেশন থেকে এটি সেট করা উচিত।
বিপ্লব

এটি কি পূর্ববর্তী মেটাডেটা প্রতিস্থাপন করে বা এতে যুক্ত করে? (আমি আমার সমস্ত সামগ্রীর ধরণ হারাতে চাই না!)
ক্রিস

আমি কেবল নিশ্চিত করেছি যে এটি বিদ্যমান মানগুলি সরিয়ে দেয় না। কেবলমাত্র আপনার নির্দিষ্ট করা কীগুলি সেট করুন (কী থাকলে এটি ওভাররাইটিং কী বিদ্যমান)
রাইনপ

21

ধাপ

  1. git clone https://github.com/s3tools/s3cmd
  2. চালান s3cmd --configure (আপনাকে দুটি কী জিজ্ঞাসা করা হবে - আপনার নিশ্চিতকরণ ইমেল থেকে বা আপনার অ্যামাজন অ্যাকাউন্ট পৃষ্ঠা থেকে এগুলি অনুলিপি করুন এবং পেস্ট করুন। এগুলি অনুলিপি করার সময় সতর্ক হন! এগুলি সংবেদনশীল এবং অবশ্যই সঠিকভাবে প্রবেশ করাতে হবে বা আপনি অবৈধ সম্পর্কে ত্রুটি পেতে থাকবেন স্বাক্ষর বা অনুরূপ s3:ListAllMyBucketsthe কীগুলিতে অনুমতি যুক্ত করতে ভুলবেন না বা AccessDeniedঅ্যাক্সেস পরীক্ষা করার সময় আপনি একটি ত্রুটি পাবেন ))
  3. ./s3cmd --recursive modify --add-header="Cache-Control:public ,max-age= 31536000" s3://your_bucket_name/

সুপার উত্তর। ধন্যবাদ! যাদের কেবল ইতিমধ্যে এই শিরোনাম সেটিংস নেই তাদের কেবলমাত্র আপডেট করার কোনও উপায় আছে?
পি কেহান্টার

উইন্ডোজের এস 3 এক্সপ্রেসের সাথে কারওর জন্য একই ধরণের সমাধান রয়েছে?
জো

12

এটিই যে আমার খ্যাতি স্কোর 50> ছিল, আমি কেবল মন্তব্য করব। তবে এটি (এখনও) নয় তাই এখানে আরও একটি সম্পূর্ণ উত্তর।


আমি কিছুক্ষণের জন্য এই সমস্যায় মাথা ঠাটিয়ে যাচ্ছি। যতক্ষণ না আমি দস্তাবেজগুলি খুঁজে পেয়েছি এবং পড়েছি। এটি অন্য কারওকে সহায়তা করার ক্ষেত্রে এখানে ভাগ করে নেওয়া:

আমার জন্য যা নির্ভরযোগ্যভাবে কাজ করেছিল তা হ'ল এই আদেশ। প্রত্যাশিত ফলাফল যাচাই করতে পরীক্ষার জন্য আমি 1 সেকেন্ডের মেয়াদোত্তীর্ণ সময়টি বেছে নিয়েছি:

aws s3 cp \
  --metadata-directive REPLACE \
  --cache-control max-age=1,s-maxage=1 \
  s3://bucket/path/file \
  s3://bucket/path/file
  • --metadata-directive REPLACEcpএস 3-তে বিদ্যমান ফাইলে মেটাডেটা পরিবর্তন করার সময় " " প্রয়োজনীয় হয়
  • max-age সেকেন্ডে ব্রাউজারের ক্যাচিং বয়স নির্ধারণ করে
  • s-maxage সেকেন্ডে ক্লাউডফ্রন্টের ক্যাচিং সেট করে

তেমনি, এস 3 এ আপলোড করার সময় যদি কোনও ফাইলগুলিতে এই ক্যাশে-নিয়ন্ত্রণ শিরোনামের মানগুলি সেট করা থাকে, কমান্ডটি দেখতে পাবেন:

aws s3 cp \
  --cache-control max-age=1,s-maxage=1 \
  /local/path/file \
  s3://bucket/path/file

8

আমি মনে করি না আপনি এটি বালতি স্তরে নির্দিষ্ট করতে পারবেন তবে আপনার জন্য কয়েকটি কার্যক্রম রয়েছে।

  1. cache-controlঅনুলিপিটি অপারেশনের জন্য উপযুক্ত শিরোনাম সেট করে S3 এ নিজেই অনুলিপি করুন।

  2. ফাইলগুলিতে url এ প্রতিক্রিয়া শিরোনাম নির্দিষ্ট করুন । এটি কাজ করার জন্য আপনাকে প্রাক-স্বাক্ষরিত ইউআরএলগুলি ব্যবহার করতে হবে তবে আপনি কোয়েরিস্ট্রিংয়ে cache-controlএবং সহ নির্দিষ্ট প্রতিক্রিয়া শিরোনাম নির্দিষ্ট করতে পারেন expires। উপলব্ধ অপশন একটি পূর্ণ তালিকার জন্য দেখুন: http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html?r=5225


ধন্যবাদ জিফ, আমি (1) সম্পর্কে জানতাম তবে (2) না। আমি যা আশা করেছিলাম তা নয় (যদিও আমি আশঙ্কা করি এটি সম্ভব নয়)
থমমহিল

কীভাবে # 1 করবেন তার জন্য আপনার কাছে কী একটি উদাহরণ আছে ডাব্লুএসএস সিএলআই কমান্ড? docs.aws.amazon.com/cli/latest/references/s3/cp.html
dpegasusm

3

আপনি সর্বদা এস 3-এ পুটবজেইসিটি-তে একটি ট্রিগার সহ একটি ল্যাম্বদা কনফিগার করতে পারেন, ল্যাম্বদা কেবলমাত্র এই নির্দিষ্ট অবজেক্টটির শিরোনাম পরিবর্তন করবে যা সবেমাত্র রাখা হয়েছিল।

তারপরে আপনি একবারের উপরে উল্লিখিত অনুলিপি কমান্ডটি চালাতে পারবেন, এবং নতুন সমস্ত বস্তু ল্যাম্বডা দ্বারা স্থির করা হবে।

হালনাগাদ:

এখানে থেকে শুরু করার জন্য একটি ভাল জায়গা: https://www.aaronfagan.ca/blog/2017/how-to-configure-aws-lambda-to-automatic-set-cache-control-headers-on-s3-objects /


এই লাম্বা কীভাবে তৈরি করবেন সে সম্পর্কে আপনি আরও কিছু বিশদ সরবরাহ করতে পারেন? দুর্দান্ত সমাধানের মতো শোনাচ্ছে।
ওয়াউটার

1
@ অজস্র নিশ্চিত, আমি আপনাকে একটি লিঙ্ক পেয়েছি যা আসলে আপনাকে সহজেই সেখানে পৌঁছে দিতে সহায়তা করতে পারে, অ্যারোনফাগান.সিএ / ব্লগ / ২০১//২ আপনার যদি কোনও সহায়তা বা সহায়তার প্রয়োজন হয় তবে আমি সাহায্য করে খুশি হতে পারি।
ইব্রাহিম বাউ এনকৌলা

আমি জানি এটি পুরানো তবে আমি যা খুঁজছিলাম তার জন্য এই উত্সটি দরকারী বলে মনে করি। এই জন্য আপনাকে ধন্যবাদ. আমার বন্ধু তোমার জন্য উজ্জীবিত!
castaway2000

1

যারা ড্যানের উত্তরটি ব্যবহার করার চেষ্টা করছেন এবং ত্রুটিটি পেয়েছেন তাদের কাছে:

"অজানা বিকল্প: --মেডাটা-নির্দেশিকা, প্রতিস্থাপন"

আমি ইস্যুটিতে দৌড়েছি, এবং সমস্যাটি হ'ল আমি ব্যবহার করে অ্যাডস্ক্লি ইনস্টল করেছি

sudo অ্যাপ্লিকেশন ইনস্টল করুন এসএসসি

এটি awscli এর একটি পুরানো সংস্করণ ইনস্টল করেছে যা --metadata-ডিরেক্টরি কমান্ড অনুপস্থিত। সুতরাং আমি এটি অপসারণ করতে sudo এপটি-গেট রিমুভ এসএসসি্লি ব্যবহার করেছি।

তারপর আমাজন থেকে পদ্ধতি নিম্নলিখিত পুনরায়: http://docs.aws.amazon.com/streams/latest/dev/kinesis-tutorial-cli-installation.html

পার্থক্যটি হ'ল আমাকে অনুমোদনের কারণে সুডো-এইচ ব্যবহার করতে হয়েছিল যা অন্যরাও চালাতে পারে।

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