বোটো 3 এস 3 এর সাথে সংযোগ করার সময় শংসাপত্রগুলি কীভাবে নির্দিষ্ট করবেন?


105

এস-তে সংযোগ করার সময় বোটোতে আমি আমার শংসাপত্রগুলি উল্লেখ করতাম:

import boto
from boto.s3.connection import Key, S3Connection
S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY )

তারপরে আমি আমার ক্রিয়াকলাপ সম্পাদন করতে S3 ব্যবহার করতে পারি (আমার ক্ষেত্রে কোনও বালতি থেকে কোনও বস্তু মুছে ফেলা হয়)।

বোটো 3 সহ আমি যে সমস্ত উদাহরণ পেয়েছি তা হ'ল:

import boto3
S3 = boto3.resource( 's3' )
S3.Object( bucket_name, key_name ).delete()

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

বোটো 3 এর সাথে আমি শংসাপত্রগুলি কীভাবে নির্দিষ্ট করতে পারি?


এই উত্তরটি আপনাকে সাহায্য করতে পারে stackoverflow.com/a/36913771/2681632
Ilja Everilä

4
অফিসিয়াল ডকুমেন্টেশনে "শংসাপত্রগুলির কনফিগারেশন" বিভাগটি দেখুন: boto3.readthedocs.io/en/latest/guide/configration.html
মার্ক

উত্তর:


162

আপনি একটি সেশন তৈরি করতে পারেন :

import boto3
session = boto3.Session(
    aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
    aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
)

তারপরে একটি এস 3 সংস্থান পেতে সেই সেশনটি ব্যবহার করুন:

s3 = session.resource('s3')

24
কাজ করে, আমি উত্তর হিসাবে এটি গ্রহণ করব। কেন পৃথিবীতে তারা এটিকে করার সুস্পষ্ট উপায় হিসাবে এটি নথিভুক্ত করে না? !!
রবার্ট ব্র্যাক্স

4
উপরোক্ত আলোচনা একটি মন্তব্যে উল্লেখ, এই হল মধ্যে আসলে ডকুমেন্টেশন
মোট করুন

70

আপনি clientনীচের মত সরাসরি নতুন সেশন সহ একটি পেতে পারেন ।

 s3_client = boto3.client('s3', 
                      aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, 
                      aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, 
                      region_name=REGION_NAME
                      )

9
এটি একটি এস 3 ক্লায়েন্ট পাওয়ার জন্য কাজ করে তবে ওপি পরিবর্তে একটি এস 3 সংস্থান চেয়েছিল ।
আলাসডায়ার

আমি @ আলাসডায়ারের সাথে একমত দস্তাবেজগুলি ক্লায়েন্টের সাথে কীভাবে কিছু করতে পারে তা দেখায় না এবং আপনিও করেন না, সুতরাং উত্তরটি কীভাবে প্রাসঙ্গিক তা আমি দেখতে পাই না।
সেরিন

আমি এটি চেষ্টা করেছিলাম কিন্তু এটি আমাকে "শংসাপত্রগুলি সনাক্ত করতে অক্ষম" ত্রুটি দেয়..আমি এর আগে পরীক্ষা করার জন্য previously / .aws ফোল্ডারটি সরিয়ে দিয়েছিলাম কারণ আমি জানি যে
বोटो

6

এটি পুরানো তবে এটি আমার রেফারেন্সের জন্য এখানে রাখছে। boto3.resource কেবলমাত্র ডিফল্ট সেশনটি প্রয়োগ করছে, আপনি boto3.resource সেশনের বিশদটি দিয়ে যেতে পারেন।

Help on function resource in module boto3:

resource(*args, **kwargs)
    Create a resource service client by name using the default session.

    See :py:meth:`boto3.session.Session.resource`.

https://github.com/boto/boto3/blob/86392b5ca26da57ce6a776365a52d3cab8487d60/boto3/session.py#L265

আপনি দেখতে পাচ্ছেন যে এটি কেবল বোটো 3.সেশন হিসাবে একই আর্গুমেন্ট গ্রহণ করে

import boto3
S3 = boto3.resource('s3', region_name='us-west-2', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY)
S3.Object( bucket_name, key_name ).delete()

5

আমি @ জাস্টাগ্যুর উত্তরটি প্রসারিত করতে চাই। যে পদ্ধতিটি আমি পছন্দ করি তা হ'ল AWS CLIএকটি কনফিগার ফাইল তৈরি করা। কারণটি হ'ল, কনফিগার ফাইল সহ, CLIবা SDKস্বয়ংক্রিয়ভাবে ~/.awsফোল্ডারে শংসাপত্রগুলির সন্ধান করবে । এবং ভাল জিনিসটি AWS CLIপাই অজগরে লেখা।

আপনি যদি পাইপই না পেয়ে থাকেন তবে তা ক্লিপ পেতে পারেন। টার্মিনাল থেকে ক্লাইপ সেট আপ করার পদক্ষেপগুলি এখানে

$> pip install awscli  #can add user flag 
$> aws configure
AWS Access Key ID [****************ABCD]:[enter your key here]
AWS Secret Access Key [****************xyz]:[enter your secret key here]
Default region name [us-west-2]:[enter your region here]
Default output format [None]:

এর পরে আপনি botoকীগুলি নির্দিষ্ট না করেই এবং এপিআইর যে কোনওটিকে অ্যাক্সেস করতে পারবেন (যদি না আপনি আলাদা শংসাপত্র ব্যবহার করতে চান)।


1

বোটো 3.সোর্স () ব্যবহার করার সময় শংসাপত্রগুলি সঞ্চয় করার জন্য অনেকগুলি উপায় রয়েছে। আমি নিজেই ডাব্লুএসএস সিএলআই পদ্ধতি ব্যবহার করছি। এটি পুরোপুরি কাজ করে।

https://boto3.amazonaws.com/v1/docamentation/api/latest/guide/configration.html?fbclid=IwAR2LlrS4O2gYH6xAF4QDVIH2Q2tzfF_VZ6loM3XfXsPAOR4qA-pX_qAIL

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